sunxi: clock: Fix EHCI and OHCI clocks on A64
Subsystems (5)
PATCH v3 1/4 sunxi: clock: Fix EHCI and OHCI clocks on A64
EHCI0 is bit 24, EHCI1 - 25, OHCI0 - 28, OHCI1 - 29
Fixes commit fef73766d9ad ("sunxi: clock: Fix OHCI clock gating for H3/H5")
--- arch/arm/include/asm/arch-sunxi/clock_sun6i.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
arch/arm/include/asm/arch-sunxi/clock_sun6i.h +4 -2
@@ -280,8 +280,10 @@ struct sunxi_ccm_reg {#define AHB_GATE_OFFSET_USB_EHCI1 26#define AHB_GATE_OFFSET_USB_EHCI0 24#elif defined(CONFIG_MACH_SUN50I ) -#define AHB_GATE_OFFSET_USB_OHCI0 29 -#define AHB_GATE_OFFSET_USB_EHCI0 25 +#define AHB_GATE_OFFSET_USB_OHCI0 28 +#define AHB_GATE_OFFSET_USB_OHCI1 29 +#define AHB_GATE_OFFSET_USB_EHCI0 24 +#define AHB_GATE_OFFSET_USB_EHCI1 25#else #define AHB_GATE_OFFSET_USB_OHCI1 30#define AHB_GATE_OFFSET_USB_OHCI0 29
Signature · 1 line
2.17.1
PATCH v3 1/4 sunxi: clock: Fix EHCI and OHCI clocks on A64
Quoted 5 lines · Vasily Khoruzhick
EHCI0 is bit 24, EHCI1 - 25, OHCI0 - 28, OHCI1 - 29
Fixes commit
fef73766d9ad("sunxi: clock: Fix OHCI clock gating for H3/H5")Signed-off-by Vasily Khoruzhick <[email protected]>
Any feedback on this patch series?
Quoted 24 lines
--- arch/arm/include/asm/arch-sunxi/clock_sun6i.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)arch/arm/include/asm/arch-sunxi/clock_sun6i.h +4
-3@@ -280,8 +280,10 @@ struct sunxi_ccm_reg {#define AHB_GATE_OFFSET_USB_EHCI1 26#define AHB_GATE_OFFSET_USB_EHCI0 24#elif defined(CONFIG_MACH_SUN50I ) -#define AHB_GATE_OFFSET_USB_OHCI0 29 -#define AHB_GATE_OFFSET_USB_EHCI0 25 +#define AHB_GATE_OFFSET_USB_OHCI0 28 +#define AHB_GATE_OFFSET_USB_OHCI1 29 +#define AHB_GATE_OFFSET_USB_EHCI0 24 +#define AHB_GATE_OFFSET_USB_EHCI1 25#else #define AHB_GATE_OFFSET_USB_OHCI1 30#define AHB_GATE_OFFSET_USB_OHCI0 29 --2.17.1
PATCH v3 2/4 usb: sunxi: ehci: get rid of ifdefs
In reply to Vasily KhoruzhickWe can use compatibles instead.
---
v3: use ehci_sunxi_cfg instead of id
drivers/usb/host/ehci-sunxi.c | 83 ++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 20 deletions(-)
drivers/usb/host/ehci-sunxi.c +63 -20
@@ -22,11 +22,17 @@#define AHB_CLK_DIST 1#endif +struct ehci_sunxi_cfg { +bool has_reset; +u32 extra_ahb_gate_mask; +}; +struct ehci_sunxi_priv {struct ehci_ctrl ehci;struct sunxi_ccm_reg *ccm;int ahb_gate_mask;/* Mask of ahb_gate0 clk gate bits for this hcd */ struct phy phy; +const struct ehci_sunxi_cfg *cfg; };static int ehci_usb_probe (struct udevice *dev)
@@ -38,6 +44,7 @@ static int ehci_usb_probe(struct udevice *dev)int extra_ahb_gate_mask =0 ;int phys, ret; + priv->cfg = (const struct ehci_sunxi_cfg *)dev_get_driver_data (dev); priv->ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE ;if (IS_ERR (priv->ccm))return PTR_ERR (priv->ccm);
@@ -72,18 +79,15 @@ no_phy:* clocks resp. phys. */ priv->ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_EHCI0 ; -#if defined(CONFIG_MACH_SUNXI_H3_H5 ) || defined(CONFIG_MACH_SUN50I ) - extra_ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_OHCI0 ; -#endif + extra_ahb_gate_mask = priv->cfg->extra_ahb_gate_mask; priv->ahb_gate_mask <<= phys *AHB_CLK_DIST ; extra_ahb_gate_mask <<= phys *AHB_CLK_DIST ;setbits_le32 (&priv->ccm->ahb_gate0, priv->ahb_gate_mask | extra_ahb_gate_mask); -#ifdef CONFIG_SUNXI_GEN_SUN6I -setbits_le32 (&priv->ccm->ahb_reset0_cfg, - priv->ahb_gate_mask | extra_ahb_gate_mask); -#endif +if (priv->cfg->has_reset) +setbits_le32 (&priv->ccm->ahb_reset0_cfg, + priv->ahb_gate_mask | extra_ahb_gate_mask); hcor = (struct ehci_hcor *)((uintptr_t )hccr +HC_LENGTH (ehci_readl (&hccr->cr_capbase)));
@@ -108,25 +112,64 @@ static int ehci_usb_remove(struct udevice *dev)if (ret)return ret; -#ifdef CONFIG_SUNXI_GEN_SUN6I -clrbits_le32 (&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask); -#endif +if (priv->cfg->has_reset) +clrbits_le32 (&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask);clrbits_le32 (&priv->ccm->ahb_gate0, priv->ahb_gate_mask);return 0 ; } +static const struct ehci_sunxi_cfg sun4i_a10_cfg = { + .has_reset = false, +}; + +static const struct ehci_sunxi_cfg sun6i_a31_cfg = { + .has_reset = true, +}; + +static const struct ehci_sunxi_cfg sun8i_h3_cfg = { + .has_reset = true, + .extra_ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_OHCI0 , +}; +static const struct udevice_id ehci_usb_ids[] = { - { .compatible ="allwinner,sun4i-a10-ehci" , }, - { .compatible ="allwinner,sun5i-a13-ehci" , }, - { .compatible ="allwinner,sun6i-a31-ehci" , }, - { .compatible ="allwinner,sun7i-a20-ehci" , }, - { .compatible ="allwinner,sun8i-a23-ehci" , }, - { .compatible ="allwinner,sun8i-a83t-ehci" , }, - { .compatible ="allwinner,sun8i-h3-ehci" , }, - { .compatible ="allwinner,sun9i-a80-ehci" , }, - { .compatible ="allwinner,sun50i-a64-ehci" , }, - { } + { + .compatible ="allwinner,sun4i-a10-ehci" , + .data = (ulong)&sun4i_a10_cfg, + }, + { + .compatible ="allwinner,sun5i-a13-ehci" , + .data = (ulong)&sun4i_a10_cfg, + }, + { + .compatible ="allwinner,sun6i-a31-ehci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun7i-a20-ehci" , + .data = (ulong)&sun4i_a10_cfg, + }, + { + .compatible ="allwinner,sun8i-a23-ehci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun8i-a83t-ehci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun8i-h3-ehci" , + .data = (ulong)&sun8i_h3_cfg, + }, + { + .compatible ="allwinner,sun9i-a80-ehci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun50i-a64-ehci" , + .data = (ulong)&sun8i_h3_cfg, + }, + {/* sentinel */ } };U_BOOT_DRIVER (ehci_sunxi) = {
Signature · 1 line
2.17.1
PATCH v3 2/4 usb: sunxi: ehci: get rid of ifdefs
Quoted 16 lines · Vasily Khoruzhick
We can use compatibles instead.
Signed-off-by Vasily Khoruzhick <[email protected]>---
v3: useehci_sunxi_cfginstead of iddrivers/usb/host/ehci-sunxi.c | 83 ++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 20 deletions(-)drivers/usb/host/ehci-sunxi.c +0
-0@@ -22,11 +22,17 @@#define AHB_CLK_DIST 1#endif
drivers/usb/host/ehci-sunxi.c line 33
Quoted 10 lines
drivers/usb/host/ehci-sunxi.c +5
-0+struct ehci_sunxi_cfg { +bool has_reset; +u32 extra_ahb_gate_mask; +}; +struct ehci_sunxi_priv {struct ehci_ctrl ehci;struct sunxi_ccm_reg *ccm;int ahb_gate_mask;/* Mask of ahb_gate0 clk gate bits for this hcd */
Ideally this should be moved to the ehci_sunxi_cfg (and this is true for OHCI as well) function for consistency, but that can be done in a subsequent patch.
It looks good otherwise, thanks!
Maxime
Signature · 3 lines
Maxime Ripard, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH v3 2/4 usb: sunxi: ehci: get rid of ifdefs
Quoted 18 lines · Maxime Ripard
Quoted 17 lines · Vasily Khoruzhick
We can use compatibles instead.
Signed-off-by Vasily Khoruzhick <[email protected]>---
v3: useehci_sunxi_cfginstead of iddrivers/usb/host/ehci-sunxi.c | 83 ++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 20 deletions(-)drivers/usb/host/ehci-sunxi.c +0
-0@@ -22,11 +22,17 @@#define AHB_CLK_DIST 1#endif
Quoted 13 lines
drivers/usb/host/ehci-sunxi.c line 33
Quoted 9 lines
drivers/usb/host/ehci-sunxi.c +5
-0+struct ehci_sunxi_cfg { +bool has_reset; +u32 extra_ahb_gate_mask; +}; +struct ehci_sunxi_priv {struct ehci_ctrl ehci;struct sunxi_ccm_reg *ccm;int ahb_gate_mask;/* Mask of ahb_gate0 clk gate bits for this hcd */ Ideally this should be moved to the
ehci_sunxi_cfg(and this is true for OHCI as well) function for consistency, but that can be done in a subsequent patch.
ahb_gate_mask is per-controller, i.e. it differs for EHCI0 and EHCI1 so it can't be moved to ehci_sunxi_cfg.
Quoted 7 lines
It looks good otherwise, thanks!
Maxime--
Maxime Ripard, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
PATCH v3 2/4 usb: sunxi: ehci: get rid of ifdefs
Quoted 33 lines · Vasily Khoruzhick
Quoted 18 lines · Maxime Ripard
Quoted 17 lines · Vasily Khoruzhick
We can use compatibles instead.
Signed-off-by Vasily Khoruzhick <[email protected]>---
v3: useehci_sunxi_cfginstead of iddrivers/usb/host/ehci-sunxi.c | 83 ++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 20 deletions(-)drivers/usb/host/ehci-sunxi.c +0
-0@@ -22,11 +22,17 @@#define AHB_CLK_DIST 1#endif Quoted 13 lines
drivers/usb/host/ehci-sunxi.c line 33
Quoted 9 lines
drivers/usb/host/ehci-sunxi.c +5
-0+struct ehci_sunxi_cfg { +bool has_reset; +u32 extra_ahb_gate_mask; +}; +struct ehci_sunxi_priv {struct ehci_ctrl ehci;struct sunxi_ccm_reg *ccm;int ahb_gate_mask;/* Mask of ahb_gate0 clk gate bits for this hcd */ Ideally this should be moved to the
ehci_sunxi_cfg(and this is true for OHCI as well) function for consistency, but that can be done in a subsequent patch.
Quoted 2 lines
ahb_gate_maskis per-controller, i.e. it differs for EHCI0 and EHCI1 so it can't be moved toehci_sunxi_cfg.
Ah, right. Nevermind then :)
Maxime
Signature · 3 lines
Maxime Ripard, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH v3 3/4 usb: sunxi: ohci: get rid of ifdefs
In reply to Vasily KhoruzhickWe can use compatibles instead.
---
v3: use ohci_sunxi_cfg instead of id
drivers/usb/host/ohci-sunxi.c | 83 ++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 20 deletions(-)
drivers/usb/host/ohci-sunxi.c +63 -20
@@ -22,12 +22,18 @@#define AHB_CLK_DIST 1#endif +struct ohci_sunxi_cfg { +bool has_reset; +u32 extra_ahb_gate_mask; +}; +struct ohci_sunxi_priv {struct sunxi_ccm_reg *ccm;ohci_t ohci;int ahb_gate_mask;/* Mask of ahb_gate0 clk gate bits for this hcd */ int usb_gate_mask;/* Mask of usb_clk_cfg clk gate bits for this hcd */ struct phy phy; +const struct ohci_sunxi_cfg *cfg; };static int ohci_usb_probe (struct udevice *dev)
@@ -38,6 +44,7 @@ static int ohci_usb_probe(struct udevice *dev)int extra_ahb_gate_mask =0 ;int phys, ret; + priv->cfg = (const struct ohci_sunxi_cfg *)dev_get_driver_data (dev); priv->ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE ;if (IS_ERR (priv->ccm))return PTR_ERR (priv->ccm);
@@ -74,9 +81,7 @@ no_phy:* clocks resp. phys. */ priv->ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_OHCI0 ; -#ifdef CONFIG_MACH_SUN8I_H3 - extra_ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_EHCI0 ; -#endif + extra_ahb_gate_mask = priv->cfg->extra_ahb_gate_mask; priv->usb_gate_mask =CCM_USB_CTRL_OHCI0_CLK ; priv->ahb_gate_mask <<= phys *AHB_CLK_DIST ; extra_ahb_gate_mask <<= phys *AHB_CLK_DIST ;
@@ -85,10 +90,9 @@ no_phy:setbits_le32 (&priv->ccm->ahb_gate0, priv->ahb_gate_mask | extra_ahb_gate_mask);setbits_le32 (&priv->ccm->usb_clk_cfg, priv->usb_gate_mask); -#ifdef CONFIG_SUNXI_GEN_SUN6I -setbits_le32 (&priv->ccm->ahb_reset0_cfg, - priv->ahb_gate_mask | extra_ahb_gate_mask); -#endif +if (priv->cfg->has_reset) +setbits_le32 (&priv->ccm->ahb_reset0_cfg, + priv->ahb_gate_mask | extra_ahb_gate_mask);return ohci_register (dev, regs); }
@@ -110,26 +114,65 @@ static int ohci_usb_remove(struct udevice *dev)if (ret)return ret; -#ifdef CONFIG_SUNXI_GEN_SUN6I -clrbits_le32 (&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask); -#endif +if (priv->cfg->has_reset) +clrbits_le32 (&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask);clrbits_le32 (&priv->ccm->usb_clk_cfg, priv->usb_gate_mask);clrbits_le32 (&priv->ccm->ahb_gate0, priv->ahb_gate_mask);return 0 ; } +static const struct ohci_sunxi_cfg sun4i_a10_cfg = { + .has_reset = false, +}; + +static const struct ohci_sunxi_cfg sun6i_a31_cfg = { + .has_reset = true, +}; + +static const struct ohci_sunxi_cfg sun8i_h3_cfg = { + .has_reset = true, + .extra_ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_EHCI0 , +}; +static const struct udevice_id ohci_usb_ids[] = { - { .compatible ="allwinner,sun4i-a10-ohci" , }, - { .compatible ="allwinner,sun5i-a13-ohci" , }, - { .compatible ="allwinner,sun6i-a31-ohci" , }, - { .compatible ="allwinner,sun7i-a20-ohci" , }, - { .compatible ="allwinner,sun8i-a23-ohci" , }, - { .compatible ="allwinner,sun8i-a83t-ohci" , }, - { .compatible ="allwinner,sun8i-h3-ohci" , }, - { .compatible ="allwinner,sun9i-a80-ohci" , }, - { .compatible ="allwinner,sun50i-a64-ohci" , }, - { } + { + .compatible ="allwinner,sun4i-a10-ohci" , + .data = (ulong)&sun4i_a10_cfg, + }, + { + .compatible ="allwinner,sun5i-a13-ohci" , + .data = (ulong)&sun4i_a10_cfg, + }, + { + .compatible ="allwinner,sun6i-a31-ohci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun7i-a20-ohci" , + .data = (ulong)&sun4i_a10_cfg, + }, + { + .compatible ="allwinner,sun8i-a23-ohci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun8i-a83t-ohci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun8i-h3-ohci" , + .data = (ulong)&sun8i_h3_cfg, + }, + { + .compatible ="allwinner,sun9i-a80-ohci" , + .data = (ulong)&sun6i_a31_cfg, + }, + { + .compatible ="allwinner,sun50i-a64-ohci" , + .data = (ulong)&sun6i_a31_cfg, + }, + {/* sentinel */ } };U_BOOT_DRIVER (usb_ohci) = {
Signature · 1 line
2.17.1
PATCH v3 1/4 sunxi: clock: Fix EHCI and OHCI clocks on A64
In reply to Vasily KhoruzhickQuoted 8 lines · Vasily Khoruzhick
EHCI0 is bit 24, EHCI1 - 25, OHCI0 - 28, OHCI1 - 29
Fixes commit
fef73766d9ad("sunxi: clock: Fix OHCI clock gating for H3/H5")Signed-off-by Vasily Khoruzhick <[email protected]>--- arch/arm/include/asm/arch-sunxi/clock_sun6i.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
Tested on pine64+ grub EFI from USB, which then loaded kernel+initrd off of USB, as well as using distro_bootcmd's exlinux.conf, loading kernel+initrd+dtb from USB...
For the whole series of 4 v3 patches:
live well,
vagrant
Quoted 7 lines
arch/arm/include/asm/arch-sunxi/clock_sun6i.h +0
-0@@ -280,8 +280,10 @@ struct sunxi_ccm_reg {#define AHB_GATE_OFFSET_USB_EHCI1 26#define AHB_GATE_OFFSET_USB_EHCI0 24
arch/arm/include/asm/arch-sunxi/clock_sun6i.h struct sunxi_ccm_reg { · line 289
Quoted 10 lines
arch/arm/include/asm/arch-sunxi/clock_sun6i.h +4
-2#elif defined(CONFIG_MACH_SUN50I ) -#define AHB_GATE_OFFSET_USB_OHCI0 29 -#define AHB_GATE_OFFSET_USB_EHCI0 25 +#define AHB_GATE_OFFSET_USB_OHCI0 28 +#define AHB_GATE_OFFSET_USB_OHCI1 29 +#define AHB_GATE_OFFSET_USB_EHCI0 24 +#define AHB_GATE_OFFSET_USB_EHCI1 25#else #define AHB_GATE_OFFSET_USB_OHCI1 30#define AHB_GATE_OFFSET_USB_OHCI0 29
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180608/e815515e/attachment.sig>
PATCH v3 4/4 usb: sunxi: sun50i: enable OHCI0 clock when OHCI1 is in use
In reply to Vasily KhoruzhickOn A64 OHCI1 clock source is OHCI0 clock, so we need to enable OHCI0 clock when OHCI1 is in use.
Fixes commit dd3228170ad7 ("usb: sunxi: Switch to use generic-phy")
--- drivers/usb/host/ohci-sunxi.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
drivers/usb/host/ohci-sunxi.c +10 -2
@@ -25,6 +25,7 @@struct ohci_sunxi_cfg {bool has_reset;u32 extra_ahb_gate_mask; +u32 extra_usb_gate_mask; };struct ohci_sunxi_priv {
@@ -89,7 +90,8 @@ no_phy:setbits_le32 (&priv->ccm->ahb_gate0, priv->ahb_gate_mask | extra_ahb_gate_mask); -setbits_le32 (&priv->ccm->usb_clk_cfg, priv->usb_gate_mask); +setbits_le32 (&priv->ccm->usb_clk_cfg, + priv->usb_gate_mask | priv->cfg->extra_usb_gate_mask);if (priv->cfg->has_reset)setbits_le32 (&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask | extra_ahb_gate_mask);
@@ -135,6 +137,12 @@ static const struct ohci_sunxi_cfg sun8i_h3_cfg = { .extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0, }; +static const struct ohci_sunxi_cfg sun50i_a64_cfg = { + .has_reset = true, + .extra_ahb_gate_mask =1 <<AHB_GATE_OFFSET_USB_EHCI0 , + .extra_usb_gate_mask =CCM_USB_CTRL_OHCI0_CLK , +}; +static const struct udevice_id ohci_usb_ids[] = { { .compatible ="allwinner,sun4i-a10-ohci" ,
@@ -170,7 +178,7 @@ static const struct udevice_id ohci_usb_ids[] = { }, { .compatible = "allwinner,sun50i-a64-ohci", - .data = (ulong)&sun6i_a31_cfg, + .data = (ulong)&sun50i_a64_cfg, }, {/* sentinel */ } };
Signature · 1 line
2.17.1
Marek Vasut
AppliedPATCH v3 1/4 sunxi: clock: Fix EHCI and OHCI clocks on A64
In reply to Vasily KhoruzhickQuoted 17 lines · Vasily Khoruzhick
EHCI0 is bit 24, EHCI1 - 25, OHCI0 - 28, OHCI1 - 29
Fixes commit
fef73766d9ad("sunxi: clock: Fix OHCI clock gating for H3/H5")Signed-off-by Vasily Khoruzhick <[email protected]>--- arch/arm/include/asm/arch-sunxi/clock_sun6i.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)arch/arm/include/asm/arch-sunxi/clock_sun6i.h +0
-0@@ -280,8 +280,10 @@ struct sunxi_ccm_reg {#define AHB_GATE_OFFSET_USB_EHCI1 26#define AHB_GATE_OFFSET_USB_EHCI0 24
arch/arm/include/asm/arch-sunxi/clock_sun6i.h struct sunxi_ccm_reg { · line 289
Quoted 10 lines
arch/arm/include/asm/arch-sunxi/clock_sun6i.h +4
-2#elif defined(CONFIG_MACH_SUN50I ) -#define AHB_GATE_OFFSET_USB_OHCI0 29 -#define AHB_GATE_OFFSET_USB_EHCI0 25 +#define AHB_GATE_OFFSET_USB_OHCI0 28 +#define AHB_GATE_OFFSET_USB_OHCI1 29 +#define AHB_GATE_OFFSET_USB_EHCI0 24 +#define AHB_GATE_OFFSET_USB_EHCI1 25#else #define AHB_GATE_OFFSET_USB_OHCI1 30#define AHB_GATE_OFFSET_USB_OHCI0 29
Applied all 4, thanks.
Signature · 2 lines
Best regards, Marek Vasut