RE: [PATCH 4/5] ARM: dts: imx6sx-sabreauto: add fec support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Anson Huang
Best Regards!


> -----Original Message-----
> From: Fabio Estevam [mailto:festevam@xxxxxxxxx]
> Sent: Friday, April 27, 2018 1:29 AM
> To: Anson Huang <anson.huang@xxxxxxx>
> Cc: Shawn Guo <shawnguo@xxxxxxxxxx>; Sascha Hauer
> <kernel@xxxxxxxxxxxxxx>; Fabio Estevam <fabio.estevam@xxxxxxx>; Rob
> Herring <robh+dt@xxxxxxxxxx>; Mark Rutland <mark.rutland@xxxxxxx>;
> dl-linux-imx <linux-imx@xxxxxxx>; moderated list:ARM/FREESCALE IMX / MXC
> ARM ARCHITECTURE <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>; open list:OPEN
> FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
> <devicetree@xxxxxxxxxxxxxxx>; linux-kernel <linux-kernel@xxxxxxxxxxxxxxx>;
> Andy Duan <fugang.duan@xxxxxxx>
> Subject: Re: [PATCH 4/5] ARM: dts: imx6sx-sabreauto: add fec support
> 
> On Thu, Apr 26, 2018 at 3:57 AM, Anson Huang <anson.huang@xxxxxxx>
> wrote:
> 
> > The 'phy-supply' is for enabling/disabling phy regulator, but here the
> > MAX7322 IO0 is NOT for enabling/disabling PHY regulator, it is for IO
> > voltage switch between 1.5V and 1.8V, our ENET IO can work with both 1.5V
> and 1.8V, so any config is OK for ENET function.
> 
> Thanks for the clarification.
> 
> > The 1.5V/1.8V selection is a one time setting thing, that means we
> > only need to config it once during boot up, most of i.MX platforms
> > does NOT provide such voltage switch function for ENET IO, on this 6SX
> > sabre auto board, it is more like a backup or validation purpose. With default
> settings, ENET's function is NOT impacted at all.
> >
> > I think we can add a gpio regulator for it and let the regulator
> > initialization set the GPIO Level for fec, such below, with "
> > enable-active-high " present, GPIO will be at LOW and voltage is 1.5V, without
> this property, GPIO will be HIGH and voltage will be 1.8V.
> > +               reg_fec: fec_io_supply {
> > +                       compatible = "regulator-gpio";
> > +                       regulator-name = "1.8V_1.5V_FEC";
> > +                       regulator-min-microvolt = <1500000>;
> > +                       regulator-max-microvolt = <1800000>;
> > +                       states = <1500000 0x0 1800000 0x1>;
> > +                       enable-gpio = <&max7322 0
> GPIO_ACTIVE_HIGH>;
> > +                       vin-supply = <&sw2_reg>;
> > +                       enable-active-high;
> 
> If there is no consumer for this regulator, the regulator API will disable it.
> 
> It seems you need a 'regulator-always-on;'.

GPIO regulator is slight different when regulator framework try to disable
those unused regulator in late phase, in _regulator_do_disable, the GPIO
regulator only got disabled when it is explicitly enabled before (ena_gpio_state
is set when regulator is enabled), but this reg_fec is NOT getting enabled, since
it only has voltage switch function. But I agree that we can anyway add 'regulator-always-on'
to avoid any confusion, will send out new patch, thanks!
 
         if (rdev->ena_pin) {
                 if (rdev->ena_gpio_state) {
                         ret = regulator_ena_gpio_ctrl(rdev, false);


Anson.

> 
> 
> > +               };
> > +
> >
> > Anson.
> >
��.n��������+%������w��{.n����z�{��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux