* Tony Lindgren <tony@xxxxxxxxxxx> [080516 14:49]: > * David Brownell <david-b@xxxxxxxxxxx> [080516 14:26]: > > On Friday 16 May 2008, Tony Lindgren wrote: > > > @@ -38,19 +38,19 @@ > > > #define CF_BASE 0xfffe2800 > > > > > > /* status; read after IRQ */ > > > -#define CF_STATUS_REG __REG16(CF_BASE + 0x00) > > > +#define CF_STATUS (CF_BASE + 0x00) > > > # define CF_STATUS_BAD_READ (1 << 2) > > > # define CF_STATUS_BAD_WRITE (1 << 1) > > > # define CF_STATUS_CARD_DETECT (1 << 0) > > > > > > /* which chipselect (CS0..CS3) is used for CF (active low) */ > > > -#define CF_CFG_REG __REG16(CF_BASE + 0x02) > > > +#define CF_CFG (CF_BASE + 0x02) > > > > > > ... > > > > Trying to understand the plan here. This first patches > > are to remove __REG*() access, we hillater patches will > > be needed to convert things to omap_readl(BASE + OFFSET) > > style accessors? (BASE being SOC-specific, and passed > > down from system init code.) > > > > Not that CF is a good example of that. I don't think > > it exists on current chips. ;) > > Well ideally we would set the base offset during driver init, then > just use __raw_read/write(). > > But that's lot of work, so it's easier first to convert __REG access > to use omap_read/write(). I'll post multi-omap series as soon as I have > it booting.. But to give you and idea, we can have something like following > work for multi-omap. ... Turns out there were bunch of issues with the patches above.. Here's a patch fixing them. I will repost this series soon, just FYI. Tony
--- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c @@ -193,13 +193,10 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device) l = omap_readl(USB_TRANSCEIVER_CTRL); l &= ~(7 << 4); - omap_writel(l, USB_TRANSCEIVER_CTRL); - if (!is_device) { - l = omap_readl(USB_TRANSCEIVER_CTRL); l |= (3 << 1); - omap_writel(l, USB_TRANSCEIVER_CTRL); } + omap_writel(l, USB_TRANSCEIVER_CTRL); return 3 << 16; } @@ -643,9 +640,6 @@ omap_otg_init(struct omap_usb_config *config) w = omap_readw(ULPD_CLOCK_CTRL); w &= ~USB_MCLK_EN; - omap_writew(w, ULPD_CLOCK_CTRL); - - w = omap_readw(ULPD_CLOCK_CTRL); w |= DIS_USB_PVCI_CLK; omap_writew(w, ULPD_CLOCK_CTRL); } --- a/drivers/i2c/chips/isp1301_omap.c +++ b/drivers/i2c/chips/isp1301_omap.c @@ -520,7 +520,7 @@ static void update_otg1(struct isp1301 *isp, u8 int_src) otg_ctrl = omap_readl(OTG_CTRL) & OTG_CTRL_MASK; otg_ctrl &= ~OTG_XCEIV_INPUTS; - otg_ctrl &= (OTG_ID|OTG_ASESSVLD|OTG_VBUSVLD); + otg_ctrl &= ~(OTG_ID|OTG_ASESSVLD|OTG_VBUSVLD); if (int_src & INTR_SESS_VLD) --- a/drivers/usb/gadget/omap_udc.c +++ b/drivers/usb/gadget/omap_udc.c @@ -2858,7 +2858,6 @@ static int __init omap_udc_probe(struct platform_device *pdev) * means we always "need" the 48MHz clock. */ u32 tmp = omap_readl(FUNC_MUX_CTRL_0); - tmp &= ~VBUS_CTRL_1510; omap_writel(tmp, FUNC_MUX_CTRL_0); tmp |= VBUS_MODE_1510; --- a/drivers/usb/gadget/omap_udc.h +++ b/drivers/usb/gadget/omap_udc.h @@ -202,6 +202,6 @@ struct omap_udc { #define VBUS_MODE_1510 (1 << 18) /* 0 hardware, 1 software */ #define HMC_1510 ((omap_readl(MOD_CONF_CTRL_0) >> 1) & 0x3f) -#define HMC_1610 omap_readl(OTG_SYSCON_2 & 0x3f) +#define HMC_1610 (omap_readl(OTG_SYSCON_2) & 0x3f) #define HMC (cpu_is_omap15xx() ? HMC_1510 : HMC_1610) --- a/drivers/usb/gadget/omap_udc.c +++ b/drivers/usb/gadget/omap_udc.c @@ -2003,7 +2003,7 @@ static irqreturn_t omap_udc_pio_irq(int irq, void *_dev) ep->irqs++; omap_writew(epnum | UDC_EP_DIR | UDC_EP_SEL, UDC_EP_NUM); - if (omap_readw(UDC_STAT_FLG & UDC_ACK)) { + if (omap_readw(UDC_STAT_FLG) & UDC_ACK) { ep->ackwait = 0; if (!list_empty(&ep->queue)) { req = container_of(ep->queue.next,