Re: [PATCH v3] ARM: Exynos5250: Enabling dwc3-exynos driver
CC: Doug Anderson On Thu, Dec 13, 2012 at 10:17 PM, Vivek Gautam gautam.vi...@samsung.com wrote: Adding DWC3 device tree node for Exynos5250 along with the device address and clock support needed for the controller. Signed-off-by: Vivek Gautam gautam.vi...@samsung.com --- Changes from v2: - Changed the compatible string to chip specific(samsung,exynos5250), since dwc3-exynos is being used from exynso5250 onwards. - Based on changes for USB 2.0: https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-December/024413.html Changes from v1: - Changed the device node name from 'dwc3' to 'usb@1200'. - Added the documentation for device tree bindings for dwc3 controller. .../devicetree/bindings/usb/exynos-usb.txt | 14 +++ arch/arm/boot/dts/exynos5250.dtsi |6 + arch/arm/mach-exynos/Kconfig |1 + arch/arm/mach-exynos/clock-exynos5.c | 24 arch/arm/mach-exynos/include/mach/map.h|1 + arch/arm/mach-exynos/mach-exynos5-dt.c |2 + 6 files changed, 48 insertions(+), 0 deletions(-) diff --git a/Documentation/devicetree/bindings/usb/exynos-usb.txt b/Documentation/devicetree/bindings/usb/exynos-usb.txt index f66fcdd..d660410 100644 --- a/Documentation/devicetree/bindings/usb/exynos-usb.txt +++ b/Documentation/devicetree/bindings/usb/exynos-usb.txt @@ -38,3 +38,17 @@ Example: reg = 0x1212 0x100; interrupts = 0 71 0; }; + +DWC3 +Required properties: + - compatible: should be samsung,exynos5250-dwc3 for USB 3.0 DWC3 controller. + - reg: physical base address of the controller and length of memory mapped + region. + - interrupts: interrupt number to the cpu. + +Example: + usb@1200 { + compatible = samsung,exynos5250-dwc3; + reg = 0x1200 0x1; + interrupts = 0 72 0; + }; diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 75510d1..001a31b 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi @@ -299,6 +299,12 @@ rx-dma-channel = pdma0 11; /* preliminary */ }; + usb@1200 { + compatible = samsung,exynos5250-dwc3; + reg = 0x1200 0x1; + interrupts = 0 72 0; + }; + usb@1211 { compatible = samsung,exynos4210-ehci; reg = 0x1211 0x100; diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 91d5b6f..09f9587 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig @@ -426,6 +426,7 @@ config MACH_EXYNOS5_DT depends on ARCH_EXYNOS5 select ARM_AMBA select USE_OF + select USB_ARCH_HAS_XHCI help Machine support for Samsung EXYNOS5 machine with device tree enabled. Select this if a fdt blob is available for the EXYNOS5 SoC based board. diff --git a/arch/arm/mach-exynos/clock-exynos5.c b/arch/arm/mach-exynos/clock-exynos5.c index 5c63bc7..f2214a0 100644 --- a/arch/arm/mach-exynos/clock-exynos5.c +++ b/arch/arm/mach-exynos/clock-exynos5.c @@ -768,6 +768,11 @@ static struct clk exynos5_init_clocks_off[] = { .enable = exynos5_clk_ip_fsys_ctrl , .ctrlbit= (1 18), }, { + .name = usbdrd30, + .parent = exynos5_clk_aclk_200.clk, + .enable = exynos5_clk_ip_fsys_ctrl, + .ctrlbit= (1 19), + }, { .name = usbotg, .enable = exynos5_clk_ip_fsys_ctrl, .ctrlbit= (1 7), @@ -1121,6 +1126,16 @@ static struct clksrc_sources exynos5_clkset_group = { .nr_sources = ARRAY_SIZE(exynos5_clkset_group_list), }; +struct clk *exynos5_clkset_usbdrd30_list[] = { + [0] = exynos5_clk_mout_mpll.clk, + [1] = exynos5_clk_mout_cpll.clk, +}; + +struct clksrc_sources exynos5_clkset_usbdrd30 = { + .sources= exynos5_clkset_usbdrd30_list, + .nr_sources = ARRAY_SIZE(exynos5_clkset_usbdrd30_list), +}; + /* Possible clock sources for aclk_266_gscl_sub Mux */ static struct clk *clk_src_gscl_266_list[] = { [0] = clk_ext_xtal_mux, @@ -1415,6 +1430,15 @@ static struct clksrc_clk exynos5_clksrcs[] = { .parent = exynos5_clk_mout_cpll.clk, }, .reg_div = { .reg = EXYNOS5_CLKDIV_GEN, .shift = 4, .size = 3 }, + }, { + .clk= { + .name = sclk_usbdrd30, + .enable = exynos5_clksrc_mask_fsys_ctrl, + .ctrlbit= (1 28), + }, +
[PATCH v3] ARM: Exynos5250: Enabling dwc3-exynos driver
Adding DWC3 device tree node for Exynos5250 along with the device address and clock support needed for the controller. Signed-off-by: Vivek Gautam gautam.vi...@samsung.com --- Changes from v2: - Changed the compatible string to chip specific(samsung,exynos5250), since dwc3-exynos is being used from exynso5250 onwards. - Based on changes for USB 2.0: https://lists.ozlabs.org/pipermail/devicetree-discuss/2012-December/024413.html Changes from v1: - Changed the device node name from 'dwc3' to 'usb@1200'. - Added the documentation for device tree bindings for dwc3 controller. .../devicetree/bindings/usb/exynos-usb.txt | 14 +++ arch/arm/boot/dts/exynos5250.dtsi |6 + arch/arm/mach-exynos/Kconfig |1 + arch/arm/mach-exynos/clock-exynos5.c | 24 arch/arm/mach-exynos/include/mach/map.h|1 + arch/arm/mach-exynos/mach-exynos5-dt.c |2 + 6 files changed, 48 insertions(+), 0 deletions(-) diff --git a/Documentation/devicetree/bindings/usb/exynos-usb.txt b/Documentation/devicetree/bindings/usb/exynos-usb.txt index f66fcdd..d660410 100644 --- a/Documentation/devicetree/bindings/usb/exynos-usb.txt +++ b/Documentation/devicetree/bindings/usb/exynos-usb.txt @@ -38,3 +38,17 @@ Example: reg = 0x1212 0x100; interrupts = 0 71 0; }; + +DWC3 +Required properties: + - compatible: should be samsung,exynos5250-dwc3 for USB 3.0 DWC3 controller. + - reg: physical base address of the controller and length of memory mapped + region. + - interrupts: interrupt number to the cpu. + +Example: + usb@1200 { + compatible = samsung,exynos5250-dwc3; + reg = 0x1200 0x1; + interrupts = 0 72 0; + }; diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 75510d1..001a31b 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi @@ -299,6 +299,12 @@ rx-dma-channel = pdma0 11; /* preliminary */ }; + usb@1200 { + compatible = samsung,exynos5250-dwc3; + reg = 0x1200 0x1; + interrupts = 0 72 0; + }; + usb@1211 { compatible = samsung,exynos4210-ehci; reg = 0x1211 0x100; diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 91d5b6f..09f9587 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig @@ -426,6 +426,7 @@ config MACH_EXYNOS5_DT depends on ARCH_EXYNOS5 select ARM_AMBA select USE_OF + select USB_ARCH_HAS_XHCI help Machine support for Samsung EXYNOS5 machine with device tree enabled. Select this if a fdt blob is available for the EXYNOS5 SoC based board. diff --git a/arch/arm/mach-exynos/clock-exynos5.c b/arch/arm/mach-exynos/clock-exynos5.c index 5c63bc7..f2214a0 100644 --- a/arch/arm/mach-exynos/clock-exynos5.c +++ b/arch/arm/mach-exynos/clock-exynos5.c @@ -768,6 +768,11 @@ static struct clk exynos5_init_clocks_off[] = { .enable = exynos5_clk_ip_fsys_ctrl , .ctrlbit= (1 18), }, { + .name = usbdrd30, + .parent = exynos5_clk_aclk_200.clk, + .enable = exynos5_clk_ip_fsys_ctrl, + .ctrlbit= (1 19), + }, { .name = usbotg, .enable = exynos5_clk_ip_fsys_ctrl, .ctrlbit= (1 7), @@ -1121,6 +1126,16 @@ static struct clksrc_sources exynos5_clkset_group = { .nr_sources = ARRAY_SIZE(exynos5_clkset_group_list), }; +struct clk *exynos5_clkset_usbdrd30_list[] = { + [0] = exynos5_clk_mout_mpll.clk, + [1] = exynos5_clk_mout_cpll.clk, +}; + +struct clksrc_sources exynos5_clkset_usbdrd30 = { + .sources= exynos5_clkset_usbdrd30_list, + .nr_sources = ARRAY_SIZE(exynos5_clkset_usbdrd30_list), +}; + /* Possible clock sources for aclk_266_gscl_sub Mux */ static struct clk *clk_src_gscl_266_list[] = { [0] = clk_ext_xtal_mux, @@ -1415,6 +1430,15 @@ static struct clksrc_clk exynos5_clksrcs[] = { .parent = exynos5_clk_mout_cpll.clk, }, .reg_div = { .reg = EXYNOS5_CLKDIV_GEN, .shift = 4, .size = 3 }, + }, { + .clk= { + .name = sclk_usbdrd30, + .enable = exynos5_clksrc_mask_fsys_ctrl, + .ctrlbit= (1 28), + }, + .sources = exynos5_clkset_usbdrd30, + .reg_src = { .reg = EXYNOS5_CLKSRC_FSYS, .shift = 28, .size = 1 }, + .reg_div = { .reg = EXYNOS5_CLKDIV_FSYS0, .shift = 24, .size = 4 },