[U-Boot] [PATCH] imx6: iomux: Add generic function to set RGMII IO voltage on IMX6 SoCs

This commit provides generic function to set the RGMII/HSIC IO voltage level on iMX6 devices.
Signed-off-by: Lukasz Majewski lukma@denx.de ---
arch/arm/include/asm/arch-mx6/iomux.h | 13 +++++++++++++ arch/arm/include/asm/arch-mx6/sys_proto.h | 11 +++++++++++ 2 files changed, 24 insertions(+)
diff --git a/arch/arm/include/asm/arch-mx6/iomux.h b/arch/arm/include/asm/arch-mx6/iomux.h index 907cb408ff..ee3a56583b 100644 --- a/arch/arm/include/asm/arch-mx6/iomux.h +++ b/arch/arm/include/asm/arch-mx6/iomux.h @@ -178,4 +178,17 @@ |IOMUXC_GPR13_SATA_PHY_3_MASK \ |IOMUXC_GPR13_SATA_PHY_2_MASK \ |IOMUXC_GPR13_SATA_PHY_1_MASK) + +/* + * Setup RGMII voltage levels on iMX6 SoC - the + * + * IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII - register + * + * 1P2V_IO - USB_HSIC, MIPI_HSI + * 1P5V_IO - ENET pins + */ +#define IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII 0x020e0790 +#define DDR_SEL_1P2V_IO (0x2 << 18) +#define DDR_SEL_1P5V_IO (0x3 << 18) + #endif /* __ASM_ARCH_IOMUX_H__ */ diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h index b22a7a0f8b..72ab7d814f 100644 --- a/arch/arm/include/asm/arch-mx6/sys_proto.h +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h @@ -6,6 +6,7 @@ */
#include <asm/mach-imx/sys_proto.h> +#include <asm/arch/iomux.h>
#define USBPHY_PWD 0x00000000
@@ -16,3 +17,13 @@
int imx6_pcie_toggle_power(void); int imx6_pcie_toggle_reset(void); + +/** + * iomuxc_set_rgmii_io_voltage - set voltage level of RGMII/USB pins + * + * @param io_vol - the voltage IO level of pins + */ +static inline void iomuxc_set_rgmii_io_voltage(int io_vol) +{ + __raw_writel(io_vol, IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII); +}

On 31/10/2017 13:26, Lukasz Majewski wrote:
This commit provides generic function to set the RGMII/HSIC IO voltage level on iMX6 devices.
Signed-off-by: Lukasz Majewski lukma@denx.de
arch/arm/include/asm/arch-mx6/iomux.h | 13 +++++++++++++ arch/arm/include/asm/arch-mx6/sys_proto.h | 11 +++++++++++ 2 files changed, 24 insertions(+)
diff --git a/arch/arm/include/asm/arch-mx6/iomux.h b/arch/arm/include/asm/arch-mx6/iomux.h index 907cb408ff..ee3a56583b 100644 --- a/arch/arm/include/asm/arch-mx6/iomux.h +++ b/arch/arm/include/asm/arch-mx6/iomux.h @@ -178,4 +178,17 @@ |IOMUXC_GPR13_SATA_PHY_3_MASK \ |IOMUXC_GPR13_SATA_PHY_2_MASK \ |IOMUXC_GPR13_SATA_PHY_1_MASK)
+/*
- Setup RGMII voltage levels on iMX6 SoC - the
- IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII - register
- 1P2V_IO - USB_HSIC, MIPI_HSI
- 1P5V_IO - ENET pins
- */
+#define IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII 0x020e0790 +#define DDR_SEL_1P2V_IO (0x2 << 18) +#define DDR_SEL_1P5V_IO (0x3 << 18)
#endif /* __ASM_ARCH_IOMUX_H__ */ diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h index b22a7a0f8b..72ab7d814f 100644 --- a/arch/arm/include/asm/arch-mx6/sys_proto.h +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h @@ -6,6 +6,7 @@ */
#include <asm/mach-imx/sys_proto.h> +#include <asm/arch/iomux.h>
#define USBPHY_PWD 0x00000000
@@ -16,3 +17,13 @@
int imx6_pcie_toggle_power(void); int imx6_pcie_toggle_reset(void);
+/**
- iomuxc_set_rgmii_io_voltage - set voltage level of RGMII/USB pins
- @param io_vol - the voltage IO level of pins
- */
+static inline void iomuxc_set_rgmii_io_voltage(int io_vol) +{
- __raw_writel(io_vol, IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII);
+}
Applied to u-boot-imx, -master, thanke !
Best regards, Stefano Babic

On 07/11/2017 10:23, Stefano Babic wrote:
On 31/10/2017 13:26, Lukasz Majewski wrote:
This commit provides generic function to set the RGMII/HSIC IO voltage level on iMX6 devices.
Signed-off-by: Lukasz Majewski lukma@denx.de
arch/arm/include/asm/arch-mx6/iomux.h | 13 +++++++++++++ arch/arm/include/asm/arch-mx6/sys_proto.h | 11 +++++++++++ 2 files changed, 24 insertions(+)
diff --git a/arch/arm/include/asm/arch-mx6/iomux.h b/arch/arm/include/asm/arch-mx6/iomux.h index 907cb408ff..ee3a56583b 100644 --- a/arch/arm/include/asm/arch-mx6/iomux.h +++ b/arch/arm/include/asm/arch-mx6/iomux.h @@ -178,4 +178,17 @@ |IOMUXC_GPR13_SATA_PHY_3_MASK \ |IOMUXC_GPR13_SATA_PHY_2_MASK \ |IOMUXC_GPR13_SATA_PHY_1_MASK)
+/*
- Setup RGMII voltage levels on iMX6 SoC - the
- IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII - register
- 1P2V_IO - USB_HSIC, MIPI_HSI
- 1P5V_IO - ENET pins
- */
+#define IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII 0x020e0790 +#define DDR_SEL_1P2V_IO (0x2 << 18) +#define DDR_SEL_1P5V_IO (0x3 << 18)
#endif /* __ASM_ARCH_IOMUX_H__ */ diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h index b22a7a0f8b..72ab7d814f 100644 --- a/arch/arm/include/asm/arch-mx6/sys_proto.h +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h @@ -6,6 +6,7 @@ */
#include <asm/mach-imx/sys_proto.h> +#include <asm/arch/iomux.h>
#define USBPHY_PWD 0x00000000
@@ -16,3 +17,13 @@
int imx6_pcie_toggle_power(void); int imx6_pcie_toggle_reset(void);
+/**
- iomuxc_set_rgmii_io_voltage - set voltage level of RGMII/USB pins
- @param io_vol - the voltage IO level of pins
- */
+static inline void iomuxc_set_rgmii_io_voltage(int io_vol) +{
- __raw_writel(io_vol, IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII);
+}
Applied to u-boot-imx, -master, thanke !
I was too optimistic. This breaks the "marsboard" board (same name for function). Can you review this and fix it, please ?
Thanks, Stefano

Hi Stefano,
On 07/11/2017 10:23, Stefano Babic wrote:
On 31/10/2017 13:26, Lukasz Majewski wrote:
This commit provides generic function to set the RGMII/HSIC IO voltage level on iMX6 devices.
Signed-off-by: Lukasz Majewski lukma@denx.de
arch/arm/include/asm/arch-mx6/iomux.h | 13 +++++++++++++ arch/arm/include/asm/arch-mx6/sys_proto.h | 11 +++++++++++ 2 files changed, 24 insertions(+)
diff --git a/arch/arm/include/asm/arch-mx6/iomux.h b/arch/arm/include/asm/arch-mx6/iomux.h index 907cb408ff..ee3a56583b 100644 --- a/arch/arm/include/asm/arch-mx6/iomux.h +++ b/arch/arm/include/asm/arch-mx6/iomux.h @@ -178,4 +178,17 @@ |IOMUXC_GPR13_SATA_PHY_3_MASK \ |IOMUXC_GPR13_SATA_PHY_2_MASK \ |IOMUXC_GPR13_SATA_PHY_1_MASK)
+/*
- Setup RGMII voltage levels on iMX6 SoC - the
- IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII - register
- 1P2V_IO - USB_HSIC, MIPI_HSI
- 1P5V_IO - ENET pins
- */
+#define IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII 0x020e0790 +#define DDR_SEL_1P2V_IO (0x2 << 18) +#define DDR_SEL_1P5V_IO (0x3 << 18)
#endif /* __ASM_ARCH_IOMUX_H__ */ diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h index b22a7a0f8b..72ab7d814f 100644 --- a/arch/arm/include/asm/arch-mx6/sys_proto.h +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h @@ -6,6 +6,7 @@ */
#include <asm/mach-imx/sys_proto.h> +#include <asm/arch/iomux.h>
#define USBPHY_PWD 0x00000000
@@ -16,3 +17,13 @@
int imx6_pcie_toggle_power(void); int imx6_pcie_toggle_reset(void);
+/**
- iomuxc_set_rgmii_io_voltage - set voltage level of RGMII/USB
pins
- @param io_vol - the voltage IO level of pins
- */
+static inline void iomuxc_set_rgmii_io_voltage(int io_vol) +{
- __raw_writel(io_vol,
IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE_RGMII); +}
Applied to u-boot-imx, -master, thanke !
I was too optimistic. This breaks the "marsboard" board (same name for function). Can you review this and fix it, please ?
I've just sent the fix for "marsboard" (double inclusion of sys_proto.h)
Thanks, Stefano
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de

The sys_proto.h file has been included earlier in this file.
Signed-off-by: Lukasz Majewski lukma@denx.de
---
board/embest/mx6boards/mx6boards.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/embest/mx6boards/mx6boards.c b/board/embest/mx6boards/mx6boards.c index ae04f68445..965e4f1ec8 100644 --- a/board/embest/mx6boards/mx6boards.c +++ b/board/embest/mx6boards/mx6boards.c @@ -36,7 +36,7 @@ #include <linux/fb.h> #include <ipu_pixfmt.h> #include <asm/io.h> -#include <asm/arch/sys_proto.h> + DECLARE_GLOBAL_DATA_PTR;
#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \

Hi Lukasz,
On 07/11/2017 11:10, Lukasz Majewski wrote:
The sys_proto.h file has been included earlier in this file.
Signed-off-by: Lukasz Majewski lukma@denx.de
board/embest/mx6boards/mx6boards.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/embest/mx6boards/mx6boards.c b/board/embest/mx6boards/mx6boards.c index ae04f68445..965e4f1ec8 100644 --- a/board/embest/mx6boards/mx6boards.c +++ b/board/embest/mx6boards/mx6boards.c @@ -36,7 +36,7 @@ #include <linux/fb.h> #include <ipu_pixfmt.h> #include <asm/io.h> -#include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
Thanks for fix - applied to u-boot-imx, -master !
I have reapplied support for display5, and I am testing the build again. If it is ok, I'll send as my last PR to Tom for 2017.11.
Best regards, Stefano

Hi Stefano,
Hi Lukasz,
On 07/11/2017 11:10, Lukasz Majewski wrote:
The sys_proto.h file has been included earlier in this file.
Signed-off-by: Lukasz Majewski lukma@denx.de
board/embest/mx6boards/mx6boards.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/embest/mx6boards/mx6boards.c b/board/embest/mx6boards/mx6boards.c index ae04f68445..965e4f1ec8 100644 --- a/board/embest/mx6boards/mx6boards.c +++ b/board/embest/mx6boards/mx6boards.c @@ -36,7 +36,7 @@ #include <linux/fb.h> #include <ipu_pixfmt.h> #include <asm/io.h> -#include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
Thanks for fix - applied to u-boot-imx, -master !
You are welcome :-)
I've also sent a commit, which adds #ifdef guards to sys_proto.h.
I have reapplied support for display5, and I am testing the build again. If it is ok, I'll send as my last PR to Tom for 2017.11.
Great, thanks :)
Best regards, Stefano
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de

On 09/11/2017 10:49, Lukasz Majewski wrote:
Hi Stefano,
Hi Lukasz,
On 07/11/2017 11:10, Lukasz Majewski wrote:
The sys_proto.h file has been included earlier in this file.
Signed-off-by: Lukasz Majewski lukma@denx.de
board/embest/mx6boards/mx6boards.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/embest/mx6boards/mx6boards.c b/board/embest/mx6boards/mx6boards.c index ae04f68445..965e4f1ec8 100644 --- a/board/embest/mx6boards/mx6boards.c +++ b/board/embest/mx6boards/mx6boards.c @@ -36,7 +36,7 @@ #include <linux/fb.h> #include <ipu_pixfmt.h> #include <asm/io.h> -#include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
Thanks for fix - applied to u-boot-imx, -master !
You are welcome :-)
I've also sent a commit, which adds #ifdef guards to sys_proto.h.
They are applied, too
Regards, Stefano
I have reapplied support for display5, and I am testing the build again. If it is ok, I'll send as my last PR to Tom for 2017.11.
Great, thanks :)
Best regards, Stefano
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
participants (2)
-
Lukasz Majewski
-
Stefano Babic