w1: fix omap 1-wire driver compilation
[safe/jmp/linux-2.6] / drivers / mfd / sm501.c
index 0e5761f..bc9275c 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/platform_device.h>
 #include <linux/pci.h>
 #include <linux/i2c-gpio.h>
+#include <linux/slab.h>
 
 #include <linux/sm501.h>
 #include <linux/sm501-regs.h>
@@ -367,7 +368,8 @@ int sm501_unit_power(struct device *dev, unsigned int unit, unsigned int to)
                break;
 
        default:
-               return -1;
+               gate = -1;
+               goto already;
        }
 
        writel(mode, sm->regs + SM501_POWER_MODE_CONTROL);
@@ -522,7 +524,7 @@ unsigned long sm501_set_clock(struct device *dev,
        unsigned long clock = readl(sm->regs + SM501_CURRENT_CLOCK);
        unsigned char reg;
        unsigned int pll_reg = 0;
-       unsigned long sm501_freq; /* the actual frequency acheived */
+       unsigned long sm501_freq; /* the actual frequency achieved */
 
        struct sm501_clock to;
 
@@ -532,7 +534,7 @@ unsigned long sm501_set_clock(struct device *dev,
 
        switch (clksrc) {
        case SM501_CLOCK_P2XCLK:
-               /* This clock is divided in half so to achive the
+               /* This clock is divided in half so to achieve the
                 * requested frequency the value must be multiplied by
                 * 2. This clock also has an additional pre divisor */
 
@@ -561,7 +563,7 @@ unsigned long sm501_set_clock(struct device *dev,
                break;
 
        case SM501_CLOCK_V2XCLK:
-               /* This clock is divided in half so to achive the
+               /* This clock is divided in half so to achieve the
                 * requested frequency the value must be multiplied by 2. */
 
                sm501_freq = (sm501_select_clock(2 * req_freq, &to, 3) / 2);
@@ -647,7 +649,7 @@ unsigned long sm501_find_clock(struct device *dev,
                               unsigned long req_freq)
 {
        struct sm501_devdata *sm = dev_get_drvdata(dev);
-       unsigned long sm501_freq; /* the frequency achiveable by the 501 */
+       unsigned long sm501_freq; /* the frequency achieveable by the 501 */
        struct sm501_clock to;
 
        switch (clksrc) {
@@ -1050,7 +1052,7 @@ static int __devinit sm501_gpio_register_chip(struct sm501_devdata *sm,
        return gpiochip_add(gchip);
 }
 
-static int sm501_register_gpio(struct sm501_devdata *sm)
+static int __devinit sm501_register_gpio(struct sm501_devdata *sm)
 {
        struct sm501_gpio *gpio = &sm->gpio;
        resource_size_t iobase = sm->io_res->start + SM501_GPIO;
@@ -1321,7 +1323,7 @@ static unsigned int sm501_mem_local[] = {
  * Common init code for an SM501
 */
 
-static int sm501_init_dev(struct sm501_devdata *sm)
+static int __devinit sm501_init_dev(struct sm501_devdata *sm)
 {
        struct sm501_initdata *idata;
        struct sm501_platdata *pdata;
@@ -1397,7 +1399,7 @@ static int sm501_init_dev(struct sm501_devdata *sm)
        return 0;
 }
 
-static int sm501_plat_probe(struct platform_device *dev)
+static int __devinit sm501_plat_probe(struct platform_device *dev)
 {
        struct sm501_devdata *sm;
        int ret;
@@ -1439,8 +1441,7 @@ static int sm501_plat_probe(struct platform_device *dev)
 
        platform_set_drvdata(dev, sm);
 
-       sm->regs = ioremap(sm->io_res->start,
-                          (sm->io_res->end - sm->io_res->start) - 1);
+       sm->regs = ioremap(sm->io_res->start, resource_size(sm->io_res));
 
        if (sm->regs == NULL) {
                dev_err(&dev->dev, "cannot remap registers\n");
@@ -1586,8 +1587,8 @@ static struct sm501_platdata sm501_pci_platdata = {
        .gpio_base      = -1,
 };
 
-static int sm501_pci_probe(struct pci_dev *dev,
-                          const struct pci_device_id *id)
+static int __devinit sm501_pci_probe(struct pci_dev *dev,
+                                    const struct pci_device_id *id)
 {
        struct sm501_devdata *sm;
        int err;
@@ -1693,7 +1694,7 @@ static void sm501_dev_remove(struct sm501_devdata *sm)
        sm501_gpio_remove(sm);
 }
 
-static void sm501_pci_remove(struct pci_dev *dev)
+static void __devexit sm501_pci_remove(struct pci_dev *dev)
 {
        struct sm501_devdata *sm = pci_get_drvdata(dev);
 
@@ -1727,16 +1728,16 @@ static struct pci_device_id sm501_pci_tbl[] = {
 
 MODULE_DEVICE_TABLE(pci, sm501_pci_tbl);
 
-static struct pci_driver sm501_pci_drv = {
+static struct pci_driver sm501_pci_driver = {
        .name           = "sm501",
        .id_table       = sm501_pci_tbl,
        .probe          = sm501_pci_probe,
-       .remove         = sm501_pci_remove,
+       .remove         = __devexit_p(sm501_pci_remove),
 };
 
 MODULE_ALIAS("platform:sm501");
 
-static struct platform_driver sm501_plat_drv = {
+static struct platform_driver sm501_plat_driver = {
        .driver         = {
                .name   = "sm501",
                .owner  = THIS_MODULE,
@@ -1749,14 +1750,14 @@ static struct platform_driver sm501_plat_drv = {
 
 static int __init sm501_base_init(void)
 {
-       platform_driver_register(&sm501_plat_drv);
-       return pci_register_driver(&sm501_pci_drv);
+       platform_driver_register(&sm501_plat_driver);
+       return pci_register_driver(&sm501_pci_driver);
 }
 
 static void __exit sm501_base_exit(void)
 {
-       platform_driver_unregister(&sm501_plat_drv);
-       pci_unregister_driver(&sm501_pci_drv);
+       platform_driver_unregister(&sm501_plat_driver);
+       pci_unregister_driver(&sm501_pci_driver);
 }
 
 module_init(sm501_base_init);