]> git.dujemihanovic.xyz Git - u-boot.git/commit
mips: dts: Fix PIC32MZDA GPIO register definitions
authorJohn Robertson <john.robertson@simiatec.com>
Tue, 1 Sep 2020 18:02:13 +0000 (18:02 +0000)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Tue, 22 Sep 2020 22:14:28 +0000 (00:14 +0200)
commit81b543a4e61013fb87f5bdb526d815f1e014d0a4
tree6d7be1c11eb5d4ff754b3ceefb89be2afe672139
parent0723c2ddeb8a5446a4b32e7583461efe50d0fe6c
mips: dts: Fix PIC32MZDA GPIO register definitions

GPIO state cannot be changed via the device tree (e.g. with gpio-hog) or
using the 'gpio' command from the console.

The root cause is a discrepancy between the driver and the device tree:
the driver code expects an absolute I/O address in the <reg> property,
while the device tree defines the address relative to a declaration in
the parent pinctrl node.

Changing the device tree to fix a driver issue would normally be wrong,
however:
- I have run the first version of U-Boot in which this driver appears
  (v2016.03) and the same problem exists, so this is not a regression;
- There is no code that references a parent device tree node that might
  suggest the intent of the author was to parse the DT as it exists now;
- The equivalent Linux PIC32 GPIO driver also uses absolute addresses
  for the GPIO <reg> property. This change brings the U-Boot DT more
  into line with Linux.

Additionally, the data sheet (Microchip ref. 60001361H) shows that the
register set to control a GPIO bank spans 0xE0 bytes, but the device
tree specified size is only 0x48 bytes.

Signed-off-by: John Robertson <john.robertson@simiatec.com>
arch/mips/dts/pic32mzda.dtsi