[U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support

Andy Fleming afleming at gmail.com
Thu May 9 02:17:57 CEST 2013


On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun at freescale.com> wrote:

> From: Roy Zang <tie-fei.zang at freescale.com>
>
> T4240 internal UTMI phy is different comparing to previous UTMI PHY
> in P3041.
> This patch adds USB 2.0 UTMI Dual PHY new memory map and enable it for
> T4240.
> The phy timing is very sensitive and moving the phy enable code to
> cpu_init.c will not work.
>
> Signed-off-by: Roy Zang <tie-fei.zang at freescale.com>
> ---
>  arch/powerpc/include/asm/config_mpc85xx.h |    3 +--
>  arch/powerpc/include/asm/immap_85xx.h     |   41
> +++++++++++++++++++++++++++++
>  drivers/usb/host/ehci-fsl.c               |   21 +++++++++++++++
>  3 files changed, 63 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h
> b/arch/powerpc/include/asm/config_mpc85xx.h
> index 3740785..ca235dc 100644
> --- a/arch/powerpc/include/asm/config_mpc85xx.h
> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
> @@ -536,8 +536,7 @@
>  #define CONFIG_SYS_FSL_SRIO_MAX_PORTS  2
>  #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
>  #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
> -#define CONFIG_SYS_FSL_USB1_PHY_ENABLE
> -#define CONFIG_SYS_FSL_USB2_PHY_ENABLE
> +#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
>  #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
>  #define CONFIG_SYS_FSL_ERRATUM_A004468
>  #define CONFIG_SYS_FSL_ERRATUM_A_004934
> diff --git a/arch/powerpc/include/asm/immap_85xx.h
> b/arch/powerpc/include/asm/immap_85xx.h
> index 8bc047b..29ee38f 100644
> --- a/arch/powerpc/include/asm/immap_85xx.h
> +++ b/arch/powerpc/include/asm/immap_85xx.h
> @@ -2828,12 +2828,53 @@ typedef struct ccsr_pme {
>         u8      res4[0x400];
>  } ccsr_pme_t;
>
> +#ifdef CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
> +struct ccsr_usb_port_ctrl {
> +       u32     ctrl;
> +       u32     drvvbuscfg;
> +       u32     pwrfltcfg;
> +       u32     sts;
> +       u8      res_14[0xc];
> +       u32     bistcfg;
> +       u32     biststs;
> +       u32     abistcfg;
> +       u32     abiststs;
> +       u8      res_30[0x10];
> +       u32     xcvrprg;
> +       u32     anaprg;
> +       u32     anadrv;
> +       u32     anasts;
> +};
> +
> +struct ccsr_usb_phy {
> +       u32     id;
> +       struct  ccsr_usb_port_ctrl port1;
> +       u8      res_50[0xc];
> +       u32     tvr;
> +       u32     pllprg[4];
> +       u8      res_70[0x4];
> +       u32     anaccfg;
> +       u32     dbg;
> +       u8      res_7c[0x4];
> +       struct  ccsr_usb_port_ctrl port2;
> +       u8      res_dc[0x334];
> +} ccsr_usb_phy_t;
>


I get a build error whenever the code attempts to use ccsr_usb_phy_t. Was
this even build-tested? Am I going to find a later patch that fixes this?
Am I running into a compiler version thing, where it's ok to do struct foo
{ } foo_t, without "typedef" before? My impression is that's just for C++...

I'm going to add "typedef" before this struct, and apply the patch, but
please be more careful.

Andy


More information about the U-Boot mailing list