diff mbox series

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

Message ID 20171031122624.19026-1-lukma@denx.de
State Accepted
Commit ec1b26973cad9398104e740f96c36ef0a11d301d
Delegated to: Stefano Babic
Headers show
Series [U-Boot] imx6: iomux: Add generic function to set RGMII IO voltage on IMX6 SoCs | expand

Commit Message

Lukasz Majewski Oct. 31, 2017, 12:26 p.m. UTC
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(+)

Comments

Stefano Babic Nov. 7, 2017, 9:23 a.m. UTC | #1
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
Stefano Babic Nov. 7, 2017, 9:28 a.m. UTC | #2
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
Lukasz Majewski Nov. 7, 2017, 10:12 a.m. UTC | #3
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
diff mbox series

Patch

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);
+}