Message ID | 55D2593A.5060400@tul.cz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Am Montag, den 17.08.2015, 23:59 +0200 schrieb Petr Cvek: > Add normal and power I2C definition to HTC Magician. What do you need i2c-gpio for? As I said before, I don't think this should be in mainline, rather the pxa-i2c driver should be used. > > /* > + * PXA I2C power controller > + */ > + > +static struct i2c_pxa_platform_data magician_i2c_power_info = { > + .fast_mode = 0, > + .use_pio = 0, > +}; [...] > @@ -975,7 +1009,7 @@ static void __init magician_init(void) > platform_add_devices(ARRAY_AND_SIZE(devices)); > > pxa_set_ficp_info(&magician_ficp_info); > - pxa27x_set_i2c_power_info(NULL); > + pxa27x_set_i2c_power_info(&magician_i2c_power_info); Does this actually have an effect? regards Philipp
Petr Cvek <petr.cvek@tul.cz> writes: > @@ -873,10 +875,39 @@ static struct platform_device strataflash = { > */ > > static struct i2c_pxa_platform_data i2c_info = { > - .fast_mode = 1, > + .fast_mode = 0, /* fast mode seems to be have bit errors */ > + .use_pio = 0, /* no polling */ This deserves a better commit message : why the switch out of fast_mode, what was not working, etc ... > +/* > + * GPIO I2C normal controller (alternative) > + */ > + > +static struct i2c_gpio_platform_data rtc_device_data = { > + .sda_pin = GPIO118_MAGICIAN_I2C_SDA, > + .scl_pin = GPIO117_MAGICIAN_I2C_SCL, > + .udelay = 100 > +}; > + > +static struct platform_device i2c_gpio_bus_alt = { > + .name = "i2c-gpio", > + .id = 0, > + .dev = { > + .platform_data = &rtc_device_data, rtc_device_data, really ? Can you add __initdata, I think i2c-gpio copies the data and doesn't use it anymore after ? Cheers.
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index fc1c035..702e8e0 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c @@ -72,6 +72,8 @@ #include <linux/regulator/machine.h> #include <linux/usb/gpio_vbus.h> #include <linux/i2c/pxa-i2c.h> +#include <linux/i2c-gpio.h> +#include <linux/i2c.h> #include <mach/hardware.h> #include <asm/mach-types.h> @@ -873,10 +875,39 @@ static struct platform_device strataflash = { */ static struct i2c_pxa_platform_data i2c_info = { - .fast_mode = 1, + .fast_mode = 0, /* fast mode seems to be have bit errors */ + .use_pio = 0, /* no polling */ }; /* + * PXA I2C power controller + */ + +static struct i2c_pxa_platform_data magician_i2c_power_info = { + .fast_mode = 0, + .use_pio = 0, +}; + +/* + * GPIO I2C normal controller (alternative) + */ + +static struct i2c_gpio_platform_data rtc_device_data = { + .sda_pin = GPIO118_MAGICIAN_I2C_SDA, + .scl_pin = GPIO117_MAGICIAN_I2C_SCL, + .udelay = 100 +}; + +static struct platform_device i2c_gpio_bus_alt = { + .name = "i2c-gpio", + .id = 0, + .dev = { + .platform_data = &rtc_device_data, + } +}; + + +/* * Touchscreen */ @@ -936,6 +967,9 @@ static struct platform_device *devices[] __initdata = { &power_supply, &strataflash, &leds_gpio, + + /* NOTICE mutually exclusive with PXA I2C */ + &i2c_gpio_bus_alt, }; /* @@ -975,7 +1009,7 @@ static void __init magician_init(void) platform_add_devices(ARRAY_AND_SIZE(devices)); pxa_set_ficp_info(&magician_ficp_info); - pxa27x_set_i2c_power_info(NULL); + pxa27x_set_i2c_power_info(&magician_i2c_power_info); pxa_set_i2c_info(&i2c_info); pxa_set_mci_info(&magician_mci_info); pxa_set_ohci_info(&magician_ohci_info);
Add normal and power I2C definition to HTC Magician. Signed-off-by: Petr Cvek <petr.cvek@tul.cz> --- arch/arm/mach-pxa/magician.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-)