Merge commit 'origin' into master
Manual merge of: arch/powerpc/Kconfig arch/powerpc/include/asm/page.h
This commit is contained in:
@@ -332,10 +332,6 @@ static int __devinit amd756_probe(struct pci_dev *pdev,
|
||||
int error;
|
||||
u8 temp;
|
||||
|
||||
/* driver_data might come from user-space, so check it */
|
||||
if (id->driver_data >= ARRAY_SIZE(chipname))
|
||||
return -EINVAL;
|
||||
|
||||
if (amd756_ioport) {
|
||||
dev_err(&pdev->dev, "Only one device supported "
|
||||
"(you have a strange motherboard, btw)\n");
|
||||
@@ -412,7 +408,6 @@ static struct pci_driver amd756_driver = {
|
||||
.id_table = amd756_ids,
|
||||
.probe = amd756_probe,
|
||||
.remove = __devexit_p(amd756_remove),
|
||||
.dynids.use_driver_data = 1,
|
||||
};
|
||||
|
||||
static int __init amd756_init(void)
|
||||
|
@@ -589,11 +589,16 @@ omap_i2c_probe(struct platform_device *pdev)
|
||||
|
||||
dev->dev = &pdev->dev;
|
||||
dev->irq = irq->start;
|
||||
dev->base = (void __iomem *) IO_ADDRESS(mem->start);
|
||||
dev->base = ioremap(mem->start, mem->end - mem->start + 1);
|
||||
if (!dev->base) {
|
||||
r = -ENOMEM;
|
||||
goto err_free_mem;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, dev);
|
||||
|
||||
if ((r = omap_i2c_get_clocks(dev)) != 0)
|
||||
goto err_free_mem;
|
||||
goto err_iounmap;
|
||||
|
||||
omap_i2c_unidle(dev);
|
||||
|
||||
@@ -640,6 +645,8 @@ err_unuse_clocks:
|
||||
omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
|
||||
omap_i2c_idle(dev);
|
||||
omap_i2c_put_clocks(dev);
|
||||
err_iounmap:
|
||||
iounmap(dev->base);
|
||||
err_free_mem:
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
kfree(dev);
|
||||
@@ -661,6 +668,7 @@ omap_i2c_remove(struct platform_device *pdev)
|
||||
i2c_del_adapter(&dev->adapter);
|
||||
omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
|
||||
omap_i2c_put_clocks(dev);
|
||||
iounmap(dev->base);
|
||||
kfree(dev);
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
release_mem_region(mem->start, (mem->end - mem->start) + 1);
|
||||
|
@@ -259,6 +259,35 @@ static int __devinit i2c_powermac_probe(struct platform_device *dev)
|
||||
}
|
||||
|
||||
printk(KERN_INFO "PowerMac i2c bus %s registered\n", name);
|
||||
|
||||
if (!strncmp(basename, "uni-n", 5)) {
|
||||
struct device_node *np;
|
||||
const u32 *prop;
|
||||
struct i2c_board_info info;
|
||||
|
||||
/* Instantiate I2C motion sensor if present */
|
||||
np = of_find_node_by_name(NULL, "accelerometer");
|
||||
if (np && of_device_is_compatible(np, "AAPL,accelerometer_1") &&
|
||||
(prop = of_get_property(np, "reg", NULL))) {
|
||||
int i2c_bus;
|
||||
const char *tmp_bus;
|
||||
|
||||
/* look for bus either using "reg" or by path */
|
||||
tmp_bus = strstr(np->full_name, "/i2c-bus@");
|
||||
if (tmp_bus)
|
||||
i2c_bus = *(tmp_bus + 9) - '0';
|
||||
else
|
||||
i2c_bus = ((*prop) >> 8) & 0x0f;
|
||||
|
||||
if (pmac_i2c_get_channel(bus) == i2c_bus) {
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
info.addr = ((*prop) & 0xff) >> 1;
|
||||
strlcpy(info.type, "ams", I2C_NAME_SIZE);
|
||||
i2c_new_device(adapter, &info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@@ -332,10 +332,6 @@ static int __devinit vt596_probe(struct pci_dev *pdev,
|
||||
unsigned char temp;
|
||||
int error = -ENODEV;
|
||||
|
||||
/* driver_data might come from user-space, so check it */
|
||||
if (id->driver_data & 1 || id->driver_data > 0xff)
|
||||
return -EINVAL;
|
||||
|
||||
/* Determine the address of the SMBus areas */
|
||||
if (force_addr) {
|
||||
vt596_smba = force_addr & 0xfff0;
|
||||
@@ -483,7 +479,6 @@ static struct pci_driver vt596_driver = {
|
||||
.name = "vt596_smbus",
|
||||
.id_table = vt596_ids,
|
||||
.probe = vt596_probe,
|
||||
.dynids.use_driver_data = 1,
|
||||
};
|
||||
|
||||
static int __init i2c_vt596_init(void)
|
||||
|
@@ -460,7 +460,6 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
*/
|
||||
at24->bin.attr.name = "eeprom";
|
||||
at24->bin.attr.mode = chip.flags & AT24_FLAG_IRUGO ? S_IRUGO : S_IRUSR;
|
||||
at24->bin.attr.owner = THIS_MODULE;
|
||||
at24->bin.read = at24_bin_read;
|
||||
at24->bin.size = chip.byte_len;
|
||||
|
||||
|
@@ -190,7 +190,6 @@ static struct bin_attribute ds1682_eeprom_attr = {
|
||||
.attr = {
|
||||
.name = "eeprom",
|
||||
.mode = S_IRUGO | S_IWUSR,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.size = DS1682_EEPROM_SIZE,
|
||||
.read = ds1682_eeprom_read,
|
||||
|
@@ -832,52 +832,52 @@ static irqreturn_t menelaus_irq(int irq, void *_menelaus)
|
||||
|
||||
static void menelaus_to_time(char *regs, struct rtc_time *t)
|
||||
{
|
||||
t->tm_sec = BCD2BIN(regs[0]);
|
||||
t->tm_min = BCD2BIN(regs[1]);
|
||||
t->tm_sec = bcd2bin(regs[0]);
|
||||
t->tm_min = bcd2bin(regs[1]);
|
||||
if (the_menelaus->rtc_control & RTC_CTRL_MODE12) {
|
||||
t->tm_hour = BCD2BIN(regs[2] & 0x1f) - 1;
|
||||
t->tm_hour = bcd2bin(regs[2] & 0x1f) - 1;
|
||||
if (regs[2] & RTC_HR_PM)
|
||||
t->tm_hour += 12;
|
||||
} else
|
||||
t->tm_hour = BCD2BIN(regs[2] & 0x3f);
|
||||
t->tm_mday = BCD2BIN(regs[3]);
|
||||
t->tm_mon = BCD2BIN(regs[4]) - 1;
|
||||
t->tm_year = BCD2BIN(regs[5]) + 100;
|
||||
t->tm_hour = bcd2bin(regs[2] & 0x3f);
|
||||
t->tm_mday = bcd2bin(regs[3]);
|
||||
t->tm_mon = bcd2bin(regs[4]) - 1;
|
||||
t->tm_year = bcd2bin(regs[5]) + 100;
|
||||
}
|
||||
|
||||
static int time_to_menelaus(struct rtc_time *t, int regnum)
|
||||
{
|
||||
int hour, status;
|
||||
|
||||
status = menelaus_write_reg(regnum++, BIN2BCD(t->tm_sec));
|
||||
status = menelaus_write_reg(regnum++, bin2bcd(t->tm_sec));
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
status = menelaus_write_reg(regnum++, BIN2BCD(t->tm_min));
|
||||
status = menelaus_write_reg(regnum++, bin2bcd(t->tm_min));
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
if (the_menelaus->rtc_control & RTC_CTRL_MODE12) {
|
||||
hour = t->tm_hour + 1;
|
||||
if (hour > 12)
|
||||
hour = RTC_HR_PM | BIN2BCD(hour - 12);
|
||||
hour = RTC_HR_PM | bin2bcd(hour - 12);
|
||||
else
|
||||
hour = BIN2BCD(hour);
|
||||
hour = bin2bcd(hour);
|
||||
} else
|
||||
hour = BIN2BCD(t->tm_hour);
|
||||
hour = bin2bcd(t->tm_hour);
|
||||
status = menelaus_write_reg(regnum++, hour);
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
status = menelaus_write_reg(regnum++, BIN2BCD(t->tm_mday));
|
||||
status = menelaus_write_reg(regnum++, bin2bcd(t->tm_mday));
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
status = menelaus_write_reg(regnum++, BIN2BCD(t->tm_mon + 1));
|
||||
status = menelaus_write_reg(regnum++, bin2bcd(t->tm_mon + 1));
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
status = menelaus_write_reg(regnum++, BIN2BCD(t->tm_year - 100));
|
||||
status = menelaus_write_reg(regnum++, bin2bcd(t->tm_year - 100));
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
@@ -914,7 +914,7 @@ static int menelaus_read_time(struct device *dev, struct rtc_time *t)
|
||||
}
|
||||
|
||||
menelaus_to_time(regs, t);
|
||||
t->tm_wday = BCD2BIN(regs[6]);
|
||||
t->tm_wday = bcd2bin(regs[6]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -927,7 +927,7 @@ static int menelaus_set_time(struct device *dev, struct rtc_time *t)
|
||||
status = time_to_menelaus(t, MENELAUS_RTC_SEC);
|
||||
if (status < 0)
|
||||
return status;
|
||||
status = menelaus_write_reg(MENELAUS_RTC_WKDAY, BIN2BCD(t->tm_wday));
|
||||
status = menelaus_write_reg(MENELAUS_RTC_WKDAY, bin2bcd(t->tm_wday));
|
||||
if (status < 0) {
|
||||
dev_err(&the_menelaus->client->dev, "rtc write reg %02x "
|
||||
"err %d\n", MENELAUS_RTC_WKDAY, status);
|
||||
|
@@ -521,9 +521,9 @@ static int i2cdev_attach_adapter(struct i2c_adapter *adap)
|
||||
return PTR_ERR(i2c_dev);
|
||||
|
||||
/* register this i2c device with the driver core */
|
||||
i2c_dev->dev = device_create_drvdata(i2c_dev_class, &adap->dev,
|
||||
MKDEV(I2C_MAJOR, adap->nr),
|
||||
NULL, "i2c-%d", adap->nr);
|
||||
i2c_dev->dev = device_create(i2c_dev_class, &adap->dev,
|
||||
MKDEV(I2C_MAJOR, adap->nr), NULL,
|
||||
"i2c-%d", adap->nr);
|
||||
if (IS_ERR(i2c_dev->dev)) {
|
||||
res = PTR_ERR(i2c_dev->dev);
|
||||
goto error;
|
||||
|
Reference in New Issue
Block a user