Skip to contentSkip to conversation

dt-bindings: gpio: 74x164: Introduce the 'registers-default' property

PATCH Superseded Fabio Estevam 1 participant 2 messages Dec 30, 2020

Subsystems (2)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 dt-bindings: gpio: 74x164: Introduce the 'registers-default' property

There are cases where a certain default output value in the 74x164 output is needed.

For example: the imx6ul-evk board has the Ethernet PHY reset controlled by the 74x164 chip.

After enabling the OE pin, the output pins of the 74x164 chip go to zero by default, which makes the Ethernet PHY not to be detected.

Add a new optional property called 'registers-default' that allows describing the default output value for each shift register.

---
 Documentation/devicetree/bindings/gpio/gpio-74x164.txt | 3 +++
 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/gpio/gpio-74x164.txt +3 -0
index 2a97553d8d76..bf8f45896018 100644
@@ -14,6 +14,8 @@ Required properties:
 
 Optional properties:
 - enable-gpios: GPIO connected to the OE (Output Enable) pin.
+- registers-default: An array of 8-bit values describing the default output
+value of each shift registers.
 
 Example:
 
@@ -24,4 +26,5 @@ gpio5: gpio5@0 {
 	#gpio-cells = <2>;
 	registers-number = <4>;
 	spi-max-frequency = <100000>;
+	registers-default = /bits/ 8 <0x57 0xF0 0xFF 0xF0>;
 };
Signature · 1 line
2.17.1
#1 lore raw

PATCH 2/2 gpio: 74x164: Introduce the 'registers-default' property

From: Sandor Yu <[email protected]>

On the imx7d-sdb board, there is one output pin of the 74x164 that controls all peripherals power supply (PERI_3V).

This pin should be at high voltage level when the 74x164 is probed, otherwise the modules dependent on PERI_3V3 will not be powered.

Add a new optional property called 'registers-default' that allows describing the default output value for each shift register.

---
 drivers/gpio/gpio-74x164.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/gpio/gpio-74x164.c +3 -0
index 05637d585152..4be51ee4d44c 100644
@@ -141,6 +141,9 @@ static int gen_74x164_probe(struct spi_device *spi)
 	chip->registers = nregs;
 	chip->gpio_chip.ngpio = GEN_74X164_NUMBER_GPIOS * chip->registers;
 
+	of_property_read_u8_array(spi->dev.of_node, "registers-default",
+				  chip->buffer, chip->registers);
+
 	chip->gpio_chip.can_sleep = true;
 	chip->gpio_chip.parent = &spi->dev;
 	chip->gpio_chip.owner = THIS_MODULE;
Signature · 1 line
2.17.1