Anson Huang Best Regards!
> -----Original Message----- > From: Fabio Estevam [mailto:[email protected]] > Sent: Friday, April 27, 2018 1:29 AM > To: Anson Huang <[email protected]> > Cc: Shawn Guo <[email protected]>; Sascha Hauer > <[email protected]>; Fabio Estevam <[email protected]>; Rob > Herring <[email protected]>; Mark Rutland <[email protected]>; > dl-linux-imx <[email protected]>; moderated list:ARM/FREESCALE IMX / MXC > ARM ARCHITECTURE <[email protected]>; open list:OPEN > FIRMWARE AND FLATTENED DEVICE TREE BINDINGS > <[email protected]>; linux-kernel <[email protected]>; > Andy Duan <[email protected]> > Subject: Re: [PATCH 4/5] ARM: dts: imx6sx-sabreauto: add fec support > > On Thu, Apr 26, 2018 at 3:57 AM, Anson Huang <[email protected]> > 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. > >

