Re: [U-Boot] [PATCH 2/5] ARM: OMAP5: Add Pipe3 PHY driver
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
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
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
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
-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