Message ID | 1449013103-23238-11-git-send-email-tony@atomide.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 2 December 2015 at 00:38, Tony Lindgren <tony@atomide.com> wrote: > - pinctrl-single,function-mask = <0x300ff>; > + pinctrl-single,function-mask = <0x707ff>; Reminder that silicon revision 2.1 and older require input enabled (bit 18 set) for all 3.3V I/Os to avoid cumulative hardware damage. (Errata advisory 2.1.87)
* Matthijs van Duin <matthijsvanduin@gmail.com> [151201 16:26]: > On 2 December 2015 at 00:38, Tony Lindgren <tony@atomide.com> wrote: > > - pinctrl-single,function-mask = <0x300ff>; > > + pinctrl-single,function-mask = <0x707ff>; > > Reminder that silicon revision 2.1 and older require input enabled > (bit 18 set) for all 3.3V I/Os to avoid cumulative hardware damage. > (Errata advisory 2.1.87) Ouch. We should probably have separate PIN_INPUT_3V3 and PIN_OUTPUT_3V3 dts macros that ensure that? Regards, Tony
On 2 December 2015 at 01:46, Tony Lindgren <tony@atomide.com> wrote: > Ouch. We should probably have separate PIN_INPUT_3V3 and PIN_OUTPUT_3V3 > dts macros that ensure that? Can't we just keep bit 18 out of the function mask? The bootloader should already have made sure all pins have bit 18 set (and bit 19 set to correct values after ROM mucked them up, see advisory 2.1.88), so all that needs to be done is avoid touching them. Are the power savings from disabling unnecessary inputs significant enough to spend any headache on it? Matthijs
On 2 December 2015 at 01:46, Tony Lindgren <tony@atomide.com> wrote: > We should probably have separate PIN_INPUT_3V3 and PIN_OUTPUT_3V3 > dts macros that ensure that? I'm in general no fan of such macros: it feels really awkward to have to make that distinction in dts when doing pin config. Note that if you're feeling really enthausiastic about putting in effort to allow inputs to be disabled while staying clear of the erratum, I think you can detect at runtime which I/O supplies are 3.3V by inspecting this register: #define CTRL_CQDETECT_STATUS 0x48140e00 Matthijs
* Matthijs van Duin <matthijsvanduin@gmail.com> [151201 17:15]: > On 2 December 2015 at 01:46, Tony Lindgren <tony@atomide.com> wrote: > > Ouch. We should probably have separate PIN_INPUT_3V3 and PIN_OUTPUT_3V3 > > dts macros that ensure that? > > Can't we just keep bit 18 out of the function mask? The bootloader > should already have made sure all pins have bit 18 set (and bit 19 set > to correct values after ROM mucked them up, see advisory 2.1.88), so > all that needs to be done is avoid touching them. Sounds good to me. And people who really want to override the mask can do it in the board specifc dts file. > Are the power savings from disabling unnecessary inputs significant > enough to spend any headache on it? Only for some battery powered devices, not in this case for sure. Regards,. Tony
* Matthijs van Duin <matthijsvanduin@gmail.com> [151201 17:23]: > On 2 December 2015 at 01:46, Tony Lindgren <tony@atomide.com> wrote: > > We should probably have separate PIN_INPUT_3V3 and PIN_OUTPUT_3V3 > > dts macros that ensure that? > > I'm in general no fan of such macros: it feels really awkward to have > to make that distinction in dts when doing pin config. > > Note that if you're feeling really enthausiastic about putting in > effort to allow inputs to be disabled while staying clear of the > erratum, I think you can detect at runtime which I/O supplies are 3.3V > by inspecting this register: > > #define CTRL_CQDETECT_STATUS 0x48140e00 OK and if really needed needed the SoC revision information can be passed to pinctrl-singl.c in it's platform_data that we already have in addition to the dts configuration. And then pinctrl-single.c could modify the mask based on IO voltage and SoC revision. I think we're already covered as the boards can override the pinctrl function-mask in the board specific dts file if really needed :) Regards, Tony
diff --git a/arch/arm/boot/dts/dm814x.dtsi b/arch/arm/boot/dts/dm814x.dtsi index 68b156b..7bd1961 100644 --- a/arch/arm/boot/dts/dm814x.dtsi +++ b/arch/arm/boot/dts/dm814x.dtsi @@ -207,11 +207,11 @@ pincntl: pinmux@800 { compatible = "pinctrl-single"; - reg = <0x800 0xc38>; + reg = <0x800 0x438>; #address-cells = <1>; #size-cells = <0>; pinctrl-single,register-width = <32>; - pinctrl-single,function-mask = <0x300ff>; + pinctrl-single,function-mask = <0x707ff>; }; };
Otherwise pinctrl won't work. Signed-off-by: Tony Lindgren <tony@atomide.com> --- arch/arm/boot/dts/dm814x.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)