rendered paste bodyIndex: asic3_base.c===================================================================RCS file: /cvs/linux/kernel26/drivers/soc/asic3_base.c,vretrieving revision 1.21diff -u -r1.21 asic3_base.c--- asic3_base.c 19 Nov 2006 23:08:17 -0000 1.21+++ asic3_base.c 30 Nov 2006 17:34:51 -0000@@ -49,29 +49,29 @@ static spinlock_t asic3_gpio_lock; -static int asic3_remove (struct device *dev);+static int asic3_remove (struct platform_device *pdev); static inline unsigned long-asic3_address (struct device *dev, unsigned int reg)+asic3_address (struct platform_device *pdev, unsigned int reg) { struct asic3_data *adata; - adata = (struct asic3_data *)dev->driver_data;+ adata = (struct asic3_data *)platform_get_drvdata(pdev); return (unsigned long)adata->mapping + (reg >> (2 - adata->bus_shift)); } void-asic3_write_register (struct device *dev, unsigned int reg, unsigned long value)+asic3_write_register (struct platform_device *pdev, unsigned int reg, unsigned long value) {- __raw_writew (value, asic3_address (dev, reg));+ __raw_writew (value, asic3_address (pdev, reg)); } EXPORT_SYMBOL(asic3_write_register); unsigned long-asic3_read_register (struct device *dev, unsigned int reg)+asic3_read_register (struct platform_device *pdev, unsigned int reg) {- return __raw_readw (asic3_address (dev, reg));+ return __raw_readw (asic3_address (pdev, reg)); } EXPORT_SYMBOL(asic3_read_register); @@ -89,20 +89,20 @@ #define ASIC3_GPIO_FN(get_fn_name, set_fn_name, REG) \ u32 \-get_fn_name (struct device *dev) \+get_fn_name (struct platform_device *dev) \ { \- return asic3_read_register (dev, REG); \+ return asic3_read_register (pdev, REG); \ } \ EXPORT_SYMBOL( get_fn_name ); \ \ void \-set_fn_name (struct device *dev, u32 bits, u32 val) \+set_fn_name (struct platform_device *pdev, u32 bits, u32 val) \ { \ unsigned long flags; \ \ spin_lock_irqsave (&asic3_gpio_lock, flags); \- val |= (asic3_read_register (dev, REG) & ~bits); \- asic3_write_register (dev, REG, val); \+ val |= (asic3_read_register (pdev, REG) & ~bits); \+ asic3_write_register (pdev, REG, val); \ spin_unlock_irqrestore (&asic3_gpio_lock, flags); \ } \ EXPORT_SYMBOL(set_fn_name);@@ -135,18 +135,18 @@ ASIC3_GPIO_FUNCTIONS(c, C) ASIC3_GPIO_FUNCTIONS(d, D) -int asic3_get_gpio_bit(struct device *dev, int gpio)+int asic3_get_gpio_bit(struct platform_device *pdev, int gpio) { u32 mask = ASIC3_GPIO_bit(gpio); switch (gpio >> 4) { case _IPAQ_ASIC3_GPIO_BANK_A:- return asic3_get_gpio_status_a(dev) & mask;+ return asic3_get_gpio_status_a(pdev) & mask; case _IPAQ_ASIC3_GPIO_BANK_B:- return asic3_get_gpio_status_b(dev) & mask;+ return asic3_get_gpio_status_b(pdev) & mask; case _IPAQ_ASIC3_GPIO_BANK_C:- return asic3_get_gpio_status_c(dev) & mask;+ return asic3_get_gpio_status_c(pdev) & mask; case _IPAQ_ASIC3_GPIO_BANK_D:- return asic3_get_gpio_status_d(dev) & mask;+ return asic3_get_gpio_status_d(pdev) & mask; } printk("%s: invalid GPIO value 0x%x", __FUNCTION__, gpio);@@ -156,9 +156,9 @@ EXPORT_SYMBOL(asic3_get_gpio_bit); int-asic3_irq_base (struct device *dev)+asic3_irq_base (struct platform_device *pdev) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); return asic->irq_base; }@@ -166,9 +166,9 @@ EXPORT_SYMBOL(asic3_irq_base); void -asic3_set_led (struct device *dev, int led_num, int duty_time, int cycle_time)+asic3_set_led (struct platform_device *pdev, int led_num, int duty_time, int cycle_time) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); unsigned int led_base; /* it's a macro thing: see #define _IPAQ_ASIC_LED_0_Base for why you@@ -200,9 +200,9 @@ EXPORT_SYMBOL(asic3_set_led); void-asic3_set_clock_sel (struct device *dev, unsigned long bits, unsigned long val)+asic3_set_clock_sel (struct platform_device *pdev, unsigned long bits, unsigned long val) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); unsigned long flags, v; spin_lock_irqsave (&asic3_gpio_lock, flags);@@ -214,9 +214,9 @@ EXPORT_SYMBOL (asic3_set_clock_sel); void-asic3_set_clock_cdex (struct device *dev, unsigned long bits, unsigned long val)+asic3_set_clock_cdex (struct platform_device *pdev, unsigned long bits, unsigned long val) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); unsigned long flags, v; spin_lock_irqsave (&asic3_gpio_lock, flags);@@ -228,9 +228,9 @@ EXPORT_SYMBOL (asic3_set_clock_cdex); void-asic3_set_extcf_select (struct device *dev, unsigned long bits, unsigned long val)+asic3_set_extcf_select (struct platform_device *pdev, unsigned long bits, unsigned long val) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); unsigned long flags, v; spin_lock_irqsave (&asic3_gpio_lock, flags);@@ -242,9 +242,9 @@ EXPORT_SYMBOL (asic3_set_extcf_select); void-asic3_set_extcf_reset (struct device *dev, unsigned long bits, unsigned long val)+asic3_set_extcf_reset (struct platform_device *pdev, unsigned long bits, unsigned long val) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); unsigned long flags, v; spin_lock_irqsave (&asic3_gpio_lock, flags);@@ -256,9 +256,9 @@ EXPORT_SYMBOL (asic3_set_extcf_reset); void-asic3_set_sdhwctrl (struct device *dev, unsigned long bits, unsigned long val)+asic3_set_sdhwctrl (struct platform_device *pdev, unsigned long bits, unsigned long val) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); unsigned long flags, v; spin_lock_irqsave (&asic3_gpio_lock, flags);@@ -550,21 +550,18 @@ }; static void-asic3_release (struct device *dev)+asic3_release (struct platform_device *sdev) {- struct platform_device *sdev = to_platform_device (dev);- kfree (sdev->resource); kfree (sdev); } int-asic3_register_mmc (struct device *dev)+asic3_register_mmc (struct platform_device *pdev) { struct platform_device *sdev = kmalloc (sizeof (*sdev), GFP_KERNEL); struct tmio_mmc_hwconfig *mmc_config = kmalloc (sizeof (*mmc_config), GFP_KERNEL);- struct platform_device *pdev = to_platform_device (dev);- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); struct resource *res; int rc; @@ -611,9 +608,9 @@ EXPORT_SYMBOL(asic3_register_mmc); int-asic3_unregister_mmc (struct device *dev)+asic3_unregister_mmc (struct platform_device *pdev) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); platform_device_unregister (asic->mmc_dev); asic->mmc_dev = 0; @@ -622,10 +619,9 @@ EXPORT_SYMBOL(asic3_unregister_mmc); static int -asic3_probe (struct device *dev)+asic3_probe (struct platform_device *pdev) {- struct platform_device *pdev = to_platform_device (dev);- struct asic3_platform_data *pdata = dev->platform_data;+ struct asic3_platform_data *pdata = pdev->dev.platform_data; struct asic3_data *asic; unsigned long clksel; @@ -635,7 +631,7 @@ memset (asic, 0, sizeof (*asic)); spin_lock_init (&asic3_gpio_lock);- dev->driver_data = asic;+ platform_set_drvdata(pdev, asic); asic->mapping = ioremap ((unsigned long)pdev->resource[0].start, IPAQ_ASIC3_MAP_SIZE); if (!asic->mapping) {@@ -658,46 +654,46 @@ __asic3_write_register (asic, _IPAQ_ASIC3_GPIO_C_Base + _IPAQ_ASIC3_GPIO_Mask, 0xffff); __asic3_write_register (asic, _IPAQ_ASIC3_GPIO_D_Base + _IPAQ_ASIC3_GPIO_Mask, 0xffff); - asic3_set_gpio_sleepmask_a (dev, 0xffff, 0xffff);- asic3_set_gpio_sleepmask_b (dev, 0xffff, 0xffff);- asic3_set_gpio_sleepmask_c (dev, 0xffff, 0xffff);- asic3_set_gpio_sleepmask_d (dev, 0xffff, 0xffff);+ asic3_set_gpio_sleepmask_a (pdev, 0xffff, 0xffff);+ asic3_set_gpio_sleepmask_b (pdev, 0xffff, 0xffff);+ asic3_set_gpio_sleepmask_c (pdev, 0xffff, 0xffff);+ asic3_set_gpio_sleepmask_d (pdev, 0xffff, 0xffff); if (pdata) {- asic3_set_gpio_out_a(dev, 0xffff, pdata->gpio_a.init);- asic3_set_gpio_out_b(dev, 0xffff, pdata->gpio_b.init);- asic3_set_gpio_out_c(dev, 0xffff, pdata->gpio_c.init);- asic3_set_gpio_out_d(dev, 0xffff, pdata->gpio_d.init);-- asic3_set_gpio_dir_a(dev, 0xffff, pdata->gpio_a.dir);- asic3_set_gpio_dir_b(dev, 0xffff, pdata->gpio_b.dir);- asic3_set_gpio_dir_c(dev, 0xffff, pdata->gpio_c.dir);- asic3_set_gpio_dir_d(dev, 0xffff, pdata->gpio_d.dir);-- asic3_set_gpio_sleepmask_a(dev, 0xffff, pdata->gpio_a.sleep_mask);- asic3_set_gpio_sleepmask_b(dev, 0xffff, pdata->gpio_b.sleep_mask);- asic3_set_gpio_sleepmask_c(dev, 0xffff, pdata->gpio_c.sleep_mask);- asic3_set_gpio_sleepmask_d(dev, 0xffff, pdata->gpio_d.sleep_mask);-- asic3_set_gpio_sleepout_a(dev, 0xffff, pdata->gpio_a.sleep_out);- asic3_set_gpio_sleepout_b(dev, 0xffff, pdata->gpio_b.sleep_out);- asic3_set_gpio_sleepout_c(dev, 0xffff, pdata->gpio_c.sleep_out);- asic3_set_gpio_sleepout_d(dev, 0xffff, pdata->gpio_d.sleep_out);-- asic3_set_gpio_battfaultout_a(dev, 0xffff, pdata->gpio_a.batt_fault_out);- asic3_set_gpio_battfaultout_b(dev, 0xffff, pdata->gpio_b.batt_fault_out);- asic3_set_gpio_battfaultout_c(dev, 0xffff, pdata->gpio_c.batt_fault_out);- asic3_set_gpio_battfaultout_d(dev, 0xffff, pdata->gpio_d.batt_fault_out);-- asic3_set_gpio_sleepconf_a(dev, 0xffff, pdata->gpio_a.sleep_conf);- asic3_set_gpio_sleepconf_b(dev, 0xffff, pdata->gpio_b.sleep_conf);- asic3_set_gpio_sleepconf_c(dev, 0xffff, pdata->gpio_c.sleep_conf);- asic3_set_gpio_sleepconf_d(dev, 0xffff, pdata->gpio_d.sleep_conf);-- asic3_set_gpio_alt_fn_a(dev, 0xffff, pdata->gpio_a.alt_function);- asic3_set_gpio_alt_fn_b(dev, 0xffff, pdata->gpio_b.alt_function);- asic3_set_gpio_alt_fn_c(dev, 0xffff, pdata->gpio_c.alt_function);- asic3_set_gpio_alt_fn_d(dev, 0xffff, pdata->gpio_d.alt_function);+ asic3_set_gpio_out_a(pdev, 0xffff, pdata->gpio_a.init);+ asic3_set_gpio_out_b(pdev, 0xffff, pdata->gpio_b.init);+ asic3_set_gpio_out_c(pdev, 0xffff, pdata->gpio_c.init);+ asic3_set_gpio_out_d(pdev, 0xffff, pdata->gpio_d.init);++ asic3_set_gpio_dir_a(pdev, 0xffff, pdata->gpio_a.dir);+ asic3_set_gpio_dir_b(pdev, 0xffff, pdata->gpio_b.dir);+ asic3_set_gpio_dir_c(pdev, 0xffff, pdata->gpio_c.dir);+ asic3_set_gpio_dir_d(pdev, 0xffff, pdata->gpio_d.dir);++ asic3_set_gpio_sleepmask_a(pdev, 0xffff, pdata->gpio_a.sleep_mask);+ asic3_set_gpio_sleepmask_b(pdev, 0xffff, pdata->gpio_b.sleep_mask);+ asic3_set_gpio_sleepmask_c(pdev, 0xffff, pdata->gpio_c.sleep_mask);+ asic3_set_gpio_sleepmask_d(pdev, 0xffff, pdata->gpio_d.sleep_mask);++ asic3_set_gpio_sleepout_a(pdev, 0xffff, pdata->gpio_a.sleep_out);+ asic3_set_gpio_sleepout_b(pdev, 0xffff, pdata->gpio_b.sleep_out);+ asic3_set_gpio_sleepout_c(pdev, 0xffff, pdata->gpio_c.sleep_out);+ asic3_set_gpio_sleepout_d(pdev, 0xffff, pdata->gpio_d.sleep_out);++ asic3_set_gpio_battfaultout_a(pdev, 0xffff, pdata->gpio_a.batt_fault_out);+ asic3_set_gpio_battfaultout_b(pdev, 0xffff, pdata->gpio_b.batt_fault_out);+ asic3_set_gpio_battfaultout_c(pdev, 0xffff, pdata->gpio_c.batt_fault_out);+ asic3_set_gpio_battfaultout_d(pdev, 0xffff, pdata->gpio_d.batt_fault_out);++ asic3_set_gpio_sleepconf_a(pdev, 0xffff, pdata->gpio_a.sleep_conf);+ asic3_set_gpio_sleepconf_b(pdev, 0xffff, pdata->gpio_b.sleep_conf);+ asic3_set_gpio_sleepconf_c(pdev, 0xffff, pdata->gpio_c.sleep_conf);+ asic3_set_gpio_sleepconf_d(pdev, 0xffff, pdata->gpio_d.sleep_conf);++ asic3_set_gpio_alt_fn_a(pdev, 0xffff, pdata->gpio_a.alt_function);+ asic3_set_gpio_alt_fn_b(pdev, 0xffff, pdata->gpio_b.alt_function);+ asic3_set_gpio_alt_fn_c(pdev, 0xffff, pdata->gpio_c.alt_function);+ asic3_set_gpio_alt_fn_d(pdev, 0xffff, pdata->gpio_d.alt_function); } asic->irq_nr = -1;@@ -712,7 +708,7 @@ asic->irq_base = alloc_irq_space (ASIC3_NR_IRQS); if (asic->irq_base == -1) { printk("asic3: unable to allocate %d IRQs\n", ASIC3_NR_IRQS);- asic3_remove (dev);+ asic3_remove (pdev); return -ENOMEM; } @@ -749,9 +745,9 @@ if (pdev->num_resources > 2) { int rc;- rc = asic3_register_mmc (dev);+ rc = asic3_register_mmc (pdev); if (rc) {- asic3_remove (dev);+ asic3_remove (pdev); return rc; } }@@ -763,11 +759,11 @@ } static int-asic3_remove (struct device *dev)+asic3_remove (struct platform_device *pdev) { struct asic3_data *asic;- struct asic3_platform_data *pdata = dev->platform_data;- asic = dev->driver_data;+ struct asic3_platform_data *pdata = pdev->dev.platform_data;+ asic = platform_get_drvdata(pdev); if (pdata && pdata->child_platform_devs && pdata->num_child_platform_devs != 0) { int i;@@ -792,7 +788,7 @@ } if (asic->mmc_dev)- asic3_unregister_mmc (dev);+ asic3_unregister_mmc (pdev); __asic3_write_register (asic, _IPAQ_ASIC3_CLOCK_Base + _IPAQ_ASIC3_CLOCK_SEL, 0); __asic3_write_register (asic, _IPAQ_ASIC3_INTR_Base + _IPAQ_ASIC3_INTR_IntMask, 0);@@ -805,16 +801,16 @@ } static void-asic3_shutdown (struct device *dev)+asic3_shutdown (struct platform_device *pdev) { } static unsigned short suspend_cdex; static int-asic3_suspend (struct device *dev, pm_message_t state)+asic3_suspend (struct platform_device *pdev, pm_message_t state) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); suspend_cdex = __asic3_read_register (asic, _IPAQ_ASIC3_CLOCK_Base + _IPAQ_ASIC3_CLOCK_CDEX); /* The LEDs are still active during suspend */@@ -825,9 +821,9 @@ } static int-asic3_resume (struct device *dev)+asic3_resume (struct platform_device *pdev) {- struct asic3_data *asic = dev->driver_data;+ struct asic3_data *asic = platform_get_drvdata(pdev); __asic3_write_register (asic, _IPAQ_ASIC3_INTR_Base + _IPAQ_ASIC3_CLOCK_CDEX, suspend_cdex );@@ -844,29 +840,29 @@ return 0; } -static struct device_driver asic3_device_driver = {- .name = "asic3",- .bus = &platform_bus_type,-+static struct platform_driver asic3_driver = { .probe = asic3_probe, .remove = asic3_remove, .suspend = asic3_suspend, .resume = asic3_resume, .shutdown = asic3_shutdown,+ .dev = {+ .name = "asic3",+ }, }; static int __init asic3_base_init (void) { int retval = 0;- retval = driver_register (&asic3_device_driver);+ retval = platform_driver_register (&asic3_driver); return retval; } static void __exit asic3_base_exit (void) {- driver_unregister (&asic3_device_driver);+ platform_driver_unregister (&asic3_driver); } #ifdef MODULE