Re: [U-Boot] [PATCH 2/5] ARM: OMAP5: Add Pipe3 PHY driver

2013-11-11 Thread Tom Rini
On Thu, Nov 07, 2013 at 02:23:32PM +0200, Roger Quadros wrote:
 On 11/06/2013 11:48 PM, Tom Rini wrote:
  -BEGIN PGP SIGNED MESSAGE-
  Hash: SHA1
  
  On 11/06/2013 09:47 AM, Roger Quadros wrote:
  Pipe3 PHY is used by SATA, USB3 and PCIe modules. This is
  a driver for the Pipe3 PHY.
 
  Signed-off-by: Roger Quadros rog...@ti.com
  [snip]
  +#define perror(fmt, args...) printf(%s:  fmt, __func__ , ##args)
  
  Please use the debug macro.
  
 But I want the message to be printed and not hidden if DEBUG is not defined.

Then just call printf please.  Or is this kernel-adapted code?

  [snip[
  +  perror(%s: No DPLL configuration for %u Hz SYS CLK\n,
  +  __func__, rate);
  
  Indent is wrong, we do like the kernel (and checkpatch.pl is in tools/
  and will catch these).  Thanks.
 
 you mean the function arguments '__func__' and 'rate' should be on the
 same line where perror is?

perror(\n,
   __func_, ...);

-- 
Tom


signature.asc
Description: Digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 2/5] ARM: OMAP5: Add Pipe3 PHY driver

2013-11-11 Thread Roger Quadros
On 11/11/2013 03:52 PM, Tom Rini wrote:
 On Thu, Nov 07, 2013 at 02:23:32PM +0200, Roger Quadros wrote:
 On 11/06/2013 11:48 PM, Tom Rini wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 On 11/06/2013 09:47 AM, Roger Quadros wrote:
 Pipe3 PHY is used by SATA, USB3 and PCIe modules. This is
 a driver for the Pipe3 PHY.

 Signed-off-by: Roger Quadros rog...@ti.com
 [snip]
 +#define perror(fmt, args...) printf(%s:  fmt, __func__ , ##args)

 Please use the debug macro.

 But I want the message to be printed and not hidden if DEBUG is not defined.
 
 Then just call printf please.  Or is this kernel-adapted code?

OK. No this isn't in the kernel.

 
 [snip[
 +  perror(%s: No DPLL configuration for %u Hz SYS CLK\n,
 +  __func__, rate);

 Indent is wrong, we do like the kernel (and checkpatch.pl is in tools/
 and will catch these).  Thanks.

 you mean the function arguments '__func__' and 'rate' should be on the
 same line where perror is?
 
 perror(\n,
__func_, ...);
 

OK. I'll wait some more time for comments on v2 before I send out a v3 with 
these changes.

cheers,
-roger
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 2/5] ARM: OMAP5: Add Pipe3 PHY driver

2013-11-07 Thread Roger Quadros
On 11/06/2013 11:48 PM, Tom Rini wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 On 11/06/2013 09:47 AM, Roger Quadros wrote:
 Pipe3 PHY is used by SATA, USB3 and PCIe modules. This is
 a driver for the Pipe3 PHY.

 Signed-off-by: Roger Quadros rog...@ti.com
 [snip]
 +#define perror(fmt, args...) printf(%s:  fmt, __func__ , ##args)
 
 Please use the debug macro.
 
But I want the message to be printed and not hidden if DEBUG is not defined.

 [snip[
 +perror(%s: No DPLL configuration for %u Hz SYS CLK\n,
 +__func__, rate);
 
 Indent is wrong, we do like the kernel (and checkpatch.pl is in tools/
 and will catch these).  Thanks.

you mean the function arguments '__func__' and 'rate' should be on the
same line where perror is?

cheers,
-roger
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 2/5] ARM: OMAP5: Add Pipe3 PHY driver

2013-11-06 Thread Roger Quadros
Pipe3 PHY is used by SATA, USB3 and PCIe modules. This is
a driver for the Pipe3 PHY.

Signed-off-by: Roger Quadros rog...@ti.com
---
 arch/arm/cpu/armv7/omap-common/Makefile|   4 +
 arch/arm/cpu/armv7/omap-common/pipe3-phy.c | 233 +
 arch/arm/cpu/armv7/omap-common/pipe3-phy.h |  36 +
 3 files changed, 273 insertions(+)
 create mode 100644 arch/arm/cpu/armv7/omap-common/pipe3-phy.c
 create mode 100644 arch/arm/cpu/armv7/omap-common/pipe3-phy.h

diff --git a/arch/arm/cpu/armv7/omap-common/Makefile 
b/arch/arm/cpu/armv7/omap-common/Makefile
index 75b3753..6e4a0f0 100644
--- a/arch/arm/cpu/armv7/omap-common/Makefile
+++ b/arch/arm/cpu/armv7/omap-common/Makefile
@@ -21,6 +21,10 @@ COBJS+= vc.o
 COBJS  += abb.o
 endif
 
+ifneq ($(CONFIG_OMAP54XX),)
+COBJS  += pipe3-phy.o
+endif
+
 ifeq ($(CONFIG_OMAP34XX),)
 COBJS  += boot-common.o
 SOBJS  += lowlevel_init.o
diff --git a/arch/arm/cpu/armv7/omap-common/pipe3-phy.c 
b/arch/arm/cpu/armv7/omap-common/pipe3-phy.c
new file mode 100644
index 000..2756bed
--- /dev/null
+++ b/arch/arm/cpu/armv7/omap-common/pipe3-phy.c
@@ -0,0 +1,233 @@
+/*
+ * TI PIPE3 PHY
+ *
+ * (C) Copyright 2013
+ * Texas Instruments, www.ti.com
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include common.h
+#include sata.h
+#include asm/arch/clock.h
+#include asm/arch/sys_proto.h
+#include asm/io.h
+#include asm/errno.h
+#include pipe3-phy.h
+
+/* PLLCTRL Registers */
+#define PLL_STATUS  0x0004
+#define PLL_GO  0x0008
+#define PLL_CONFIGURATION1  0x000C
+#define PLL_CONFIGURATION2  0x0010
+#define PLL_CONFIGURATION3  0x0014
+#define PLL_CONFIGURATION4  0x0020
+
+#define PLL_REGM_MASK   0x001FFE00
+#define PLL_REGM_SHIFT  9
+#define PLL_REGM_F_MASK 0x0003
+#define PLL_REGM_F_SHIFT0
+#define PLL_REGN_MASK   0x01FE
+#define PLL_REGN_SHIFT  1
+#define PLL_SELFREQDCO_MASK 0x000E
+#define PLL_SELFREQDCO_SHIFT1
+#define PLL_SD_MASK 0x0003FC00
+#define PLL_SD_SHIFT10
+#define SET_PLL_GO  0x1
+#define PLL_TICOPWDNBIT(16)
+#define PLL_LDOPWDN BIT(15)
+#define PLL_LOCK0x2
+#define PLL_IDLE0x1
+
+/* PHY POWER CONTROL Register */
+#define OMAP_CTRL_PIPE3_PHY_PWRCTL_CLK_CMD_MASK 0x003FC000
+#define OMAP_CTRL_PIPE3_PHY_PWRCTL_CLK_CMD_SHIFT0xE
+
+#define OMAP_CTRL_PIPE3_PHY_PWRCTL_CLK_FREQ_MASK0xFFC0
+#define OMAP_CTRL_PIPE3_PHY_PWRCTL_CLK_FREQ_SHIFT   0x16
+
+#define OMAP_CTRL_PIPE3_PHY_TX_RX_POWERON   0x3
+#define OMAP_CTRL_PIPE3_PHY_TX_RX_POWEROFF  0x0
+
+
+#define PLL_IDLE_TIME   100 /* in milliseconds */
+#define PLL_LOCK_TIME   100 /* in milliseconds */
+
+#define perror(fmt, args...) printf(%s:  fmt, __func__ , ##args)
+
+static inline u32 omap_pipe3_readl(void __iomem *addr, unsigned offset)
+{
+   return __raw_readl(addr + offset);
+}
+
+static inline void omap_pipe3_writel(void __iomem *addr, unsigned offset,
+   u32 data)
+{
+   __raw_writel(data, addr + offset);
+}
+
+static struct pipe3_dpll_params *omap_pipe3_get_dpll_params(struct omap_pipe3
+   *pipe3)
+{
+   u32 rate;
+   struct pipe3_dpll_map *dpll_map = pipe3-dpll_map;
+
+   rate = get_sys_clk_freq();
+
+   for (; dpll_map-rate; dpll_map++) {
+   if (rate == dpll_map-rate)
+   return dpll_map-params;
+   }
+
+   perror(%s: No DPLL configuration for %u Hz SYS CLK\n,
+   __func__, rate);
+   return NULL;
+}
+
+
+static int omap_pipe3_wait_lock(struct omap_pipe3 *phy)
+{
+   u32 val;
+   int timeout = PLL_LOCK_TIME;
+
+   do {
+   mdelay(1);
+   val = omap_pipe3_readl(phy-pll_ctrl_base, PLL_STATUS);
+   if (val  PLL_LOCK)
+   break;
+   } while (--timeout);
+
+   if (!(val  PLL_LOCK)) {
+   perror(%s: DPLL failed to lock\n, __func__);
+   return -EBUSY;
+   }
+
+   return 0;
+}
+
+static int omap_pipe3_dpll_program(struct omap_pipe3 *phy)
+{
+   u32 val;
+   struct pipe3_dpll_params *dpll_params;
+
+   dpll_params = omap_pipe3_get_dpll_params(phy);
+   if (!dpll_params) {
+   perror(%s: Invalid DPLL parameters\n, __func__);
+   return -EINVAL;
+   }
+
+   val = omap_pipe3_readl(phy-pll_ctrl_base, PLL_CONFIGURATION1);
+   val = ~PLL_REGN_MASK;
+   val |= dpll_params-n  PLL_REGN_SHIFT;
+   omap_pipe3_writel(phy-pll_ctrl_base, PLL_CONFIGURATION1, val);
+
+   val = omap_pipe3_readl(phy-pll_ctrl_base, PLL_CONFIGURATION2);
+   val = ~PLL_SELFREQDCO_MASK;
+   val |= dpll_params-freq  PLL_SELFREQDCO_SHIFT;
+   

Re: [U-Boot] [PATCH 2/5] ARM: OMAP5: Add Pipe3 PHY driver

2013-11-06 Thread Tom Rini
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 11/06/2013 09:47 AM, Roger Quadros wrote:
 Pipe3 PHY is used by SATA, USB3 and PCIe modules. This is
 a driver for the Pipe3 PHY.
 
 Signed-off-by: Roger Quadros rog...@ti.com
[snip]
 +#define perror(fmt, args...) printf(%s:  fmt, __func__ , ##args)

Please use the debug macro.

[snip[
 + perror(%s: No DPLL configuration for %u Hz SYS CLK\n,
 + __func__, rate);

Indent is wrong, we do like the kernel (and checkpatch.pl is in tools/
and will catch these).  Thanks.

Code itself seems fine tho, thanks.

- -- 
Tom
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJSerkvAAoJENk4IS6UOR1WoscQAJPuEI2msKOndDsaVdQcD8oQ
zy2H6hXl4o9FwZd9B6Q3xigjUcjJ9a/g8dBxEprB96pv+8s52R5QUfvP88kFrAJ7
Nq/Yb0EeHVNmsQoOAaFrmeYd6iJ+XFJv93G0bD1cSVTPoynnIl0kyeicN8rf2lNV
ZbU8qdxyYwxK3BaBMyh+jarCx+glXmDuQgcRMJ8t7KWOKKvOpiVzpksoZvoSucrN
gIKfxyPbvUSEFwx95oN0VfAvAhOzrnHF1ghp7CSnatVWuqGWpseqqIC0oosRe1ob
GFUOxWYK3jUIwE8KYgbcHl0Zie7jEWegYOlkOxurivRZS8AcOoi9IycJlTGGO/vX
REgdHSKm6O5NxHBW6X6rBrL44YuR0WnVKmBLVeGcGxqSfpgkXRG+6Pa8XBSmYDgU
k26tb2JXSkpUwMRu9omKn96nbaWAAo3IUnB/ErWuPjvhADRZcERYH1UdNnSY3BvW
PsgeUEL7j67/s9EHShwtPLBRN22CJVgefnV1oxBgK7I1IZkgiUS3EVN53Z/edFTw
XKR+sN8SRM9pAV4DzGVElK5njdoy11ez9Xc1cG7lenLJJv1MTCo1NVqG136NvldS
OURc8Hp0G92OBGUBts5gDDeJTgn1fEnfSizZZ9JJP8B2I7WXV41rzGvswHR12tgE
EP0V6CqWSWjeOoj9DFhS
=tTZq
-END PGP SIGNATURE-
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot