Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
* 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6: i2c/m41t00: Do not forget to write year i2c-mv64xxx: Fix random oops at boot i2c: Migration aids for i2c_adapter.dev removal i2c-pnx: Add entry to MAINTAINERS i2c-pnx: Fix interrupt handler, get rid of EARLY config option
This commit is contained in:
commit
91f7b5c418
|
@ -226,6 +226,23 @@ Who: Jean Delvare <khali@linux-fr.org>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: i2c_adapter.dev
|
||||||
|
i2c_adapter.list
|
||||||
|
When: July 2007
|
||||||
|
Why: Superfluous, given i2c_adapter.class_dev:
|
||||||
|
* The "dev" was a stand-in for the physical device node that legacy
|
||||||
|
drivers would not have; but now it's almost always present. Any
|
||||||
|
remaining legacy drivers must upgrade (they now trigger warnings).
|
||||||
|
* The "list" duplicates class device children.
|
||||||
|
The delay in removing this is so upgraded lm_sensors and libsensors
|
||||||
|
can get deployed. (Removal causes minor changes in the sysfs layout,
|
||||||
|
notably the location of the adapter type name and parenting the i2c
|
||||||
|
client hardware directly from their controller.)
|
||||||
|
Who: Jean Delvare <khali@linux-fr.org>,
|
||||||
|
David Brownell <dbrownell@users.sourceforge.net>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
What: IPv4 only connection tracking/NAT/helpers
|
What: IPv4 only connection tracking/NAT/helpers
|
||||||
When: 2.6.22
|
When: 2.6.22
|
||||||
Why: The new layer 3 independant connection tracking replaces the old
|
Why: The new layer 3 independant connection tracking replaces the old
|
||||||
|
|
|
@ -2579,6 +2579,12 @@ P: Adam Belay
|
||||||
M: ambx1@neo.rr.com
|
M: ambx1@neo.rr.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
PNXxxxx I2C DRIVER
|
||||||
|
P: Vitaly Wool
|
||||||
|
M: vitalywool@gmail.com
|
||||||
|
L: i2c@lm-sensors.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
PPP PROTOCOL DRIVERS AND COMPRESSORS
|
PPP PROTOCOL DRIVERS AND COMPRESSORS
|
||||||
P: Paul Mackerras
|
P: Paul Mackerras
|
||||||
M: paulus@samba.org
|
M: paulus@samba.org
|
||||||
|
|
|
@ -564,13 +564,4 @@ config I2C_PNX
|
||||||
This driver can also be built as a module. If so, the module
|
This driver can also be built as a module. If so, the module
|
||||||
will be called i2c-pnx.
|
will be called i2c-pnx.
|
||||||
|
|
||||||
config I2C_PNX_EARLY
|
|
||||||
bool "Early initialization for I2C on PNXxxxx"
|
|
||||||
depends on I2C_PNX=y
|
|
||||||
help
|
|
||||||
Under certain circumstances one may need to make sure I2C on PNXxxxx
|
|
||||||
is initialized earlier than some other driver that depends on it
|
|
||||||
(for instance, that might be USB in case of PNX4008). With this
|
|
||||||
option turned on you can guarantee that.
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -529,6 +529,8 @@ mv64xxx_i2c_probe(struct platform_device *pd)
|
||||||
platform_set_drvdata(pd, drv_data);
|
platform_set_drvdata(pd, drv_data);
|
||||||
i2c_set_adapdata(&drv_data->adapter, drv_data);
|
i2c_set_adapdata(&drv_data->adapter, drv_data);
|
||||||
|
|
||||||
|
mv64xxx_i2c_hw_init(drv_data);
|
||||||
|
|
||||||
if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
|
if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
|
||||||
MV64XXX_I2C_CTLR_NAME, drv_data)) {
|
MV64XXX_I2C_CTLR_NAME, drv_data)) {
|
||||||
dev_err(&drv_data->adapter.dev,
|
dev_err(&drv_data->adapter.dev,
|
||||||
|
@ -542,8 +544,6 @@ mv64xxx_i2c_probe(struct platform_device *pd)
|
||||||
goto exit_free_irq;
|
goto exit_free_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
mv64xxx_i2c_hw_init(drv_data);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
exit_free_irq:
|
exit_free_irq:
|
||||||
|
|
|
@ -305,8 +305,7 @@ static int i2c_pnx_master_rcv(struct i2c_adapter *adap)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static irqreturn_t
|
static irqreturn_t i2c_pnx_interrupt(int irq, void *dev_id)
|
||||||
i2c_pnx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
u32 stat, ctl;
|
u32 stat, ctl;
|
||||||
struct i2c_adapter *adap = dev_id;
|
struct i2c_adapter *adap = dev_id;
|
||||||
|
@ -699,10 +698,6 @@ MODULE_AUTHOR("Vitaly Wool, Dennis Kovalev <source@mvista.com>");
|
||||||
MODULE_DESCRIPTION("I2C driver for Philips IP3204-based I2C busses");
|
MODULE_DESCRIPTION("I2C driver for Philips IP3204-based I2C busses");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
#ifdef CONFIG_I2C_PNX_EARLY
|
|
||||||
/* We need to make sure I2C is initialized before USB */
|
/* We need to make sure I2C is initialized before USB */
|
||||||
subsys_initcall(i2c_adap_pnx_init);
|
subsys_initcall(i2c_adap_pnx_init);
|
||||||
#else
|
|
||||||
mudule_init(i2c_adap_pnx_init);
|
|
||||||
#endif
|
|
||||||
module_exit(i2c_adap_pnx_exit);
|
module_exit(i2c_adap_pnx_exit);
|
||||||
|
|
|
@ -209,6 +209,7 @@ m41t00_set(void *arg)
|
||||||
buf[m41t00_chip->hour] = (buf[m41t00_chip->hour] & ~0x3f) | (hour& 0x3f);
|
buf[m41t00_chip->hour] = (buf[m41t00_chip->hour] & ~0x3f) | (hour& 0x3f);
|
||||||
buf[m41t00_chip->day] = (buf[m41t00_chip->day] & ~0x3f) | (day & 0x3f);
|
buf[m41t00_chip->day] = (buf[m41t00_chip->day] & ~0x3f) | (day & 0x3f);
|
||||||
buf[m41t00_chip->mon] = (buf[m41t00_chip->mon] & ~0x1f) | (mon & 0x1f);
|
buf[m41t00_chip->mon] = (buf[m41t00_chip->mon] & ~0x1f) | (mon & 0x1f);
|
||||||
|
buf[m41t00_chip->year] = year;
|
||||||
|
|
||||||
if (i2c_master_send(save_client, wbuf, 9) < 0)
|
if (i2c_master_send(save_client, wbuf, 9) < 0)
|
||||||
dev_err(&save_client->dev, "m41t00_set: Write error\n");
|
dev_err(&save_client->dev, "m41t00_set: Write error\n");
|
||||||
|
|
|
@ -95,16 +95,32 @@ struct device_driver i2c_adapter_driver = {
|
||||||
.bus = &i2c_bus_type,
|
.bus = &i2c_bus_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* I2C bus adapters -- one roots each I2C or SMBUS segment */
|
||||||
|
|
||||||
static void i2c_adapter_class_dev_release(struct class_device *dev)
|
static void i2c_adapter_class_dev_release(struct class_device *dev)
|
||||||
{
|
{
|
||||||
struct i2c_adapter *adap = class_dev_to_i2c_adapter(dev);
|
struct i2c_adapter *adap = class_dev_to_i2c_adapter(dev);
|
||||||
complete(&adap->class_dev_released);
|
complete(&adap->class_dev_released);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t i2c_adapter_show_name(struct class_device *cdev, char *buf)
|
||||||
|
{
|
||||||
|
struct i2c_adapter *adap = class_dev_to_i2c_adapter(cdev);
|
||||||
|
return sprintf(buf, "%s\n", adap->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct class_device_attribute i2c_adapter_attrs[] = {
|
||||||
|
__ATTR(name, S_IRUGO, i2c_adapter_show_name, NULL),
|
||||||
|
{ },
|
||||||
|
};
|
||||||
|
|
||||||
struct class i2c_adapter_class = {
|
struct class i2c_adapter_class = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.name = "i2c-adapter",
|
.name = "i2c-adapter",
|
||||||
.release = &i2c_adapter_class_dev_release,
|
.class_dev_attrs = i2c_adapter_attrs,
|
||||||
|
.release = &i2c_adapter_class_dev_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
|
static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
|
||||||
|
@ -175,8 +191,12 @@ int i2c_add_adapter(struct i2c_adapter *adap)
|
||||||
* If the parent pointer is not set up,
|
* If the parent pointer is not set up,
|
||||||
* we add this adapter to the host bus.
|
* we add this adapter to the host bus.
|
||||||
*/
|
*/
|
||||||
if (adap->dev.parent == NULL)
|
if (adap->dev.parent == NULL) {
|
||||||
adap->dev.parent = &platform_bus;
|
adap->dev.parent = &platform_bus;
|
||||||
|
printk(KERN_WARNING "**WARNING** I2C adapter driver [%s] "
|
||||||
|
"forgot to specify physical device; fix it!\n",
|
||||||
|
adap->name);
|
||||||
|
}
|
||||||
sprintf(adap->dev.bus_id, "i2c-%d", adap->nr);
|
sprintf(adap->dev.bus_id, "i2c-%d", adap->nr);
|
||||||
adap->dev.driver = &i2c_adapter_driver;
|
adap->dev.driver = &i2c_adapter_driver;
|
||||||
adap->dev.release = &i2c_adapter_dev_release;
|
adap->dev.release = &i2c_adapter_dev_release;
|
||||||
|
|
Loading…
Reference in New Issue