* testers wanted: isp1301_omap conversion to new-style i2c driver
@ 2008-06-17 18:43 Jean Delvare
2008-08-07 16:34 ` Jean Delvare
0 siblings, 1 reply; 20+ messages in thread
From: Jean Delvare @ 2008-06-17 18:43 UTC (permalink / raw)
To: linux-omap; +Cc: Tony Lindgren, David Brownell, Linux I2C
[-- Attachment #1: Type: text/plain, Size: 381 bytes --]
Hi all,
I have converted the isp1301_omap driver to a new-style i2c driver. The
problem is that I don't have an OMAP system nor even an ARM compiler,
so I cannot test my work at all. So, I would appreciate if someone with
access to an OMAP system could test if the isp1301_omap driver still
builds and works fine after applying the two attached patches.
Thanks,
--
Jean Delvare
[-- Attachment #2: i2c-isp1301_omap-convert-to-new-style-part-1.patch --]
[-- Type: text/plain, Size: 7120 bytes --]
From: Felipe Balbi <me@felipebalbi.com>
Subject: i2c/isp1301_omap: Convert to a new-style i2c driver, part 1
Based on David Brownell's patch for tps65010, this patch
starts converting isp1301_omap.c to new-style i2c driver.
Signed-off-by: Felipe Balbi <me@felipebalbi.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
---
This needs testing! Both build-time and run-time.
drivers/i2c/chips/isp1301_omap.c | 59 +++++++++++++++++++-------------------
1 file changed, 30 insertions(+), 29 deletions(-)
--- linux-2.6.26-rc6.orig/drivers/i2c/chips/isp1301_omap.c 2008-05-04 09:49:48.000000000 +0200
+++ linux-2.6.26-rc6/drivers/i2c/chips/isp1301_omap.c 2008-06-17 16:07:46.000000000 +0200
@@ -49,7 +49,8 @@ MODULE_LICENSE("GPL");
struct isp1301 {
struct otg_transceiver otg;
- struct i2c_client client;
+ struct i2c_client *client;
+ struct i2c_client c;
void (*i2c_release)(struct device *dev);
int irq;
@@ -153,25 +154,25 @@ static struct i2c_driver isp1301_driver;
static inline u8
isp1301_get_u8(struct isp1301 *isp, u8 reg)
{
- return i2c_smbus_read_byte_data(&isp->client, reg + 0);
+ return i2c_smbus_read_byte_data(isp->client, reg + 0);
}
static inline int
isp1301_get_u16(struct isp1301 *isp, u8 reg)
{
- return i2c_smbus_read_word_data(&isp->client, reg);
+ return i2c_smbus_read_word_data(isp->client, reg);
}
static inline int
isp1301_set_bits(struct isp1301 *isp, u8 reg, u8 bits)
{
- return i2c_smbus_write_byte_data(&isp->client, reg + 0, bits);
+ return i2c_smbus_write_byte_data(isp->client, reg + 0, bits);
}
static inline int
isp1301_clear_bits(struct isp1301 *isp, u8 reg, u8 bits)
{
- return i2c_smbus_write_byte_data(&isp->client, reg + 1, bits);
+ return i2c_smbus_write_byte_data(isp->client, reg + 1, bits);
}
/*-------------------------------------------------------------------------*/
@@ -349,10 +350,10 @@ isp1301_defer_work(struct isp1301 *isp,
int status;
if (isp && !test_and_set_bit(work, &isp->todo)) {
- (void) get_device(&isp->client.dev);
+ (void) get_device(&isp->client->dev);
status = schedule_work(&isp->work);
if (!status && !isp->working)
- dev_vdbg(&isp->client.dev,
+ dev_vdbg(&isp->client->dev,
"work item %d may be lost\n", work);
}
}
@@ -1107,7 +1108,7 @@ isp1301_work(struct work_struct *work)
/* transfer state from otg engine to isp1301 */
if (test_and_clear_bit(WORK_UPDATE_ISP, &isp->todo)) {
otg_update_isp(isp);
- put_device(&isp->client.dev);
+ put_device(&isp->client->dev);
}
#endif
/* transfer state from isp1301 to otg engine */
@@ -1115,7 +1116,7 @@ isp1301_work(struct work_struct *work)
u8 stat = isp1301_clear_latch(isp);
isp_update_otg(isp, stat);
- put_device(&isp->client.dev);
+ put_device(&isp->client->dev);
}
if (test_and_clear_bit(WORK_HOST_RESUME, &isp->todo)) {
@@ -1150,7 +1151,7 @@ isp1301_work(struct work_struct *work)
}
host_resume(isp);
// mdelay(10);
- put_device(&isp->client.dev);
+ put_device(&isp->client->dev);
}
if (test_and_clear_bit(WORK_TIMER, &isp->todo)) {
@@ -1159,15 +1160,15 @@ isp1301_work(struct work_struct *work)
if (!stop)
mod_timer(&isp->timer, jiffies + TIMER_JIFFIES);
#endif
- put_device(&isp->client.dev);
+ put_device(&isp->client->dev);
}
if (isp->todo)
- dev_vdbg(&isp->client.dev,
+ dev_vdbg(&isp->client->dev,
"work done, todo = 0x%lx\n",
isp->todo);
if (stop) {
- dev_dbg(&isp->client.dev, "stop\n");
+ dev_dbg(&isp->client->dev, "stop\n");
break;
}
} while (isp->todo);
@@ -1191,7 +1192,7 @@ static void isp1301_release(struct devic
{
struct isp1301 *isp;
- isp = container_of(dev, struct isp1301, client.dev);
+ isp = device_get_drvdata(dev);
/* ugly -- i2c hijacks our memory hook to wait_for_completion() */
if (isp->i2c_release)
@@ -1205,7 +1206,7 @@ static int isp1301_detach_client(struct
{
struct isp1301 *isp;
- isp = container_of(i2c, struct isp1301, client);
+ isp = i2c_get_clientdata(i2c);
isp1301_clear_bits(isp, ISP1301_INTERRUPT_FALLING, ~0);
isp1301_clear_bits(isp, ISP1301_INTERRUPT_RISING, ~0);
@@ -1257,7 +1258,7 @@ static int isp1301_otg_enable(struct isp
isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING,
INTR_VBUS_VLD | INTR_SESS_VLD | INTR_ID_GND);
- dev_info(&isp->client.dev, "ready for dual-role USB ...\n");
+ dev_info(&isp->client->dev, "ready for dual-role USB ...\n");
return 0;
}
@@ -1282,7 +1283,7 @@ isp1301_set_host(struct otg_transceiver
#ifdef CONFIG_USB_OTG
isp->otg.host = host;
- dev_dbg(&isp->client.dev, "registered host\n");
+ dev_dbg(&isp->client->dev, "registered host\n");
host_suspend(isp);
if (isp->otg.gadget)
return isp1301_otg_enable(isp);
@@ -1297,7 +1298,7 @@ isp1301_set_host(struct otg_transceiver
if (machine_is_omap_h2())
isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0);
- dev_info(&isp->client.dev, "A-Host sessions ok\n");
+ dev_info(&isp->client->dev, "A-Host sessions ok\n");
isp1301_set_bits(isp, ISP1301_INTERRUPT_RISING,
INTR_ID_GND);
isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING,
@@ -1315,7 +1316,7 @@ isp1301_set_host(struct otg_transceiver
return 0;
#else
- dev_dbg(&isp->client.dev, "host sessions not allowed\n");
+ dev_dbg(&isp->client->dev, "host sessions not allowed\n");
return -EINVAL;
#endif
@@ -1341,7 +1342,7 @@ isp1301_set_peripheral(struct otg_transc
#ifdef CONFIG_USB_OTG
isp->otg.gadget = gadget;
- dev_dbg(&isp->client.dev, "registered gadget\n");
+ dev_dbg(&isp->client->dev, "registered gadget\n");
/* gadget driver may be suspended until vbus_connect () */
if (isp->otg.host)
return isp1301_otg_enable(isp);
@@ -1364,7 +1365,7 @@ isp1301_set_peripheral(struct otg_transc
INTR_SESS_VLD);
isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING,
INTR_VBUS_VLD);
- dev_info(&isp->client.dev, "B-Peripheral sessions ok\n");
+ dev_info(&isp->client->dev, "B-Peripheral sessions ok\n");
dump_regs(isp, __func__);
/* If this has a Mini-AB connector, this mode is highly
@@ -1377,7 +1378,7 @@ isp1301_set_peripheral(struct otg_transc
return 0;
#else
- dev_dbg(&isp->client.dev, "peripheral sessions not allowed\n");
+ dev_dbg(&isp->client->dev, "peripheral sessions not allowed\n");
return -EINVAL;
#endif
}
@@ -1493,12 +1494,12 @@ static int isp1301_probe(struct i2c_adap
isp->timer.data = (unsigned long) isp;
isp->irq = -1;
- isp->client.addr = address;
- i2c_set_clientdata(&isp->client, isp);
- isp->client.adapter = bus;
- isp->client.driver = &isp1301_driver;
- strlcpy(isp->client.name, DRIVER_NAME, I2C_NAME_SIZE);
- i2c = &isp->client;
+ isp->c.addr = address;
+ i2c_set_clientdata(&isp->c, isp);
+ isp->c.adapter = bus;
+ isp->c.driver = &isp1301_driver;
+ strlcpy(isp->c.name, DRIVER_NAME, I2C_NAME_SIZE);
+ isp->client = i2c = &isp->c;
/* if this is a true probe, verify the chip ... */
if (kind < 0) {
@@ -1583,7 +1584,7 @@ fail2:
goto fail1;
}
- isp->otg.dev = &isp->client.dev;
+ isp->otg.dev = &isp->client->dev;
isp->otg.label = DRIVER_NAME;
isp->otg.set_host = isp1301_set_host,
[-- Attachment #3: i2c-isp1301_omap-convert-to-new-style-part-2.patch --]
[-- Type: text/plain, Size: 7508 bytes --]
From: Jean Delvare <khali@linux-fr.org>
Subject: i2c/isp1301_omap: Convert to a new-style i2c driver, part 2
Based on David Brownell's patch for tps65010 and previous work by
Felipe Balbi, this patch finishes conversting isp1301_omap to a
new-style i2c driver.
There's definitely room for further drivers cleanups, but these are
out of the scope of this patch.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
---
This needs testing! Both build-time and run-time.
arch/arm/mach-omap1/board-h3.c | 4 +
arch/arm/mach-omap2/board-h4.c | 11 ++++
drivers/i2c/chips/isp1301_omap.c | 98 ++++++++++++--------------------------
3 files changed, 48 insertions(+), 65 deletions(-)
--- linux-2.6.26-rc6.orig/arch/arm/mach-omap1/board-h3.c 2008-06-17 16:07:25.000000000 +0200
+++ linux-2.6.26-rc6/arch/arm/mach-omap1/board-h3.c 2008-06-17 16:07:54.000000000 +0200
@@ -476,6 +476,10 @@ static struct i2c_board_info __initdata
I2C_BOARD_INFO("tps65013", 0x48),
/* .irq = OMAP_GPIO_IRQ(??), */
},
+ {
+ I2C_BOARD_INFO("isp1301_omap", 0x2d),
+ .irq = OMAP_GPIO_IRQ(14),
+ },
};
static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
--- linux-2.6.26-rc6.orig/arch/arm/mach-omap2/board-h4.c 2008-06-17 16:07:25.000000000 +0200
+++ linux-2.6.26-rc6/arch/arm/mach-omap2/board-h4.c 2008-06-17 16:07:54.000000000 +0200
@@ -18,6 +18,7 @@
#include <linux/mtd/partitions.h>
#include <linux/delay.h>
#include <linux/workqueue.h>
+#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/err.h>
#include <linux/clk.h>
@@ -392,6 +393,13 @@ static struct omap_board_config_kernel h
{ OMAP_TAG_LCD, &h4_lcd_config },
};
+static struct i2c_board_info __initdata h4_i2c_board_info[] = {
+ {
+ I2C_BOARD_INFO("isp1301_omap", 0x2d),
+ .irq = OMAP_GPIO_IRQ(125),
+ },
+};
+
static void __init omap_h4_init(void)
{
/*
@@ -412,6 +420,9 @@ static void __init omap_h4_init(void)
}
#endif
+ i2c_register_board_info(1, h4_i2c_board_info,
+ ARRAY_SIZE(h4_i2c_board_info));
+
platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices));
omap_board_config = h4_config;
omap_board_config_size = ARRAY_SIZE(h4_config);
--- linux-2.6.26-rc6.orig/drivers/i2c/chips/isp1301_omap.c 2008-06-17 16:07:46.000000000 +0200
+++ linux-2.6.26-rc6/drivers/i2c/chips/isp1301_omap.c 2008-06-17 16:19:55.000000000 +0200
@@ -50,10 +50,8 @@ MODULE_LICENSE("GPL");
struct isp1301 {
struct otg_transceiver otg;
struct i2c_client *client;
- struct i2c_client c;
void (*i2c_release)(struct device *dev);
- int irq;
int irq_type;
u32 last_otg_ctrl;
@@ -139,14 +137,6 @@ static inline void notresponding(struct
/*-------------------------------------------------------------------------*/
-/* only two addresses possible */
-#define ISP_BASE 0x2c
-static unsigned short normal_i2c[] = {
- ISP_BASE, ISP_BASE + 1,
- I2C_CLIENT_END };
-
-I2C_CLIENT_INSMOD;
-
static struct i2c_driver isp1301_driver;
/* smbus apis are used for portability */
@@ -1202,7 +1192,7 @@ static void isp1301_release(struct devic
static struct isp1301 *the_transceiver;
-static int isp1301_detach_client(struct i2c_client *i2c)
+static int __exit isp1301_remove(struct i2c_client *i2c)
{
struct isp1301 *isp;
@@ -1210,7 +1200,7 @@ static int isp1301_detach_client(struct
isp1301_clear_bits(isp, ISP1301_INTERRUPT_FALLING, ~0);
isp1301_clear_bits(isp, ISP1301_INTERRUPT_RISING, ~0);
- free_irq(isp->irq, isp);
+ free_irq(i2c->irq, isp);
#ifdef CONFIG_USB_OTG
otg_unbind(isp);
#endif
@@ -1225,7 +1215,7 @@ static int isp1301_detach_client(struct
put_device(&i2c->dev);
the_transceiver = 0;
- return i2c_detach_client(i2c);
+ return 0;
}
/*-------------------------------------------------------------------------*/
@@ -1474,12 +1464,10 @@ isp1301_start_hnp(struct otg_transceiver
/*-------------------------------------------------------------------------*/
-/* no error returns, they'd just make bus scanning stop */
-static int isp1301_probe(struct i2c_adapter *bus, int address, int kind)
+static int __init isp1301_probe(struct i2c_client *i2c)
{
int status;
struct isp1301 *isp;
- struct i2c_client *i2c;
if (the_transceiver)
return 0;
@@ -1493,37 +1481,19 @@ static int isp1301_probe(struct i2c_adap
isp->timer.function = isp1301_timer;
isp->timer.data = (unsigned long) isp;
- isp->irq = -1;
- isp->c.addr = address;
- i2c_set_clientdata(&isp->c, isp);
- isp->c.adapter = bus;
- isp->c.driver = &isp1301_driver;
- strlcpy(isp->c.name, DRIVER_NAME, I2C_NAME_SIZE);
- isp->client = i2c = &isp->c;
-
- /* if this is a true probe, verify the chip ... */
- if (kind < 0) {
- status = isp1301_get_u16(isp, ISP1301_VENDOR_ID);
- if (status != I2C_VENDOR_ID_PHILIPS) {
- dev_dbg(&bus->dev, "addr %d not philips id: %d\n",
- address, status);
- goto fail1;
- }
- status = isp1301_get_u16(isp, ISP1301_PRODUCT_ID);
- if (status != I2C_PRODUCT_ID_PHILIPS_1301) {
- dev_dbg(&bus->dev, "%d not isp1301, %d\n",
- address, status);
- goto fail1;
- }
- }
+ i2c_set_clientdata(i2c, isp);
+ isp->client = i2c;
- status = i2c_attach_client(i2c);
- if (status < 0) {
- dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n",
- DRIVER_NAME, address, status);
-fail1:
- kfree(isp);
- return 0;
+ /* verify the chip (shouldn't be necesary) */
+ status = isp1301_get_u16(isp, ISP1301_VENDOR_ID);
+ if (status != I2C_VENDOR_ID_PHILIPS) {
+ dev_dbg(&i2c->dev, "not philips id: %d\n", status);
+ goto fail;
+ }
+ status = isp1301_get_u16(isp, ISP1301_PRODUCT_ID);
+ if (status != I2C_PRODUCT_ID_PHILIPS_1301) {
+ dev_dbg(&i2c->dev, "not isp1301, %d\n", status);
+ goto fail;
}
isp->i2c_release = i2c->dev.release;
i2c->dev.release = isp1301_release;
@@ -1552,7 +1522,7 @@ fail1:
status = otg_bind(isp);
if (status < 0) {
dev_dbg(&i2c->dev, "can't bind OTG\n");
- goto fail2;
+ goto fail;
}
#endif
@@ -1565,26 +1535,21 @@ fail1:
/* IRQ wired at M14 */
omap_cfg_reg(M14_1510_GPIO2);
- isp->irq = OMAP_GPIO_IRQ(2);
if (gpio_request(2, "isp1301") == 0)
gpio_direction_input(2);
isp->irq_type = IRQF_TRIGGER_FALLING;
}
isp->irq_type |= IRQF_SAMPLE_RANDOM;
- status = request_irq(isp->irq, isp1301_irq,
+ status = request_irq(i2c->irq, isp1301_irq,
isp->irq_type, DRIVER_NAME, isp);
if (status < 0) {
dev_dbg(&i2c->dev, "can't get IRQ %d, err %d\n",
- isp->irq, status);
-#ifdef CONFIG_USB_OTG
-fail2:
-#endif
- i2c_detach_client(i2c);
- goto fail1;
+ i2c->irq, status);
+ goto fail;
}
- isp->otg.dev = &isp->client->dev;
+ isp->otg.dev = &i2c->dev;
isp->otg.label = DRIVER_NAME;
isp->otg.set_host = isp1301_set_host,
@@ -1615,22 +1580,25 @@ fail2:
status);
return 0;
-}
-static int isp1301_scan_bus(struct i2c_adapter *bus)
-{
- if (!i2c_check_functionality(bus, I2C_FUNC_SMBUS_BYTE_DATA
- | I2C_FUNC_SMBUS_READ_WORD_DATA))
- return -EINVAL;
- return i2c_probe(bus, &addr_data, isp1301_probe);
+fail:
+ kfree(isp);
+ return -ENODEV;
}
+static struct i2c_device_id isp1301_id[] = {
+ { "isp1301_omap", 0 },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, isp1301_id);
+
static struct i2c_driver isp1301_driver = {
.driver = {
.name = "isp1301_omap",
},
- .attach_adapter = isp1301_scan_bus,
- .detach_client = isp1301_detach_client,
+ .probe = isp1301_probe,
+ .remove = __exit_p(isp1301_remove),
+ .id_table = isp1301_id,
};
/*-------------------------------------------------------------------------*/
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-06-17 18:43 testers wanted: isp1301_omap conversion to new-style i2c driver Jean Delvare @ 2008-08-07 16:34 ` Jean Delvare 2008-08-07 23:51 ` David Brownell 0 siblings, 1 reply; 20+ messages in thread From: Jean Delvare @ 2008-08-07 16:34 UTC (permalink / raw) To: linux-arm-kernel, linux-omap; +Cc: David Brownell, Deepak Saxena [-- Attachment #1: Type: text/plain, Size: 849 bytes --] On Tue, 17 Jun 2008 20:43:00 +0200, Jean Delvare wrote: > Hi all, > > I have converted the isp1301_omap driver to a new-style i2c driver. The > problem is that I don't have an OMAP system nor even an ARM compiler, > so I cannot test my work at all. So, I would appreciate if someone with > access to an OMAP system could test if the isp1301_omap driver still > builds and works fine after applying the two attached patches. Still no testers for these patches? These will have to go upstream at some point, as legacy i2c client support will be deprecated and ultimately dropped. The earlier the better. I would really prefer these patches to get some testing before I push them upstream, but if I can't get any feedback within a reasonable time frame, I guess I will have to just push them anyway and hope nothing breaks. Thanks, -- Jean Delvare [-- Attachment #2: i2c-isp1301_omap-convert-to-new-style-part-1.patch --] [-- Type: text/x-patch, Size: 7120 bytes --] From: Felipe Balbi <me@felipebalbi.com> Subject: i2c/isp1301_omap: Convert to a new-style i2c driver, part 1 Based on David Brownell's patch for tps65010, this patch starts converting isp1301_omap.c to new-style i2c driver. Signed-off-by: Felipe Balbi <me@felipebalbi.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> --- This needs testing! Both build-time and run-time. drivers/i2c/chips/isp1301_omap.c | 59 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 29 deletions(-) --- linux-2.6.27-rc0.orig/drivers/i2c/chips/isp1301_omap.c 2008-07-15 22:05:08.000000000 +0200 +++ linux-2.6.27-rc0/drivers/i2c/chips/isp1301_omap.c 2008-07-15 23:15:34.000000000 +0200 @@ -49,7 +49,8 @@ MODULE_LICENSE("GPL"); struct isp1301 { struct otg_transceiver otg; - struct i2c_client client; + struct i2c_client *client; + struct i2c_client c; void (*i2c_release)(struct device *dev); int irq; @@ -153,25 +154,25 @@ static struct i2c_driver isp1301_driver; static inline u8 isp1301_get_u8(struct isp1301 *isp, u8 reg) { - return i2c_smbus_read_byte_data(&isp->client, reg + 0); + return i2c_smbus_read_byte_data(isp->client, reg + 0); } static inline int isp1301_get_u16(struct isp1301 *isp, u8 reg) { - return i2c_smbus_read_word_data(&isp->client, reg); + return i2c_smbus_read_word_data(isp->client, reg); } static inline int isp1301_set_bits(struct isp1301 *isp, u8 reg, u8 bits) { - return i2c_smbus_write_byte_data(&isp->client, reg + 0, bits); + return i2c_smbus_write_byte_data(isp->client, reg + 0, bits); } static inline int isp1301_clear_bits(struct isp1301 *isp, u8 reg, u8 bits) { - return i2c_smbus_write_byte_data(&isp->client, reg + 1, bits); + return i2c_smbus_write_byte_data(isp->client, reg + 1, bits); } /*-------------------------------------------------------------------------*/ @@ -349,10 +350,10 @@ isp1301_defer_work(struct isp1301 *isp, int status; if (isp && !test_and_set_bit(work, &isp->todo)) { - (void) get_device(&isp->client.dev); + (void) get_device(&isp->client->dev); status = schedule_work(&isp->work); if (!status && !isp->working) - dev_vdbg(&isp->client.dev, + dev_vdbg(&isp->client->dev, "work item %d may be lost\n", work); } } @@ -1135,7 +1136,7 @@ isp1301_work(struct work_struct *work) /* transfer state from otg engine to isp1301 */ if (test_and_clear_bit(WORK_UPDATE_ISP, &isp->todo)) { otg_update_isp(isp); - put_device(&isp->client.dev); + put_device(&isp->client->dev); } #endif /* transfer state from isp1301 to otg engine */ @@ -1143,7 +1144,7 @@ isp1301_work(struct work_struct *work) u8 stat = isp1301_clear_latch(isp); isp_update_otg(isp, stat); - put_device(&isp->client.dev); + put_device(&isp->client->dev); } if (test_and_clear_bit(WORK_HOST_RESUME, &isp->todo)) { @@ -1178,7 +1179,7 @@ isp1301_work(struct work_struct *work) } host_resume(isp); // mdelay(10); - put_device(&isp->client.dev); + put_device(&isp->client->dev); } if (test_and_clear_bit(WORK_TIMER, &isp->todo)) { @@ -1187,15 +1188,15 @@ isp1301_work(struct work_struct *work) if (!stop) mod_timer(&isp->timer, jiffies + TIMER_JIFFIES); #endif - put_device(&isp->client.dev); + put_device(&isp->client->dev); } if (isp->todo) - dev_vdbg(&isp->client.dev, + dev_vdbg(&isp->client->dev, "work done, todo = 0x%lx\n", isp->todo); if (stop) { - dev_dbg(&isp->client.dev, "stop\n"); + dev_dbg(&isp->client->dev, "stop\n"); break; } } while (isp->todo); @@ -1219,7 +1220,7 @@ static void isp1301_release(struct devic { struct isp1301 *isp; - isp = container_of(dev, struct isp1301, client.dev); + isp = device_get_drvdata(dev); /* ugly -- i2c hijacks our memory hook to wait_for_completion() */ if (isp->i2c_release) @@ -1233,7 +1234,7 @@ static int isp1301_detach_client(struct { struct isp1301 *isp; - isp = container_of(i2c, struct isp1301, client); + isp = i2c_get_clientdata(i2c); isp1301_clear_bits(isp, ISP1301_INTERRUPT_FALLING, ~0); isp1301_clear_bits(isp, ISP1301_INTERRUPT_RISING, ~0); @@ -1285,7 +1286,7 @@ static int isp1301_otg_enable(struct isp isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING, INTR_VBUS_VLD | INTR_SESS_VLD | INTR_ID_GND); - dev_info(&isp->client.dev, "ready for dual-role USB ...\n"); + dev_info(&isp->client->dev, "ready for dual-role USB ...\n"); return 0; } @@ -1310,7 +1311,7 @@ isp1301_set_host(struct otg_transceiver #ifdef CONFIG_USB_OTG isp->otg.host = host; - dev_dbg(&isp->client.dev, "registered host\n"); + dev_dbg(&isp->client->dev, "registered host\n"); host_suspend(isp); if (isp->otg.gadget) return isp1301_otg_enable(isp); @@ -1325,7 +1326,7 @@ isp1301_set_host(struct otg_transceiver if (machine_is_omap_h2()) isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0); - dev_info(&isp->client.dev, "A-Host sessions ok\n"); + dev_info(&isp->client->dev, "A-Host sessions ok\n"); isp1301_set_bits(isp, ISP1301_INTERRUPT_RISING, INTR_ID_GND); isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING, @@ -1343,7 +1344,7 @@ isp1301_set_host(struct otg_transceiver return 0; #else - dev_dbg(&isp->client.dev, "host sessions not allowed\n"); + dev_dbg(&isp->client->dev, "host sessions not allowed\n"); return -EINVAL; #endif @@ -1370,7 +1371,7 @@ isp1301_set_peripheral(struct otg_transc #ifdef CONFIG_USB_OTG isp->otg.gadget = gadget; - dev_dbg(&isp->client.dev, "registered gadget\n"); + dev_dbg(&isp->client->dev, "registered gadget\n"); /* gadget driver may be suspended until vbus_connect () */ if (isp->otg.host) return isp1301_otg_enable(isp); @@ -1395,7 +1396,7 @@ isp1301_set_peripheral(struct otg_transc INTR_SESS_VLD); isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING, INTR_VBUS_VLD); - dev_info(&isp->client.dev, "B-Peripheral sessions ok\n"); + dev_info(&isp->client->dev, "B-Peripheral sessions ok\n"); dump_regs(isp, __func__); /* If this has a Mini-AB connector, this mode is highly @@ -1408,7 +1409,7 @@ isp1301_set_peripheral(struct otg_transc return 0; #else - dev_dbg(&isp->client.dev, "peripheral sessions not allowed\n"); + dev_dbg(&isp->client->dev, "peripheral sessions not allowed\n"); return -EINVAL; #endif } @@ -1528,12 +1529,12 @@ static int isp1301_probe(struct i2c_adap isp->timer.data = (unsigned long) isp; isp->irq = -1; - isp->client.addr = address; - i2c_set_clientdata(&isp->client, isp); - isp->client.adapter = bus; - isp->client.driver = &isp1301_driver; - strlcpy(isp->client.name, DRIVER_NAME, I2C_NAME_SIZE); - i2c = &isp->client; + isp->c.addr = address; + i2c_set_clientdata(&isp->c, isp); + isp->c.adapter = bus; + isp->c.driver = &isp1301_driver; + strlcpy(isp->c.name, DRIVER_NAME, I2C_NAME_SIZE); + isp->client = i2c = &isp->c; /* if this is a true probe, verify the chip ... */ if (kind < 0) { @@ -1618,7 +1619,7 @@ fail2: goto fail1; } - isp->otg.dev = &isp->client.dev; + isp->otg.dev = &isp->client->dev; isp->otg.label = DRIVER_NAME; isp->otg.set_host = isp1301_set_host, [-- Attachment #3: i2c-isp1301_omap-convert-to-new-style-part-2.patch --] [-- Type: text/x-patch, Size: 7514 bytes --] From: Jean Delvare <khali@linux-fr.org> Subject: i2c/isp1301_omap: Convert to a new-style i2c driver, part 2 Based on David Brownell's patch for tps65010 and previous work by Felipe Balbi, this patch finishes conversting isp1301_omap to a new-style i2c driver. There's definitely room for further drivers cleanups, but these are out of the scope of this patch. Signed-off-by: Jean Delvare <khali@linux-fr.org> --- This needs testing! Both build-time and run-time. arch/arm/mach-omap1/board-h3.c | 4 + arch/arm/mach-omap2/board-h4.c | 11 ++++ drivers/i2c/chips/isp1301_omap.c | 98 ++++++++++++-------------------------- 3 files changed, 48 insertions(+), 65 deletions(-) --- linux-2.6.27-rc0.orig/arch/arm/mach-omap1/board-h3.c 2008-07-14 22:14:17.000000000 +0200 +++ linux-2.6.27-rc0/arch/arm/mach-omap1/board-h3.c 2008-07-15 23:21:23.000000000 +0200 @@ -476,6 +476,10 @@ static struct i2c_board_info __initdata I2C_BOARD_INFO("tps65013", 0x48), /* .irq = OMAP_GPIO_IRQ(??), */ }, + { + I2C_BOARD_INFO("isp1301_omap", 0x2d), + .irq = OMAP_GPIO_IRQ(14), + }, }; static struct omap_gpio_switch h3_gpio_switches[] __initdata = { --- linux-2.6.27-rc0.orig/arch/arm/mach-omap2/board-h4.c 2008-07-14 22:14:18.000000000 +0200 +++ linux-2.6.27-rc0/arch/arm/mach-omap2/board-h4.c 2008-07-15 23:21:23.000000000 +0200 @@ -18,6 +18,7 @@ #include <linux/mtd/partitions.h> #include <linux/delay.h> #include <linux/workqueue.h> +#include <linux/i2c.h> #include <linux/input.h> #include <linux/err.h> #include <linux/clk.h> @@ -392,6 +393,13 @@ static struct omap_board_config_kernel h { OMAP_TAG_LCD, &h4_lcd_config }, }; +static struct i2c_board_info __initdata h4_i2c_board_info[] = { + { + I2C_BOARD_INFO("isp1301_omap", 0x2d), + .irq = OMAP_GPIO_IRQ(125), + }, +}; + static void __init omap_h4_init(void) { /* @@ -412,6 +420,9 @@ static void __init omap_h4_init(void) } #endif + i2c_register_board_info(1, h4_i2c_board_info, + ARRAY_SIZE(h4_i2c_board_info)); + platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices)); omap_board_config = h4_config; omap_board_config_size = ARRAY_SIZE(h4_config); --- linux-2.6.27-rc0.orig/drivers/i2c/chips/isp1301_omap.c 2008-07-15 23:15:34.000000000 +0200 +++ linux-2.6.27-rc0/drivers/i2c/chips/isp1301_omap.c 2008-07-15 23:21:23.000000000 +0200 @@ -50,10 +50,8 @@ MODULE_LICENSE("GPL"); struct isp1301 { struct otg_transceiver otg; struct i2c_client *client; - struct i2c_client c; void (*i2c_release)(struct device *dev); - int irq; int irq_type; u32 last_otg_ctrl; @@ -139,14 +137,6 @@ static inline void notresponding(struct /*-------------------------------------------------------------------------*/ -/* only two addresses possible */ -#define ISP_BASE 0x2c -static unsigned short normal_i2c[] = { - ISP_BASE, ISP_BASE + 1, - I2C_CLIENT_END }; - -I2C_CLIENT_INSMOD; - static struct i2c_driver isp1301_driver; /* smbus apis are used for portability */ @@ -1230,7 +1220,7 @@ static void isp1301_release(struct devic static struct isp1301 *the_transceiver; -static int isp1301_detach_client(struct i2c_client *i2c) +static int __exit isp1301_remove(struct i2c_client *i2c) { struct isp1301 *isp; @@ -1238,7 +1228,7 @@ static int isp1301_detach_client(struct isp1301_clear_bits(isp, ISP1301_INTERRUPT_FALLING, ~0); isp1301_clear_bits(isp, ISP1301_INTERRUPT_RISING, ~0); - free_irq(isp->irq, isp); + free_irq(i2c->irq, isp); #ifdef CONFIG_USB_OTG otg_unbind(isp); #endif @@ -1253,7 +1243,7 @@ static int isp1301_detach_client(struct put_device(&i2c->dev); the_transceiver = 0; - return i2c_detach_client(i2c); + return 0; } /*-------------------------------------------------------------------------*/ @@ -1509,12 +1499,10 @@ isp1301_start_hnp(struct otg_transceiver /*-------------------------------------------------------------------------*/ -/* no error returns, they'd just make bus scanning stop */ -static int isp1301_probe(struct i2c_adapter *bus, int address, int kind) +static int __init isp1301_probe(struct i2c_client *i2c) { int status; struct isp1301 *isp; - struct i2c_client *i2c; if (the_transceiver) return 0; @@ -1528,37 +1516,19 @@ static int isp1301_probe(struct i2c_adap isp->timer.function = isp1301_timer; isp->timer.data = (unsigned long) isp; - isp->irq = -1; - isp->c.addr = address; - i2c_set_clientdata(&isp->c, isp); - isp->c.adapter = bus; - isp->c.driver = &isp1301_driver; - strlcpy(isp->c.name, DRIVER_NAME, I2C_NAME_SIZE); - isp->client = i2c = &isp->c; - - /* if this is a true probe, verify the chip ... */ - if (kind < 0) { - status = isp1301_get_u16(isp, ISP1301_VENDOR_ID); - if (status != I2C_VENDOR_ID_PHILIPS) { - dev_dbg(&bus->dev, "addr %d not philips id: %d\n", - address, status); - goto fail1; - } - status = isp1301_get_u16(isp, ISP1301_PRODUCT_ID); - if (status != I2C_PRODUCT_ID_PHILIPS_1301) { - dev_dbg(&bus->dev, "%d not isp1301, %d\n", - address, status); - goto fail1; - } - } + i2c_set_clientdata(i2c, isp); + isp->client = i2c; - status = i2c_attach_client(i2c); - if (status < 0) { - dev_dbg(&bus->dev, "can't attach %s to device %d, err %d\n", - DRIVER_NAME, address, status); -fail1: - kfree(isp); - return 0; + /* verify the chip (shouldn't be necesary) */ + status = isp1301_get_u16(isp, ISP1301_VENDOR_ID); + if (status != I2C_VENDOR_ID_PHILIPS) { + dev_dbg(&i2c->dev, "not philips id: %d\n", status); + goto fail; + } + status = isp1301_get_u16(isp, ISP1301_PRODUCT_ID); + if (status != I2C_PRODUCT_ID_PHILIPS_1301) { + dev_dbg(&i2c->dev, "not isp1301, %d\n", status); + goto fail; } isp->i2c_release = i2c->dev.release; i2c->dev.release = isp1301_release; @@ -1587,7 +1557,7 @@ fail1: status = otg_bind(isp); if (status < 0) { dev_dbg(&i2c->dev, "can't bind OTG\n"); - goto fail2; + goto fail; } #endif @@ -1600,26 +1570,21 @@ fail1: /* IRQ wired at M14 */ omap_cfg_reg(M14_1510_GPIO2); - isp->irq = OMAP_GPIO_IRQ(2); if (gpio_request(2, "isp1301") == 0) gpio_direction_input(2); isp->irq_type = IRQF_TRIGGER_FALLING; } isp->irq_type |= IRQF_SAMPLE_RANDOM; - status = request_irq(isp->irq, isp1301_irq, + status = request_irq(i2c->irq, isp1301_irq, isp->irq_type, DRIVER_NAME, isp); if (status < 0) { dev_dbg(&i2c->dev, "can't get IRQ %d, err %d\n", - isp->irq, status); -#ifdef CONFIG_USB_OTG -fail2: -#endif - i2c_detach_client(i2c); - goto fail1; + i2c->irq, status); + goto fail; } - isp->otg.dev = &isp->client->dev; + isp->otg.dev = &i2c->dev; isp->otg.label = DRIVER_NAME; isp->otg.set_host = isp1301_set_host, @@ -1650,22 +1615,25 @@ fail2: status); return 0; -} -static int isp1301_scan_bus(struct i2c_adapter *bus) -{ - if (!i2c_check_functionality(bus, I2C_FUNC_SMBUS_BYTE_DATA - | I2C_FUNC_SMBUS_READ_WORD_DATA)) - return -EINVAL; - return i2c_probe(bus, &addr_data, isp1301_probe); +fail: + kfree(isp); + return -ENODEV; } +static const struct i2c_device_id isp1301_id[] = { + { "isp1301_omap", 0 }, + { } +}; +MODULE_DEVICE_TABLE(i2c, isp1301_id); + static struct i2c_driver isp1301_driver = { .driver = { .name = "isp1301_omap", }, - .attach_adapter = isp1301_scan_bus, - .detach_client = isp1301_detach_client, + .probe = isp1301_probe, + .remove = __exit_p(isp1301_remove), + .id_table = isp1301_id, }; /*-------------------------------------------------------------------------*/ ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-07 16:34 ` Jean Delvare @ 2008-08-07 23:51 ` David Brownell 2008-08-08 7:29 ` Tony Lindgren 0 siblings, 1 reply; 20+ messages in thread From: David Brownell @ 2008-08-07 23:51 UTC (permalink / raw) To: Jean Delvare; +Cc: linux-arm-kernel, linux-omap, Deepak Saxena On Thursday 07 August 2008, Jean Delvare wrote: > Still no testers for these patches? Right now I don't seem to be able to boot OMAP1 in mainline, so pulling that H2 out of its box would be futile. :( ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-07 23:51 ` David Brownell @ 2008-08-08 7:29 ` Tony Lindgren 2008-08-08 9:17 ` Jean Delvare 0 siblings, 1 reply; 20+ messages in thread From: Tony Lindgren @ 2008-08-08 7:29 UTC (permalink / raw) To: David Brownell; +Cc: Jean Delvare, linux-arm-kernel, linux-omap, Deepak Saxena * David Brownell <david-b@pacbell.net> [080808 02:51]: > On Thursday 07 August 2008, Jean Delvare wrote: > > Still no testers for these patches? > > Right now I don't seem to be able to boot OMAP1 in mainline, > so pulling that H2 out of its box would be futile. :( Grr, looks like I can't access my H2 remotely right now as my remote power switch is hung, and would need to be remote rebooted.. So I can't access H2 for few more weeks, can somebody else test on H2 meanwhile? BTW, this patch should OK to apply as we've had it in the linux-omap tree since December, and I've occasionally boot tested H2, last time I think was when I removed the __REG macros few months ago. Regards, Tony ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-08 7:29 ` Tony Lindgren @ 2008-08-08 9:17 ` Jean Delvare 2008-08-08 9:39 ` Felipe Balbi 2008-08-08 9:45 ` Tony Lindgren 0 siblings, 2 replies; 20+ messages in thread From: Jean Delvare @ 2008-08-08 9:17 UTC (permalink / raw) To: Tony Lindgren; +Cc: David Brownell, linux-arm-kernel, linux-omap, Deepak Saxena Hi Tony, On Fri, 8 Aug 2008 10:29:55 +0300, Tony Lindgren wrote: > * David Brownell <david-b@pacbell.net> [080808 02:51]: > > On Thursday 07 August 2008, Jean Delvare wrote: > > > Still no testers for these patches? > > > > Right now I don't seem to be able to boot OMAP1 in mainline, > > so pulling that H2 out of its box would be futile. :( > > Grr, looks like I can't access my H2 remotely right now as my > remote power switch is hung, and would need to be remote rebooted.. > > So I can't access H2 for few more weeks, can somebody else test > on H2 meanwhile? > > BTW, this patch should OK to apply as we've had it in the > linux-omap tree since December, and I've occasionally boot tested > H2, last time I think was when I removed the __REG macros few > months ago. It is possible that you have had the 1st patch in your tree for some time. However, the second patch I wrote 1.5 month ago or so, so I doubt that you can have it in your tree since December 2007 ;) Maybe your can update the omap tree with my patches? This would give them the testing they are missing, and then we can push them upstream. Ideally that would have gone in 2.6.27, but it starts being a bit late for that now. Thanks, -- Jean Delvare ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-08 9:17 ` Jean Delvare @ 2008-08-08 9:39 ` Felipe Balbi 2008-08-08 9:45 ` Tony Lindgren 1 sibling, 0 replies; 20+ messages in thread From: Felipe Balbi @ 2008-08-08 9:39 UTC (permalink / raw) To: ext Jean Delvare Cc: Tony Lindgren, David Brownell, linux-arm-kernel, linux-omap, Deepak Saxena On Fri, Aug 08, 2008 at 11:17:51AM +0200, ext Jean Delvare wrote: > Maybe your can update the omap tree with my patches? This would give > them the testing they are missing, and then we can push them upstream. > Ideally that would have gone in 2.6.27, but it starts being a bit late > for that now. Yeah, Jean modified my sencond patch and got to a better solution, I think it's worthy to apply his patch on l-o. -- balbi ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-08 9:17 ` Jean Delvare 2008-08-08 9:39 ` Felipe Balbi @ 2008-08-08 9:45 ` Tony Lindgren 2008-08-08 9:48 ` Felipe Balbi 1 sibling, 1 reply; 20+ messages in thread From: Tony Lindgren @ 2008-08-08 9:45 UTC (permalink / raw) To: Jean Delvare; +Cc: David Brownell, linux-arm-kernel, linux-omap, Deepak Saxena Hi, * Jean Delvare <khali@linux-fr.org> [080808 12:18]: > Hi Tony, > > On Fri, 8 Aug 2008 10:29:55 +0300, Tony Lindgren wrote: > > * David Brownell <david-b@pacbell.net> [080808 02:51]: > > > On Thursday 07 August 2008, Jean Delvare wrote: > > > > Still no testers for these patches? > > > > > > Right now I don't seem to be able to boot OMAP1 in mainline, > > > so pulling that H2 out of its box would be futile. :( > > > > Grr, looks like I can't access my H2 remotely right now as my > > remote power switch is hung, and would need to be remote rebooted.. > > > > So I can't access H2 for few more weeks, can somebody else test > > on H2 meanwhile? > > > > BTW, this patch should OK to apply as we've had it in the > > linux-omap tree since December, and I've occasionally boot tested > > H2, last time I think was when I removed the __REG macros few > > months ago. > > It is possible that you have had the 1st patch in your tree for some > time. However, the second patch I wrote 1.5 month ago or so, so I doubt > that you can have it in your tree since December 2007 ;) Sorry, I totally missed your second patch. I guess I was just looking at the patch name which is same. > Maybe your can update the omap tree with my patches? This would give > them the testing they are missing, and then we can push them upstream. > Ideally that would have gone in 2.6.27, but it starts being a bit late > for that now. Yeah, I will add it to linux-omap for testing for sure. This should be easy to test though, it either works or does not.. But we need to find somebody to boot it and connect USB cable to it :) Thanks, Tony ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-08 9:45 ` Tony Lindgren @ 2008-08-08 9:48 ` Felipe Balbi 2008-08-11 15:24 ` [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) Tony Lindgren 2008-09-10 22:31 ` testers wanted: isp1301_omap conversion to new-style i2c driver Tony Lindgren 0 siblings, 2 replies; 20+ messages in thread From: Felipe Balbi @ 2008-08-08 9:48 UTC (permalink / raw) To: ext Tony Lindgren Cc: Jean Delvare, David Brownell, linux-arm-kernel, linux-omap, Deepak Saxena, carlos.aguiar On Fri, Aug 08, 2008 at 12:45:52PM +0300, Tony Lindgren wrote: > Yeah, I will add it to linux-omap for testing for sure. This should be > easy to test though, it either works or does not.. But we need to find > somebody to boot it and connect USB cable to it :) Hi Carlos, could you test it for us on H2 ?? Do you guys still have H2 boards there ? -- balbi ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-08 9:48 ` Felipe Balbi @ 2008-08-11 15:24 ` Tony Lindgren 2008-08-11 16:23 ` Jean Delvare 2008-08-11 18:46 ` David Brownell 2008-09-10 22:31 ` testers wanted: isp1301_omap conversion to new-style i2c driver Tony Lindgren 1 sibling, 2 replies; 20+ messages in thread From: Tony Lindgren @ 2008-08-11 15:24 UTC (permalink / raw) To: Felipe Balbi Cc: Jean Delvare, David Brownell, linux-arm-kernel, linux-omap, Deepak Saxena, carlos.aguiar [-- Attachment #1: Type: text/plain, Size: 639 bytes --] Hi, * Felipe Balbi <felipe.balbi@nokia.com> [080808 12:49]: > On Fri, Aug 08, 2008 at 12:45:52PM +0300, Tony Lindgren wrote: > > Yeah, I will add it to linux-omap for testing for sure. This should be > > easy to test though, it either works or does not.. But we need to find > > somebody to boot it and connect USB cable to it :) > > Hi Carlos, > > could you test it for us on H2 ?? > > Do you guys still have H2 boards there ? Also H4 needs to be tested. I've synced linux-omap tree with mainline tree at v2.6.27-rc2, and applied Felipe's and Jean's patches. Following patch should be merged to them to fix compile. Regards, Tony [-- Attachment #2: i2c-isp1301-omap-fix.patch --] [-- Type: text/x-diff, Size: 1030 bytes --] >From d12a00e66e97f2e808217eb3e9c9e88d4a281530 Mon Sep 17 00:00:00 2001 From: Tony Lindgren <tony@atomide.com> Date: Mon, 11 Aug 2008 17:45:32 +0300 Subject: [PATCH] I2C: Fix isp1301_omap.c compile Fix isp1301_omap.c compile Signed-off-by: Tony Lindgren <tony@atomide.com> diff --git a/drivers/i2c/chips/isp1301_omap.c b/drivers/i2c/chips/isp1301_omap.c index c250668..71a0a2e 100644 --- a/drivers/i2c/chips/isp1301_omap.c +++ b/drivers/i2c/chips/isp1301_omap.c @@ -1210,7 +1210,7 @@ static void isp1301_release(struct device *dev) { struct isp1301 *isp; - isp = device_get_drvdata(dev); + isp = dev_get_drvdata(dev); /* ugly -- i2c hijacks our memory hook to wait_for_completion() */ if (isp->i2c_release) @@ -1564,7 +1564,7 @@ static int __init isp1301_probe(struct i2c_client *i2c) if (machine_is_omap_h2()) { /* full speed signaling by default */ isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, - MC1_SPEED_REG); + MC1_SPEED); isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, MC2_SPD_SUSP_CTRL); ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-11 15:24 ` [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) Tony Lindgren @ 2008-08-11 16:23 ` Jean Delvare 2008-08-11 18:40 ` David Brownell 2008-08-11 18:46 ` David Brownell 1 sibling, 1 reply; 20+ messages in thread From: Jean Delvare @ 2008-08-11 16:23 UTC (permalink / raw) To: Tony Lindgren Cc: Felipe Balbi, David Brownell, linux-arm-kernel, linux-omap, Deepak Saxena, carlos.aguiar Hi Tony, On Mon, 11 Aug 2008 18:24:11 +0300, Tony Lindgren wrote: > Hi, > > * Felipe Balbi <felipe.balbi@nokia.com> [080808 12:49]: > > On Fri, Aug 08, 2008 at 12:45:52PM +0300, Tony Lindgren wrote: > > > Yeah, I will add it to linux-omap for testing for sure. This should be > > > easy to test though, it either works or does not.. But we need to find > > > somebody to boot it and connect USB cable to it :) > > > > Hi Carlos, > > > > could you test it for us on H2 ?? > > > > Do you guys still have H2 boards there ? > > Also H4 needs to be tested. > > I've synced linux-omap tree with mainline tree at v2.6.27-rc2, and > applied Felipe's and Jean's patches. Following patch should be merged > to them to fix compile. Thank you. > From d12a00e66e97f2e808217eb3e9c9e88d4a281530 Mon Sep 17 00:00:00 2001 > From: Tony Lindgren <tony@atomide.com> > Date: Mon, 11 Aug 2008 17:45:32 +0300 > Subject: [PATCH] I2C: Fix isp1301_omap.c compile > > Fix isp1301_omap.c compile > > Signed-off-by: Tony Lindgren <tony@atomide.com> > > diff --git a/drivers/i2c/chips/isp1301_omap.c b/drivers/i2c/chips/isp1301_omap.c > index c250668..71a0a2e 100644 > --- a/drivers/i2c/chips/isp1301_omap.c > +++ b/drivers/i2c/chips/isp1301_omap.c > @@ -1210,7 +1210,7 @@ static void isp1301_release(struct device *dev) > { > struct isp1301 *isp; > > - isp = device_get_drvdata(dev); > + isp = dev_get_drvdata(dev); > > /* ugly -- i2c hijacks our memory hook to wait_for_completion() */ > if (isp->i2c_release) Oops, good catch, thanks. Fixed. > @@ -1564,7 +1564,7 @@ static int __init isp1301_probe(struct i2c_client *i2c) > if (machine_is_omap_h2()) { > /* full speed signaling by default */ > isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, > - MC1_SPEED_REG); > + MC1_SPEED); > isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, > MC2_SPD_SUSP_CTRL); > That one isn't mine, the original code already has the problem. Apparently this was broken by the following patch from David: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f35ae6346850f6c192269b09088b20261760f0e0 The fix should be sent to Linus ASAP, otherwise the driver won't build in 2.6.27. You have my ack. -- Jean Delvare ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-11 16:23 ` Jean Delvare @ 2008-08-11 18:40 ` David Brownell 2008-08-12 9:29 ` Tony Lindgren 0 siblings, 1 reply; 20+ messages in thread From: David Brownell @ 2008-08-11 18:40 UTC (permalink / raw) To: tony, khali Cc: linux-omap, linux-arm-kernel, felipe.balbi, dsaxena, carlos.aguiar > That one isn't mine, the original code already has the problem. > Apparently this was broken by the following patch from David: > > f35ae6346850f6c192269b09088b20261760f0e0 Tony, actually ... there were some issues in the omap_udc code too. > The fix should be sent to Linus ASAP, otherwise the driver won't build > in 2.6.27. You have my ack. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-11 18:40 ` David Brownell @ 2008-08-12 9:29 ` Tony Lindgren 2008-08-12 9:51 ` Jean Delvare 2008-08-12 10:17 ` David Brownell 0 siblings, 2 replies; 20+ messages in thread From: Tony Lindgren @ 2008-08-12 9:29 UTC (permalink / raw) To: David Brownell Cc: khali, linux-omap, linux-arm-kernel, felipe.balbi, dsaxena, carlos.aguiar * David Brownell <david-b@pacbell.net> [080811 21:35]: > > That one isn't mine, the original code already has the problem. > > Apparently this was broken by the following patch from David: > > > > f35ae6346850f6c192269b09088b20261760f0e0 > > Tony, actually ... there were some issues in the omap_udc code too. Yeah, blame it on me, looks like I missed that one somehow with the __REG removal. > > The fix should be sent to Linus ASAP, otherwise the driver won't build > > in 2.6.27. You have my ack. Can you send it via your I2C? Let me know if your want me to send it via arm-omap fixes. Regards, Tony ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-12 9:29 ` Tony Lindgren @ 2008-08-12 9:51 ` Jean Delvare 2008-08-18 12:21 ` Tony Lindgren 2008-08-12 10:17 ` David Brownell 1 sibling, 1 reply; 20+ messages in thread From: Jean Delvare @ 2008-08-12 9:51 UTC (permalink / raw) To: Tony Lindgren Cc: David Brownell, linux-omap, linux-arm-kernel, felipe.balbi, dsaxena, carlos.aguiar Hi Tony, On Tue, 12 Aug 2008 12:29:18 +0300, Tony Lindgren wrote: > * David Brownell <david-b@pacbell.net> [080811 21:35]: > > > That one isn't mine, the original code already has the problem. > > > Apparently this was broken by the following patch from David: > > > > > > f35ae6346850f6c192269b09088b20261760f0e0 > > > > Tony, actually ... there were some issues in the omap_udc code too. > > Yeah, blame it on me, looks like I missed that one somehow with the > __REG removal. > > > > The fix should be sent to Linus ASAP, otherwise the driver won't build > > > in 2.6.27. You have my ack. > > Can you send it via your I2C? Let me know if your want me to send it > via arm-omap fixes. Please take care of it. The patch that broke the driver came through your tree so I think it makes more sense to have the fix come through your tree as well. Thanks, -- Jean Delvare ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-12 9:51 ` Jean Delvare @ 2008-08-18 12:21 ` Tony Lindgren 2008-08-18 12:34 ` Jean Delvare 0 siblings, 1 reply; 20+ messages in thread From: Tony Lindgren @ 2008-08-18 12:21 UTC (permalink / raw) To: Jean Delvare Cc: David Brownell, linux-omap, linux-arm-kernel, felipe.balbi, dsaxena, carlos.aguiar [-- Attachment #1: Type: text/plain, Size: 1217 bytes --] * Jean Delvare <khali@linux-fr.org> [080812 12:52]: > Hi Tony, > > On Tue, 12 Aug 2008 12:29:18 +0300, Tony Lindgren wrote: > > * David Brownell <david-b@pacbell.net> [080811 21:35]: > > > > That one isn't mine, the original code already has the problem. > > > > Apparently this was broken by the following patch from David: > > > > > > > > f35ae6346850f6c192269b09088b20261760f0e0 > > > > > > Tony, actually ... there were some issues in the omap_udc code too. > > > > Yeah, blame it on me, looks like I missed that one somehow with the > > __REG removal. > > > > > > The fix should be sent to Linus ASAP, otherwise the driver won't build > > > > in 2.6.27. You have my ack. > > > > Can you send it via your I2C? Let me know if your want me to send it > > via arm-omap fixes. > > Please take care of it. The patch that broke the driver came through > your tree so I think it makes more sense to have the fix come through > your tree as well. Well looks like there's already cbbcb9b0c7e4d1fd90cf54427382dae525773dc2 taking care of it the second part of my earlier patch. But the following patch still needs to be merged into Felipe's "2c/isp1301_omap: Convert to a new-style i2c driver, part 1" patch. Tony [-- Attachment #2: i2c-fix-dev-get-drvdata --] [-- Type: text/plain, Size: 704 bytes --] commit d12a00e66e97f2e808217eb3e9c9e88d4a281530 Author: Tony Lindgren <tony@atomide.com> Date: Mon Aug 11 17:45:32 2008 +0300 I2C: Fix isp1301_omap.c compile Fix isp1301_omap.c compile Signed-off-by: Tony Lindgren <tony@atomide.com> diff --git a/drivers/i2c/chips/isp1301_omap.c b/drivers/i2c/chips/isp1301_omap.c index c250668..71a0a2e 100644 --- a/drivers/i2c/chips/isp1301_omap.c +++ b/drivers/i2c/chips/isp1301_omap.c @@ -1210,7 +1210,7 @@ static void isp1301_release(struct device *dev) { struct isp1301 *isp; - isp = device_get_drvdata(dev); + isp = dev_get_drvdata(dev); /* ugly -- i2c hijacks our memory hook to wait_for_completion() */ if (isp->i2c_release) ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-18 12:21 ` Tony Lindgren @ 2008-08-18 12:34 ` Jean Delvare 2008-08-18 12:42 ` Tony Lindgren 0 siblings, 1 reply; 20+ messages in thread From: Jean Delvare @ 2008-08-18 12:34 UTC (permalink / raw) To: Tony Lindgren Cc: David Brownell, linux-omap, linux-arm-kernel, felipe.balbi, dsaxena, carlos.aguiar On Mon, 18 Aug 2008 15:21:45 +0300, Tony Lindgren wrote: > * Jean Delvare <khali@linux-fr.org> [080812 12:52]: > > Hi Tony, > > > > On Tue, 12 Aug 2008 12:29:18 +0300, Tony Lindgren wrote: > > > * David Brownell <david-b@pacbell.net> [080811 21:35]: > > > > > That one isn't mine, the original code already has the problem. > > > > > Apparently this was broken by the following patch from David: > > > > > > > > > > f35ae6346850f6c192269b09088b20261760f0e0 > > > > > > > > Tony, actually ... there were some issues in the omap_udc code too. > > > > > > Yeah, blame it on me, looks like I missed that one somehow with the > > > __REG removal. > > > > > > > > The fix should be sent to Linus ASAP, otherwise the driver won't build > > > > > in 2.6.27. You have my ack. > > > > > > Can you send it via your I2C? Let me know if your want me to send it > > > via arm-omap fixes. > > > > Please take care of it. The patch that broke the driver came through > > your tree so I think it makes more sense to have the fix come through > > your tree as well. > > Well looks like there's already cbbcb9b0c7e4d1fd90cf54427382dae525773dc2 > taking care of it the second part of my earlier patch. > > But the following patch still needs to be merged into Felipe's > "2c/isp1301_omap: Convert to a new-style i2c driver, part 1" patch. I've done that already. -- Jean Delvare ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-18 12:34 ` Jean Delvare @ 2008-08-18 12:42 ` Tony Lindgren 0 siblings, 0 replies; 20+ messages in thread From: Tony Lindgren @ 2008-08-18 12:42 UTC (permalink / raw) To: Jean Delvare Cc: David Brownell, linux-omap, linux-arm-kernel, felipe.balbi, dsaxena, carlos.aguiar * Jean Delvare <khali@linux-fr.org> [080818 15:34]: > On Mon, 18 Aug 2008 15:21:45 +0300, Tony Lindgren wrote: > > * Jean Delvare <khali@linux-fr.org> [080812 12:52]: > > > Hi Tony, > > > > > > On Tue, 12 Aug 2008 12:29:18 +0300, Tony Lindgren wrote: > > > > * David Brownell <david-b@pacbell.net> [080811 21:35]: > > > > > > That one isn't mine, the original code already has the problem. > > > > > > Apparently this was broken by the following patch from David: > > > > > > > > > > > > f35ae6346850f6c192269b09088b20261760f0e0 > > > > > > > > > > Tony, actually ... there were some issues in the omap_udc code too. > > > > > > > > Yeah, blame it on me, looks like I missed that one somehow with the > > > > __REG removal. > > > > > > > > > > The fix should be sent to Linus ASAP, otherwise the driver won't build > > > > > > in 2.6.27. You have my ack. > > > > > > > > Can you send it via your I2C? Let me know if your want me to send it > > > > via arm-omap fixes. > > > > > > Please take care of it. The patch that broke the driver came through > > > your tree so I think it makes more sense to have the fix come through > > > your tree as well. > > > > Well looks like there's already cbbcb9b0c7e4d1fd90cf54427382dae525773dc2 > > taking care of it the second part of my earlier patch. > > > > But the following patch still needs to be merged into Felipe's > > "2c/isp1301_omap: Convert to a new-style i2c driver, part 1" patch. > > I've done that already. OK, great. Tony ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-12 9:29 ` Tony Lindgren 2008-08-12 9:51 ` Jean Delvare @ 2008-08-12 10:17 ` David Brownell 1 sibling, 0 replies; 20+ messages in thread From: David Brownell @ 2008-08-12 10:17 UTC (permalink / raw) To: tony Cc: linux-omap, linux-arm-kernel, khali, felipe.balbi, dsaxena, carlos.aguiar > > > f35ae6346850f6c192269b09088b20261760f0e0 > > > > Tony, actually ... there were some issues in the omap_udc code too. > > Yeah, blame it on me, looks like I missed that one somehow with the > __REG removal. So did a lot of other folk! ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) 2008-08-11 15:24 ` [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) Tony Lindgren 2008-08-11 16:23 ` Jean Delvare @ 2008-08-11 18:46 ` David Brownell 1 sibling, 0 replies; 20+ messages in thread From: David Brownell @ 2008-08-11 18:46 UTC (permalink / raw) To: tony, felipe.balbi Cc: linux-omap, linux-arm-kernel, khali, dsaxena, carlos.aguiar > > Do you guys still have H2 boards there ? > > Also H4 needs to be tested. H2 needs to be tested with upstream kernels and OTG ... as I recall, the linux-OMAP kernel has patches that made OTG work on H3 (and I'd assume H4 too) but broke it completely on H2. - Dave ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-08-08 9:48 ` Felipe Balbi 2008-08-11 15:24 ` [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) Tony Lindgren @ 2008-09-10 22:31 ` Tony Lindgren 2008-09-11 7:15 ` Jean Delvare 1 sibling, 1 reply; 20+ messages in thread From: Tony Lindgren @ 2008-09-10 22:31 UTC (permalink / raw) To: Felipe Balbi; +Cc: Jean Delvare, linux-omap, linux-arm-kernel Hi, * Felipe Balbi <felipe.balbi@nokia.com> [080821 07:47]: > On Fri, Aug 08, 2008 at 12:45:52PM +0300, Tony Lindgren wrote: > > Yeah, I will add it to linux-omap for testing for sure. This should be > > easy to test though, it either works or does not.. But we need to find > > somebody to boot it and connect USB cable to it :) > > Hi Carlos, > > could you test it for us on H2 ?? > > Do you guys still have H2 boards there ? Jean, sorry for the long delay on getting this tested. Here's what happens on H2 after Felipe's and your isp_1301.c patches: # otg: b_idle, SWITCH to gadget, ctrl 018021 otg: a_idle, SWITCH to host, ctrl 080021 otg: a_vbus_err, VBUS_ERR 2000 ctrl 140821 hub 1-0:1.0: unable to enumerate USB device on port 2 So things work the same as before them. Here's my ack for the following patches: i2c/isp1301_omap: Convert to a new-style i2c driver, part 1 i2c/isp1301_omap: Convert to a new-style i2c driver, part 2 Acked-by: Tony Lindgren <tony@atomide.com> Regards, Tony ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: testers wanted: isp1301_omap conversion to new-style i2c driver 2008-09-10 22:31 ` testers wanted: isp1301_omap conversion to new-style i2c driver Tony Lindgren @ 2008-09-11 7:15 ` Jean Delvare 0 siblings, 0 replies; 20+ messages in thread From: Jean Delvare @ 2008-09-11 7:15 UTC (permalink / raw) To: Tony Lindgren; +Cc: Felipe Balbi, linux-omap, linux-arm-kernel Hi Tony, On Wed, 10 Sep 2008 15:31:50 -0700, Tony Lindgren wrote: > Hi, > > * Felipe Balbi <felipe.balbi@nokia.com> [080821 07:47]: > > On Fri, Aug 08, 2008 at 12:45:52PM +0300, Tony Lindgren wrote: > > > Yeah, I will add it to linux-omap for testing for sure. This should be > > > easy to test though, it either works or does not.. But we need to find > > > somebody to boot it and connect USB cable to it :) > > > > Hi Carlos, > > > > could you test it for us on H2 ?? > > > > Do you guys still have H2 boards there ? > > Jean, sorry for the long delay on getting this tested. Here's what > happens on H2 after Felipe's and your isp_1301.c patches: > > # otg: b_idle, SWITCH to gadget, ctrl 018021 > otg: a_idle, SWITCH to host, ctrl 080021 > otg: a_vbus_err, VBUS_ERR 2000 ctrl 140821 > hub 1-0:1.0: unable to enumerate USB device on port 2 > > So things work the same as before them. > > Here's my ack for the following patches: > > i2c/isp1301_omap: Convert to a new-style i2c driver, part 1 > i2c/isp1301_omap: Convert to a new-style i2c driver, part 2 > > Acked-by: Tony Lindgren <tony@atomide.com> Thanks for testing and reporting! Both patches are in my i2c tree and scheduled to be send to Linus for kernel 2.6.28. -- Jean Delvare ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2008-09-11 7:16 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-06-17 18:43 testers wanted: isp1301_omap conversion to new-style i2c driver Jean Delvare 2008-08-07 16:34 ` Jean Delvare 2008-08-07 23:51 ` David Brownell 2008-08-08 7:29 ` Tony Lindgren 2008-08-08 9:17 ` Jean Delvare 2008-08-08 9:39 ` Felipe Balbi 2008-08-08 9:45 ` Tony Lindgren 2008-08-08 9:48 ` Felipe Balbi 2008-08-11 15:24 ` [PATCH] Fix isp1301_omap compile (Re: testers wanted: isp1301_omap conversion to new-style i2c driver) Tony Lindgren 2008-08-11 16:23 ` Jean Delvare 2008-08-11 18:40 ` David Brownell 2008-08-12 9:29 ` Tony Lindgren 2008-08-12 9:51 ` Jean Delvare 2008-08-18 12:21 ` Tony Lindgren 2008-08-18 12:34 ` Jean Delvare 2008-08-18 12:42 ` Tony Lindgren 2008-08-12 10:17 ` David Brownell 2008-08-11 18:46 ` David Brownell 2008-09-10 22:31 ` testers wanted: isp1301_omap conversion to new-style i2c driver Tony Lindgren 2008-09-11 7:15 ` Jean Delvare
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox