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

Michal Simek michal.simek at xilinx.com
Mon Apr 11 14:09:22 CEST 2016


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?

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