Hello.

Miguel Aguilar wrote:

From: Miguel Aguilar <miguel.agui...@ridgerun.com>

Modifies the DaVinci USB driver in order to support the DM365 platform.

This patch needs the patch called "DaVinci: DM365: Correct USB source clock" by Sandeep Paulraj to work properly because it fixes the USB clock source
for DM365.

Signed-off-by: Miguel Aguilar <miguel.agui...@ridgerun.com>

[...]

diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
index e16ff60..f5374f9 100644
--- a/drivers/usb/musb/davinci.c
+++ b/drivers/usb/musb/davinci.c
@@ -62,10 +62,19 @@ static inline void phy_on(void)
 {
     u32    phy_ctrl = __raw_readl(USB_PHY_CTRL);
- /* power everything up; start the on-chip PHY and its PLL */
-    phy_ctrl &= ~(USBPHY_OSCPDWN | USBPHY_OTGPDWN | USBPHY_PHYPDWN);
-    phy_ctrl |= USBPHY_SESNDEN | USBPHY_VBDTCTEN | USBPHY_PHYPLLON;
-    __raw_writel(phy_ctrl, USB_PHY_CTRL);
+    if (cpu_is_davinci_dm365())
+        /*
+         * DM365 PHYCLKFREQ field [15:12] is set to 2
+         * to get clock from 24MHz crystal
+         */
+        __raw_writel(USBPHY_SESNDEN | USBPHY_VBDTCTEN |
+            USBPHY_CLKFREQ_24MHZ, USB_PHY_CTRL);

I suspect that the USB clock selection is board specific, not SoC specific, hence it should bein board-dm366-evm.c.

[MA] Does the other Davinci platforms handle the USB clock selection as board specific?

Other DaVincis don't have clock selection. DA830 EVM handles the clock selection in the board code because the clock can be internal or external, presumably depending on the board. On DM365, as I can see, the clock source is also selectable...

@@ -189,6 +198,8 @@ static void davinci_source_power(struct musb *musb, int is_on, int immediate)
     if (immediate)
         vbus_state = is_on;
 #endif
+    if (cpu_is_davinci_dm365())
+        gpio_set_value(33, is_on);

This is surely *board specific* code, should e done thru the callback in the platform data as pointed out by Kevin already.

[MA] I already took a look into DM646x USB patch thread and the discussion about the board specific issue, but Is there any agreement about the way to handle do this? Like use a usb_vbus_control in the board file.

There are still many board specific stuff inside USB DaVinci driver so that would be better if we will be able to follow a clear way to do this, and define what belongs to driver, SoC and board domains, so Is there any current work in this way to move the board specific stuff from driver to board file in a standard way?

   Hopefully so, by Swaminathan.

WBR, Sergei

_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to