[PATCH 10/10] ARM: dts: Fix dm814x pinctrl address and mask
Tony Lindgren
tony at atomide.com
Wed Dec 2 08:09:56 PST 2015
* Tony Lindgren <tony at atomide.com> [151201 17:23]:
> * Matthijs van Duin <matthijsvanduin at gmail.com> [151201 17:15]:
> > On 2 December 2015 at 01:46, Tony Lindgren <tony at 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.
And here's an updated version of this patch.
Regards,
Tony
8< ----------------------------
From: Tony Lindgren <tony at atomide.com>
Date: Tue, 1 Dec 2015 15:04:38 -0800
Subject: [PATCH] ARM: dts: Fix dm814x pinctrl address and mask
Otherwise pinctrl won't work. Because of silicon errata for some dm814x
versions, let's also keep bit 18 out of the function-mask and rely on
the bootloader configuration for bit 18 as suggested by
Matthijs van Duin <matthijsvanduin at gmail.com>.
Devices with that need to use bit 18 can override the function-mask in
the board specific dts file if really needed.
Signed-off-by: Tony Lindgren <tony at atomide.com>
--- a/arch/arm/boot/dts/dm814x.dtsi
+++ b/arch/arm/boot/dts/dm814x.dtsi
@@ -205,13 +205,21 @@
};
};
+ /*
+ * Note that silicon revision 2.1 and older
+ * require input enabled (bit 18 set) for all
+ * 3.3V I/Os to avoid cumulative hardware damage.
+ * For more info, see errata advisory 2.1.87.
+ * We leave bit 18 out of function-mask and rely
+ * on the bootloader for it.
+ */
pincntl: pinmux at 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 = <0x307ff>;
};
};
More information about the linux-arm-kernel
mailing list