mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 14:43:16 +00:00
484468fb0f
The DT of_device.h and of_platform.h date back to the separate of_platform_bus_type before it as merged into the regular platform bus. As part of that merge prepping Arm DT support 13 years ago, they "temporarily" include each other. They also include platform_device.h and of.h. As a result, there's a pretty much random mix of those include files used throughout the tree. In order to detangle these headers and replace the implicit includes with struct declarations, users need to explicitly include the correct includes. Acked-by: Herve Codina <herve.codina@bootlin.com> Signed-off-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20230718143027.1064731-1-robh@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
57 lines
1.5 KiB
C
57 lines
1.5 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Renesas USB driver RZ/A initialization and power control
|
|
*
|
|
* Copyright (C) 2018 Chris Brandt
|
|
* Copyright (C) 2018-2019 Renesas Electronics Corporation
|
|
*/
|
|
|
|
#include <linux/delay.h>
|
|
#include <linux/io.h>
|
|
#include <linux/of.h>
|
|
#include "common.h"
|
|
#include "rza.h"
|
|
|
|
static int usbhs_rza1_hardware_init(struct platform_device *pdev)
|
|
{
|
|
struct usbhs_priv *priv = usbhs_pdev_to_priv(pdev);
|
|
struct device_node *usb_x1_clk, *extal_clk;
|
|
u32 freq_usb = 0, freq_extal = 0;
|
|
|
|
/* Input Clock Selection (NOTE: ch0 controls both ch0 and ch1) */
|
|
usb_x1_clk = of_find_node_by_name(NULL, "usb_x1");
|
|
extal_clk = of_find_node_by_name(NULL, "extal");
|
|
of_property_read_u32(usb_x1_clk, "clock-frequency", &freq_usb);
|
|
of_property_read_u32(extal_clk, "clock-frequency", &freq_extal);
|
|
|
|
of_node_put(usb_x1_clk);
|
|
of_node_put(extal_clk);
|
|
|
|
if (freq_usb == 0) {
|
|
if (freq_extal == 12000000) {
|
|
/* Select 12MHz XTAL */
|
|
usbhs_bset(priv, SYSCFG, UCKSEL, UCKSEL);
|
|
} else {
|
|
dev_err(usbhs_priv_to_dev(priv), "A 48MHz USB clock or 12MHz main clock is required.\n");
|
|
return -EIO;
|
|
}
|
|
}
|
|
|
|
/* Enable USB PLL (NOTE: ch0 controls both ch0 and ch1) */
|
|
usbhs_bset(priv, SYSCFG, UPLLE, UPLLE);
|
|
usleep_range(1000, 2000);
|
|
usbhs_bset(priv, SUSPMODE, SUSPM, SUSPM);
|
|
|
|
return 0;
|
|
}
|
|
|
|
const struct renesas_usbhs_platform_info usbhs_rza1_plat_info = {
|
|
.platform_callback = {
|
|
.hardware_init = usbhs_rza1_hardware_init,
|
|
.get_id = usbhs_get_id_as_gadget,
|
|
},
|
|
.driver_param = {
|
|
.has_new_pipe_configs = 1,
|
|
},
|
|
};
|