[U-Boot] [PATCH] dm: gpio: pca953x: introduce driver model support for pca953x

Peng Fan van.freenix at gmail.com
Tue Apr 12 03:22:51 CEST 2016


Hi Michal,
On Mon, Apr 11, 2016 at 02:09:22PM +0200, Michal Simek wrote:
>On 11.4.2016 07:47, Peng Fan wrote:
>> On Sat, Apr 09, 2016 at 12:33:34PM -0600, Simon Glass wrote:
>>> On 18 March 2016 at 03:54, Peng Fan <van.freenix at gmail.com> wrote:
>>>> Introduce a new driver that supports driver model for pca953x.
>>>> The pca953x chips are used as I2C I/O expanders.
>>>> This driver is designed to support the following chips:
>>>> "
>>>> 4 bits: pca9536, pca9537
>>>> 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554,
>>>>         pca9556, pca9557, pca9574, tca6408, xra1202
>>>> 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575,
>>>>          tca6416
>>>> 24 bits: tca6424
>>>> 40 bits: pca9505, pca9698
>>>> "
>>>> But for now this driver only supports max 24 bits and pca953x compatible
>>>> chips. pca957x compatible chips are not supported now.
>>>> These can be addressed when we need to add such support for the different
>>>> chips.
>>>> This driver has been tested on i.MX6 SoloX Sabreauto board with max7310
>>>> i2c expander using gpio command as following:
>>>>
>>>> =>gpio status -a
>>>> Bank gpio at 48:
>>>> gpio at 480: input: 1 [ ]
>>>> => gpio clear gpio at 480
>>>> gpio: pin gpio at 480 (gpio 224) value is 0
>>>> => gpio status -a
>>>> Bank gpio at 48:
>>>> gpio at 480: output: 0 [ ]
>>>
>>> Don't you think 480 is confusing? Perhaps you should have gpio at 48_ as
>>> the bank name? Also I think you should support a gpio-bank-name
>>> property in the node, to allow a sensible name to be provided.
>> 
>> 480 is added by gpio uclass driver I think.
>> The dts is copied from Linux side. I'd not change the dts, will try to
>> see how to introudce a sensible name here.
>
>What's the binding you are using?

I use 
"
	max7310_a: gpio at 30 {
		compatible = "maxim,max7310";
		reg = <0x30>;
		gpio-controller;
		#gpio-cells = <2>;
		resets = <&max7310_reset>;
	};

	max7310_b: gpio at 32 {
		compatible = "maxim,max7310";
		reg = <0x32>;
		gpio-controller;
		#gpio-cells = <2>;
		resets = <&max7310_reset>;
	};
"

Regards,
Peng.
>
>The part of this patch should be DT binding.
>
>This is my node.
>	tca6416_u61: gpio at 21 {
>		compatible = "ti,tca6416";
>		reg = <0x21>;
>		gpio-controller;
>		#gpio-cells = <2>;
>	};
>
>
>Thanks,
>Michal
>
>
>ZynqMP> i2c bus
>Bus 0:	i2c at ff020000
>   20: gpio at 20, offset len 1, flags 0
>   21: gpio at 21, offset len 1, flags 0
>   75: i2cswitch at 75, offset len 1, flags 0
>Bus 750:	i2c at 0
>Bus 751:	i2c at 1
>Bus 752:	i2c at 2
>Bus 1:	i2c at ff030000
>   74: i2cswitch at 74, offset len 1, flags 0
>   75: i2cswitch at 75, offset len 1, flags 0
>Bus 750:	i2c at 0
>Bus 751:	i2c at 1
>Bus 752:	i2c at 2
>Bus 1743:	i2c at 3
>Bus 1744:	i2c at 4
>Bus 750:	i2c at 0
>Bus 751:	i2c at 1
>Bus 752:	i2c at 2
>Bus 1743:	i2c at 3
>Bus 1744:	i2c at 4
>Bus 1755:	i2c at 5
>Bus 1756:	i2c at 6
>Bus 1757:	i2c at 7
>ZynqMP> gpio status -a
>__of_translate_address: Bad cell count for gpio at 20
>Command 'gpio' failed: Error -19
>ZynqMP> dm tree
> Class       Probed   Name
>----------------------------------------
> root        [ + ]    root_driver
> simple_bus  [   ]    |-- amba_apu
> simple_bus  [ + ]    `-- amba
> eth         [ + ]        |-- ethernet at ff0e0000
> i2c         [ + ]        |-- i2c at ff020000
> gpio        [   ]        |   |-- gpio at 20
> gpio        [   ]        |   |-- gpio at 21
> i2c_mux     [   ]        |   `-- i2cswitch at 75
> i2c         [   ]        |       |-- i2c at 0
> i2c         [   ]        |       |-- i2c at 1
> i2c         [   ]        |       `-- i2c at 2
> i2c         [   ]        |-- i2c at ff030000
> i2c_mux     [   ]        |   |-- i2cswitch at 74
> i2c         [   ]        |   |   |-- i2c at 0
> i2c         [   ]        |   |   |-- i2c at 1
> i2c         [   ]        |   |   |-- i2c at 2
> i2c         [   ]        |   |   |-- i2c at 3
> i2c         [   ]        |   |   `-- i2c at 4
> i2c_mux     [   ]        |   `-- i2cswitch at 75
> i2c         [   ]        |       |-- i2c at 0
> i2c         [   ]        |       |-- i2c at 1
> i2c         [   ]        |       |-- i2c at 2
> i2c         [   ]        |       |-- i2c at 3
> i2c         [   ]        |       |-- i2c at 4
> i2c         [   ]        |       |-- i2c at 5
> i2c         [   ]        |       |-- i2c at 6
> i2c         [   ]        |       `-- i2c at 7
> mmc         [ + ]        |-- sdhci at ff170000
> serial      [ + ]        |-- serial at ff000000
> serial      [   ]        `-- serial at ff010000
>


More information about the U-Boot mailing list