
On 02/03/12 15:38, Govindraj.R wrote:
From: "Govindraj.R" govindraj.raja@ti.com
Based on discussion from this thread [1]. Adding omap-view port that helps us in using the generic ulpi framework for any ulpi phy ops using the INSNREG05_ULPI viewport reg available on omap platform.
Currently ehci ports are available on omap3/4 platforms so enable the same for beagle and panda, patch is tested on the same boards.
Thanks to Igor Grinberg grinberg@compulab.co.il for reviewing the omap-ehci patches and suggesting this approach.
Tested-by: Stefano Babic sbabic@denx.de Signed-off-by: Govindraj.R govindraj.raja@ti.com
After fixing several neats below,
Acked-by: Igor Grinberg grinberg@compulab.co.il
doc/README.omap-ulpi-viewport | 27 +++++++++ drivers/usb/ulpi/Makefile | 1 + drivers/usb/ulpi/omap-ulpi-viewport.c | 105 +++++++++++++++++++++++++++++++++ include/configs/omap3_beagle.h | 3 + include/configs/omap4_panda.h | 2 + 5 files changed, 138 insertions(+), 0 deletions(-) create mode 100644 doc/README.omap-ulpi-viewport create mode 100644 drivers/usb/ulpi/omap-ulpi-viewport.c
diff --git a/doc/README.omap-ulpi-viewport b/doc/README.omap-ulpi-viewport new file mode 100644 index 0000000..19feecd --- /dev/null +++ b/doc/README.omap-ulpi-viewport @@ -0,0 +1,27 @@ +Reference code ""drivers/usb/ulpi/omap-ulpi-viewport.c"
+Contains the ulpi read write api's to perform +any ulpi phy port access on omap platform.
+On omap ehci reg map contains INSNREG05_ULPI +register which offers the ulpi phy access so +any ulpi phy commands can be passsed using this
should be passed ^^^
+register.
+omap-ulpi-viewport.c is a low level function +implementation of "drivers/usb/ulpi/ulpi.c"
+To enable and use omap-ulpi-viewport.c +we requires CONFIG_USB_ULPI_VIEWPORT_OMAP and
s/requires/require/
+CONFIG_USB_ULPI be enabled from config file.
s/from/in/
+Any ulpi ops request can be done with ulpi.c +and soc specific binding and usage is done with +omap-ulpi-viewport implementation.
+Ex: scenario: +omap-ehci driver code requests for ulpi phy reset if +ehci is used in phy mode, which will call ulpi phy reset +the ulpi phy reset does ulpi_read/write from viewport +implementation which will do ulpi reset using the +INSNREG05_ULPI register.
[...]
diff --git a/drivers/usb/ulpi/omap-ulpi-viewport.c b/drivers/usb/ulpi/omap-ulpi-viewport.c new file mode 100644 index 0000000..66b1795 --- /dev/null +++ b/drivers/usb/ulpi/omap-ulpi-viewport.c
[...]
+int ulpi_write(struct ulpi_viewport *ulpi_vp, u8 *reg, u32 value) +{
- u32 val = ((ulpi_vp->port_num & 0x7) << 24) |
OMAP_ULPI_WR_OPSEL | ((u32)reg << 16) | (value & 0xff);
On OMAP, port_num is 4 bits wide, therefore: ulpi_vp->port_num & 0xf
- return ulpi_request(ulpi_vp, val);
+}
+u32 ulpi_read(struct ulpi_viewport *ulpi_vp, u8 *reg) +{
- int err;
- u32 val = ((ulpi_vp->port_num & 0x7) << 24) |
OMAP_ULPI_WR_OPSEL | ((u32)reg << 16);
same here: ulpi_vp->port_num & 0xf
- err = ulpi_request(ulpi_vp, val);
- if (err)
return err;
- return readl(ulpi_vp->viewport_addr) & 0xff;
+}
[...]