Hi Stefano,

On 03/24/2012 01:19 AM, stefano babic wrote:
Am 24/03/2012 08:09, schrieb Dirk Behme:
Hi Stefano,

Hi Dirk,

On 13.03.2012 17:59, Eric Nelson wrote:
Signed-off-by: Eric Nelson<[email protected]>

Should this patch go into your u-boot-imx.git -next?

mmhh...in patchworks this is marked as "Changes requested" - I do not
remember now why, but I have a couple of open questions rereading the
patch...

Funny how that happens with time.

diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
index 1d09a72..5915159 100644
--- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
+++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c

>>> <snip>
>>>
+    u32 reg = 0;
+    s32 timeout = 100000;
+    struct imx_ccm_reg *const imx_ccm
+        = (struct imx_ccm_reg *) CCM_BASE_ADDR;
+    struct iomuxc_base_regs *const iomuxc_regs
+        = (struct iomuxc_base_regs *) IOMUXC_BASE_ADDR;
+
+    /* Enable sata clock */
+    reg = readl(&imx_ccm->CCGR5); /* CCGR5 */
+    reg |= MXC_CCM_CCGR5_CG2_MASK;
+    writel(reg,&imx_ccm->CCGR5);
+
+    /* Enable PLLs */
+    reg = readl(&imx_ccm->analog_pll_enet);
+    reg&= ~BM_ANADIG_PLL_SYS_POWERDOWN;
+    writel(reg,&imx_ccm->analog_pll_enet);
+    reg |= BM_ANADIG_PLL_SYS_ENABLE;
+    while (timeout--) {
+        if (readl(&imx_ccm->analog_pll_enet)&   BM_ANADIG_PLL_SYS_LOCK)
+            break;
+    }
+    if (timeout<= 0)
+        return -1;
+    reg&= ~BM_ANADIG_PLL_SYS_BYPASS;
+    writel(reg,&imx_ccm->analog_pll_enet);
+    reg |= BM_ANADIG_PLL_ENET_ENABLE_SATA;
+    writel(reg,&imx_ccm->analog_pll_enet);

Is it all this part really board specific or mx6 specific ? I would like
to split this part into a common and a board specific parts, and making
the common part available for other boards.


This is all generic MX6 SATA enablement and could be moved into
common code.

Is cpu/armv7/mx6/clock.c the right place?

How about routine named 'enable_sata_clock()'?

+
+    /* Enable sata phy */
+    reg = readl(&iomuxc_regs->gpr[13])
+&   (IOMUXC_GPR13_SDMA_STOP_REQ
+           |IOMUXC_GPR13_CAN2_STOP_REQ
+           |IOMUXC_GPR13_CAN1_STOP_REQ
+           |IOMUXC_GPR13_ENET_STOP_REQ);

Why do you need to touch CAN bits ?

Not touching them, just keeping them the way they are and
clearing out the rest (which are all SATA fields).

Perhaps this would be clearer:
        reg = readl(&iomuxc->gpr[13])
                & ~(IOMUXC_GPR13_SATA_PHY_8_MASK
                   |IOMUXC_GPR13_SATA_PHY_7_MASK
                   |IOMUXC_GPR13_SATA_PHY_6_MASK
                   |IOMUXC_GPR13_SATA_SPEED_MASK
                   |IOMUXC_GPR13_SATA_PHY_5_MASK
                   |IOMUXC_GPR13_SATA_PHY_4_MASK
                   |IOMUXC_GPR13_SATA_PHY_3_MASK
                   |IOMUXC_GPR13_SATA_PHY_2_MASK
                   |IOMUXC_GPR13_SATA_PHY_1_MASK);

Or better yet, maybe a macro in iomux-v3.h:

#define IOMUXC_GPR13_SATA_MASK (IOMUXC_GPR13_SATA_PHY_8_MASK \
                                |IOMUXC_GPR13_SATA_PHY_7_MASK \
                                |IOMUXC_GPR13_SATA_PHY_6_MASK \
                                |IOMUXC_GPR13_SATA_SPEED_MASK \
                                |IOMUXC_GPR13_SATA_PHY_5_MASK \
                                |IOMUXC_GPR13_SATA_PHY_4_MASK \
                                |IOMUXC_GPR13_SATA_PHY_3_MASK \
                                |IOMUXC_GPR13_SATA_PHY_2_MASK \
                                |IOMUXC_GPR13_SATA_PHY_1_MASK)

and this code in setup_sata():
        reg = readl(&iomuxc->gpr[13])
                & ~(IOMUXC_GPR13_SATA_MASK)

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to