Re: Sample DTS entries and sample user space code

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

 



Hi Lindsey,

On Tue, 28 Jul 2009 16:38:24 -0400, Lindsey Ings -X (ingsl - Yoh Services LLC at Cisco) wrote:
> 
> Since I can't use the DTS I'm now trying to instantiate the mux through
> other means.  I put the code below in
> ".../arch/powerpc/platforms/44x/myBoard.c".  Is this the intended
> instantiation?  I have 2 i2c busses on my SOC and I have 2 muxes (with 4
> ports each) on the second SOC bus.  Therefore, I'd want the first mux to
> have busses 2,3,4,5 and the second mux to have 6,7,8,9:
> 
> static struct pca954x_platform_mode pca954x_modes_mux0[] = {
> 	    {
> 	    	.adap_id        = 2,
> 	    },
> 	    {
> 	    	.adap_id        = 3,
> 	    },
> 	    {
> 	    	.adap_id        = 4,
> 	    },
> 	    {
> 	    	.adap_id        = 5,
> 	    },
> };
> 
> static struct pca954x_platform_mode pca954x_modes_mux1[] = {
> 	    {
> 	    	.adap_id        = 6,
> 	    },
> 	    {
> 	    	.adap_id        = 7,
> 	    },
> 	    {
> 	    	.adap_id        = 8,
> 	    },
> 	    {
> 	    	.adap_id        = 9,
> 	    },
> };
> 
> static struct pca954x_platform_data pca9544_data_mux0 = {
>     	.modes          = pca954x_modes_mux0,
>         .num_modes      = ARRAY_SIZE(pca954x_modes_mux0),
> };
> 
> static struct pca954x_platform_data pca9544_data_mux1 = {
>     	.modes          = pca954x_modes_mux1,
>         .num_modes      = ARRAY_SIZE(pca954x_modes_mux1),
> };
> 
> static struct i2c_board_info __initdata i2c_bus1_devices[] = {
>     {
>         /* I2C mux */
>         I2C_BOARD_INFO("pca9544", 0x70),
>         .platform_data = &pca9544_data_mux0,
>     },
>     {
>         /* I2C mux */
>         I2C_BOARD_INFO("pca9544", 0x71),
>         .platform_data = &pca9544_data_mux1,
>     },
> };

I don't know the pca954x driver (not yet in mainline), Rodolfo would be
a better reviewer, but the above at least looks reasonable to me. I am
a little surprised that you are able to force the adapters IDs for the
segments behind the muxes though, if you do not declare any device on
them, i2c-core will not reserve the IDs for static numbering.

> static int __init board_i2c_init(void)
> {
>     /* Register board i2c devices */   
>     i2c_register_board_info(0, i2c_bus1_devices,

This, OTOH, looks wrong. If the muxes are on your second SOC I2C bus,
the bus number would be 1, not 0.

>                 ARRAY_SIZE(i2c_bus1_devices));
> 
>     return 0;
> }
> arch_initcall(board_i2c_init);

-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux