Is a multiplexer using latches a gpio controller?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

we have a customer board here that uses two 8 port latches to drive
LEDs. The setup looks as follows:

CLK0 ----------------------.        ,--------.
CLK1 -------------------.  `--------|>    #0 |
                        |           |        |
IN0 -----------------+--|-----------|D0    Q0|-----|◁
IN1 ---------------+-|--|-----------|D1    Q1|-----|◁
IN2 -------------+-|-|--|-----------|D2    Q2|-----|◁
IN3 -----------+-|-|-|--|-----------|D3    Q3|-----|◁
IN4 ---------+-|-|-|-|--|-----------|D4    Q4|-----|◁
IN5 -------+-|-|-|-|-|--|-----------|D5    Q5|-----|◁
IN6 -----+-|-|-|-|-|-|--|-----------|D6    Q6|-----|◁
IN7 ---+-|-|-|-|-|-|-|--|-----------|D7    Q7|-----|◁
       | | | | | | | |  |           `--------'
       | | | | | | | |  |
       | | | | | | | |  |           ,--------.
       | | | | | | | |  `-----------|>    #1 |
       | | | | | | | |              |        |
       | | | | | | | `--------------|D0    Q0|-----|◁
       | | | | | | `----------------|D1    Q1|-----|◁
       | | | | | `------------------|D2    Q2|-----|◁
       | | | | `--------------------|D3    Q3|-----|◁
       | | | `----------------------|D4    Q4|-----|◁
       | | `------------------------|D5    Q5|-----|◁
       | `--------------------------|D6    Q6|-----|◁
       `----------------------------|D7    Q7|-----|◁
                                    `--------'


So to change output 2 of latch #1 you have to apply the changed level on
IN2, apply the previous level on the other inputs (to keep the other
outputs constant) and toggle CLK1 once.

This way you can drive 16 LEDs (or in general outputs) using only 10
GPIOs. (And with a higher number of latches the proportion becomes a bit
more useful.)

Actually this construct is a general GPO (no input :-) controller, and I
wonder if you would accept a driver that models it as a gpio controller.

The dt binding could look as follows:

latch-gpo {
	compatible = "latch-gpo";
	pinctrl-0 = <...>;
	pinctrl-names = <...>;

	clk-gpios = /* CLK0 */ <...>, /* CLK1 */ <...>;
	data-gpios = /* IN0 */ <...>, /* IN1 */ <...>, ...;
};

What do you think?

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux