omap1: omap_udc: Add clocking and disable vbus sense for omap7xx
The l3_ocpi_ck clock is needed on omap7xx processors for USB. Additionally, bit 8 of the SOFT_REQ_REG needs to be enabled for the usb_dc_ck on omap7xx, which is a different bit than that of the omap16xx-defined clock of the same name. I added a provision for the usb_dc_ck and l3_ocpi_ck clocks as dc_clk and hhc_clk, respectively, for omap7xx CPUs. Additionally, I added a check in machine_without_vbus_sense for all omap7xx devices, as presently I know of no omap7xx-based devices that have vbus sense, and it made more sense to me to use a cpu check here than to spell out each machine one at a time. Finally, DMA is disabled for omap7xx, as it causes problems with these chips. Cc: linux-usb@vger.kernel.org Cc: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Cory Maccarrone <darkstar6262@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
committed by
Tony Lindgren
parent
490a566522
commit
45f780a061
@@ -159,11 +159,14 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
|
||||
* - OTG support on this port not yet written
|
||||
*/
|
||||
|
||||
l = omap_readl(USB_TRANSCEIVER_CTRL);
|
||||
l &= ~(7 << 4);
|
||||
if (!is_device)
|
||||
l |= (3 << 1);
|
||||
omap_writel(l, USB_TRANSCEIVER_CTRL);
|
||||
/* Don't do this for omap7xx -- it causes USB to not work correctly */
|
||||
if (!cpu_is_omap7xx()) {
|
||||
l = omap_readl(USB_TRANSCEIVER_CTRL);
|
||||
l &= ~(7 << 4);
|
||||
if (!is_device)
|
||||
l |= (3 << 1);
|
||||
omap_writel(l, USB_TRANSCEIVER_CTRL);
|
||||
}
|
||||
|
||||
return 3 << 16;
|
||||
}
|
||||
@@ -603,7 +606,12 @@ omap_otg_init(struct omap_usb_config *config)
|
||||
if (config->otg || config->register_dev) {
|
||||
syscon &= ~DEV_IDLE_EN;
|
||||
udc_device.dev.platform_data = config;
|
||||
/* FIXME patch IRQ numbers for omap730 */
|
||||
/* IRQ numbers for omap7xx */
|
||||
if(cpu_is_omap7xx()) {
|
||||
udc_resources[1].start = INT_7XX_USB_GENI;
|
||||
udc_resources[2].start = INT_7XX_USB_NON_ISO;
|
||||
udc_resources[3].start = INT_7XX_USB_ISO;
|
||||
}
|
||||
status = platform_device_register(&udc_device);
|
||||
if (status)
|
||||
pr_debug("can't register UDC device, %d\n", status);
|
||||
|
Reference in New Issue
Block a user