On Sunday, September 25, 2011 07:25:09 PM Jana Rapava wrote: Dear Jana Rapava,
> Add into ./include/usb/ehci-fsl.h macros and structures > needed by following patch; change prefix of common MX31 USB_CTRL bits > to MXC. The commit message doesn't make too much sense. The intention is to move definitions shared across multiple drivers into common header file? If so, please express this properly. > > Signed-off-by: Jana Rapava <ferma...@gmail.com> > Cc: Marek Vasut <marek.va...@gmail.com> > Cc: Remy Bohmer <li...@bohmer.net> > Cc: Stefano Babic <sba...@denx.de> > --- > Changes for v2: > - changed to proper patch > Changes for v3: > - merged other USB patches from u-boot-pxa/efikasb > - offset-based access changed to struct-based access > - use {clrset,clr,set}bits_le32() calls > - CodingStyle and naming cleanup > Changes for v4: > - split into patchset > > drivers/usb/host/ehci-mxc.c | 9 +-- > include/usb/ehci-fsl.h | 119 > ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 121 > insertions(+), 7 deletions(-) > > diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c > index a0cfbb7..973bb4f 100644 > --- a/drivers/usb/host/ehci-mxc.c > +++ b/drivers/usb/host/ehci-mxc.c > @@ -37,9 +37,6 @@ > #endif > > #ifdef CONFIG_MX31 > -#define MX31_OTG_SIC_SHIFT 29 > -#define MX31_OTG_SIC_MASK (0x3 << MX31_OTG_SIC_SHIFT) > -#define MX31_OTG_PM_BIT (1 << 24) > > #define MX31_H2_SIC_SHIFT 21 > #define MX31_H2_SIC_MASK (0x3 << MX31_H2_SIC_SHIFT) You should move this all into ehci-fsl.h then. > @@ -66,11 +63,11 @@ static int mxc_set_usbcontrol(int port, unsigned int > flags) > > switch (port) { > case 0: /* OTG port */ > - v &= ~(MX31_OTG_SIC_MASK | MX31_OTG_PM_BIT); > + v &= ~(MXC_OTG_SIC_MASK | MXC_OTG_PM_BIT); > v |= (flags & MXC_EHCI_INTERFACE_MASK) > - << MX31_OTG_SIC_SHIFT; > + << MXC_OTG_SIC_SHIFT; > if (!(flags & MXC_EHCI_POWER_PINS_ENABLED)) > - v |= MX31_OTG_PM_BIT; > + v |= MXC_OTG_PM_BIT; > > break; > case 1: /* H1 port */ > diff --git a/include/usb/ehci-fsl.h b/include/usb/ehci-fsl.h > index 67600ed..b107f71 100644 > --- a/include/usb/ehci-fsl.h > +++ b/include/usb/ehci-fsl.h > @@ -169,6 +169,79 @@ > #define CONFIG_SYS_FSL_USB_ADDR CONFIG_SYS_MPC512x_USB_ADDR > #endif [...] > +/* ULPI OTG Control bits of interest */ > +#define ULPI_OTG_EXT_VBUS_IND (1 << 7) > +#define ULPI_OTG_DM_PULLDOWN (1 << 2) > +#define ULPI_OTG_DP_PULLDOWN (1 << 1) > +#define ULPI_OTG_DRV_VBUS (1 << 5) Use space/tab consistently ... space is the prefered thing to use. > +#define ULPI_OTG_DRV_VBUS_EXT (1 << 6) > +#define ULPI_OTG_CHRG_VBUS (1 << 4) > + > +/* ULPI Function Control bits of interest */ > +#define ULPI_FC_XCVR_SELECT (1 << 0) > +#define ULPI_FC_OPMODE_NORMAL (0 << 3) > +#define ULPI_FC_SUSPENDM_PWRED (1 << 6) > + > /* > * USB Registers > */ > @@ -210,7 +283,7 @@ struct usb_ehci { > u32 txfilltuning; /* 0x164 - Host TT Transmit > pre-buffer packet tuning */ > u8 res7[0x8]; > - u32 ulpi_viewpoint; /* 0x170 - ULPI Reister Access */ > + u32 ulpi_viewpoint; /* 0x170 - ULPI Register Access */ > u8 res8[0xc]; > u32 config_flag; /* 0x180 - Configured Flag Register */ > u32 portsc; /* 0x184 - Port status/control */ > @@ -242,4 +315,48 @@ struct usb_ehci { > u8 res13[0xafc]; > }; > > +struct usb_control_regs { > + u32 usbctrl; /* 0x800 - USB Control */ > + u32 otgmirror; /* 0x804 - OTG Port Mirror */ > + u32 phyctrl0; /* 0x808 - UTMI PHY Control Register 0 */ > + u32 phyctrl1; /* 0x80C - UTMI PHY Control Register 1 */ > + u32 usbctrl1; /* 0x810 - USB Control Register 1 */ > + u32 uh2ctrl; /* 0x814 - USB Host2 Control */ > + u32 uh3ctrl; /* 0x818 - USB Host3 Control */ > +}; mx5_usb_control_regs ... this is not the same on all mxc chips. > + > +struct ulpi_regs { > + u8 vendor_id_low; /* 0x00 - Vendor ID lower byte */ > + u8 vendor_id_high; /* 0x01 - Vendor ID upper byte */ > + u8 product_id_low; /* 0x02 - Product ID lower byte */ > + u8 product_id_high; /* 0x03 - Product ID higher byte */ > + /* Function Control; 0x04 - 0x06 Read, 0x04 Write */ > + u8 function_ctrl_write; > + u8 function_ctrl_set; /* 0x05 Set */ > + u8 function_ctrl_clear; /* 0x06 Clear */ > + /* Interface Control; 0x07 - 0x09 Read, 0x07 Write */ > + u8 iface_ctrl_write; > + u8 iface_ctrl_set; /* 0x08 Set */ > + u8 iface_ctrl_clear; /* 0x09 Clear */ > + /* OTG Control; 0x0A - 0x0C Read, 0x0A Write */ > + u8 otg_ctrl_write; > + u8 otg_ctrl_set; /* 0x0B Set */ > + u8 otg_ctrl_clear; /* 0x0C Clear */ > + /* USB Interrupt Enable Rising; 0x0D - 0x0F Read, 0x0D Write */ > + u8 usb_ie_rising_write; > + u8 usb_ie_rising_set; /* 0x0E Set */ > + u8 usb_ie_rising_clear; /* 0x0F Clear */ > + /* USB Interrupt Enable Falling; 0x10 - 0x12 Read, 0x10 Write */ > + u8 usb_ie_falling_write; > + u8 usb_ie_falling_set; /* 0x11 Set */ > + u8 usb_ie_falling_clear; /* 0x12 Clear */ > + u8 usb_int_status; /* 0x13 - USB Interrupt Status */ > + u8 usb_int_latch; /* 0x14 - USB Interrupt Latch */ > + u8 debug; /* 0x15 - Debug */ > + /* Scratch Register; 0x16 - 0x18 Read, 0x16 Write */ > + u8 scratch_write; > + u8 scratch_set; /* 0x17 Set */ > + u8 scratch_clear; /* 0x18 Clear*/ > +}; Hm, we should keep this here only until we get a decent ULPI implementation. Also, rename to something like mxc_ulpi_regs at least. > + > #endif /* _EHCI_FSL_H */ _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot