mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
The merge is merely to fix conflicts before sending a pull request. Conflicts: drivers/power/ab8500_btemp.c drivers/power/ab8500_charger.c drivers/power/ab8500_fg.c drivers/power/abx500_chargalg.c drivers/power/max8925_power.c Signed-off-by: Anton Vorontsov <[email protected]>
This commit is contained in:
commit
76d8a23b12
3228 changed files with 96115 additions and 116943 deletions
|
|
@ -248,7 +248,7 @@ static const struct regmap_irq pm800_irqs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit device_gpadc_init(struct pm80x_chip *chip,
|
||||
static int device_gpadc_init(struct pm80x_chip *chip,
|
||||
struct pm80x_platform_data *pdata)
|
||||
{
|
||||
struct pm80x_subchip *subchip = chip->subchip;
|
||||
|
|
@ -315,7 +315,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit device_irq_init_800(struct pm80x_chip *chip)
|
||||
static int device_irq_init_800(struct pm80x_chip *chip)
|
||||
{
|
||||
struct regmap *map = chip->regmap;
|
||||
unsigned long flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT;
|
||||
|
|
@ -415,7 +415,7 @@ static void pm800_pages_exit(struct pm80x_chip *chip)
|
|||
}
|
||||
}
|
||||
|
||||
static int __devinit device_800_init(struct pm80x_chip *chip,
|
||||
static int device_800_init(struct pm80x_chip *chip,
|
||||
struct pm80x_platform_data *pdata)
|
||||
{
|
||||
int ret, pmic_id;
|
||||
|
|
@ -499,7 +499,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit pm800_probe(struct i2c_client *client,
|
||||
static int pm800_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
int ret = 0;
|
||||
|
|
@ -554,7 +554,7 @@ out_init:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit pm800_remove(struct i2c_client *client)
|
||||
static int pm800_remove(struct i2c_client *client)
|
||||
{
|
||||
struct pm80x_chip *chip = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -576,7 +576,7 @@ static struct i2c_driver pm800_driver = {
|
|||
.pm = &pm80x_pm_ops,
|
||||
},
|
||||
.probe = pm800_probe,
|
||||
.remove = __devexit_p(pm800_remove),
|
||||
.remove = pm800_remove,
|
||||
.id_table = pm80x_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ static struct regmap_irq pm805_irqs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit device_irq_init_805(struct pm80x_chip *chip)
|
||||
static int device_irq_init_805(struct pm80x_chip *chip)
|
||||
{
|
||||
struct regmap *map = chip->regmap;
|
||||
unsigned long flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT;
|
||||
|
|
@ -189,7 +189,7 @@ static struct regmap_irq_chip pm805_irq_chip = {
|
|||
.ack_base = PM805_INT_STATUS1,
|
||||
};
|
||||
|
||||
static int __devinit device_805_init(struct pm80x_chip *chip)
|
||||
static int device_805_init(struct pm80x_chip *chip)
|
||||
{
|
||||
int ret = 0;
|
||||
unsigned int val;
|
||||
|
|
@ -232,7 +232,7 @@ out_irq_init:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit pm805_probe(struct i2c_client *client,
|
||||
static int pm805_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
int ret = 0;
|
||||
|
|
@ -262,7 +262,7 @@ out_init:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit pm805_remove(struct i2c_client *client)
|
||||
static int pm805_remove(struct i2c_client *client)
|
||||
{
|
||||
struct pm80x_chip *chip = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -281,7 +281,7 @@ static struct i2c_driver pm805_driver = {
|
|||
.pm = &pm80x_pm_ops,
|
||||
},
|
||||
.probe = pm805_probe,
|
||||
.remove = __devexit_p(pm805_remove),
|
||||
.remove = pm805_remove,
|
||||
.id_table = pm80x_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ const struct regmap_config pm80x_regmap_config = {
|
|||
};
|
||||
EXPORT_SYMBOL_GPL(pm80x_regmap_config);
|
||||
|
||||
int __devinit pm80x_init(struct i2c_client *client,
|
||||
int pm80x_init(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct pm80x_chip *chip;
|
||||
|
|
|
|||
|
|
@ -28,111 +28,111 @@
|
|||
|
||||
#define INT_STATUS_NUM 3
|
||||
|
||||
static struct resource bk0_resources[] __devinitdata = {
|
||||
static struct resource bk0_resources[] = {
|
||||
{2, 2, "duty cycle", IORESOURCE_REG, },
|
||||
{3, 3, "always on", IORESOURCE_REG, },
|
||||
{3, 3, "current", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource bk1_resources[] __devinitdata = {
|
||||
static struct resource bk1_resources[] = {
|
||||
{4, 4, "duty cycle", IORESOURCE_REG, },
|
||||
{5, 5, "always on", IORESOURCE_REG, },
|
||||
{5, 5, "current", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource bk2_resources[] __devinitdata = {
|
||||
static struct resource bk2_resources[] = {
|
||||
{6, 6, "duty cycle", IORESOURCE_REG, },
|
||||
{7, 7, "always on", IORESOURCE_REG, },
|
||||
{5, 5, "current", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource led0_resources[] __devinitdata = {
|
||||
static struct resource led0_resources[] = {
|
||||
/* RGB1 Red LED */
|
||||
{0xd, 0xd, "control", IORESOURCE_REG, },
|
||||
{0xc, 0xc, "blink", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource led1_resources[] __devinitdata = {
|
||||
static struct resource led1_resources[] = {
|
||||
/* RGB1 Green LED */
|
||||
{0xe, 0xe, "control", IORESOURCE_REG, },
|
||||
{0xc, 0xc, "blink", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource led2_resources[] __devinitdata = {
|
||||
static struct resource led2_resources[] = {
|
||||
/* RGB1 Blue LED */
|
||||
{0xf, 0xf, "control", IORESOURCE_REG, },
|
||||
{0xc, 0xc, "blink", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource led3_resources[] __devinitdata = {
|
||||
static struct resource led3_resources[] = {
|
||||
/* RGB2 Red LED */
|
||||
{0x9, 0x9, "control", IORESOURCE_REG, },
|
||||
{0x8, 0x8, "blink", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource led4_resources[] __devinitdata = {
|
||||
static struct resource led4_resources[] = {
|
||||
/* RGB2 Green LED */
|
||||
{0xa, 0xa, "control", IORESOURCE_REG, },
|
||||
{0x8, 0x8, "blink", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource led5_resources[] __devinitdata = {
|
||||
static struct resource led5_resources[] = {
|
||||
/* RGB2 Blue LED */
|
||||
{0xb, 0xb, "control", IORESOURCE_REG, },
|
||||
{0x8, 0x8, "blink", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource buck1_resources[] __devinitdata = {
|
||||
static struct resource buck1_resources[] = {
|
||||
{0x24, 0x24, "buck set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource buck2_resources[] __devinitdata = {
|
||||
static struct resource buck2_resources[] = {
|
||||
{0x25, 0x25, "buck set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource buck3_resources[] __devinitdata = {
|
||||
static struct resource buck3_resources[] = {
|
||||
{0x26, 0x26, "buck set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo1_resources[] __devinitdata = {
|
||||
static struct resource ldo1_resources[] = {
|
||||
{0x10, 0x10, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo2_resources[] __devinitdata = {
|
||||
static struct resource ldo2_resources[] = {
|
||||
{0x11, 0x11, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo3_resources[] __devinitdata = {
|
||||
static struct resource ldo3_resources[] = {
|
||||
{0x12, 0x12, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo4_resources[] __devinitdata = {
|
||||
static struct resource ldo4_resources[] = {
|
||||
{0x13, 0x13, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo5_resources[] __devinitdata = {
|
||||
static struct resource ldo5_resources[] = {
|
||||
{0x14, 0x14, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo6_resources[] __devinitdata = {
|
||||
static struct resource ldo6_resources[] = {
|
||||
{0x15, 0x15, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo7_resources[] __devinitdata = {
|
||||
static struct resource ldo7_resources[] = {
|
||||
{0x16, 0x16, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo8_resources[] __devinitdata = {
|
||||
static struct resource ldo8_resources[] = {
|
||||
{0x17, 0x17, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo9_resources[] __devinitdata = {
|
||||
static struct resource ldo9_resources[] = {
|
||||
{0x18, 0x18, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo10_resources[] __devinitdata = {
|
||||
static struct resource ldo10_resources[] = {
|
||||
{0x19, 0x19, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo12_resources[] __devinitdata = {
|
||||
static struct resource ldo12_resources[] = {
|
||||
{0x1a, 0x1a, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo_vibrator_resources[] __devinitdata = {
|
||||
static struct resource ldo_vibrator_resources[] = {
|
||||
{0x28, 0x28, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
static struct resource ldo14_resources[] __devinitdata = {
|
||||
static struct resource ldo14_resources[] = {
|
||||
{0x1b, 0x1b, "ldo set", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource touch_resources[] __devinitdata = {
|
||||
static struct resource touch_resources[] = {
|
||||
{PM8607_IRQ_PEN, PM8607_IRQ_PEN, "touch", IORESOURCE_IRQ,},
|
||||
};
|
||||
|
||||
static struct resource onkey_resources[] __devinitdata = {
|
||||
static struct resource onkey_resources[] = {
|
||||
{PM8607_IRQ_ONKEY, PM8607_IRQ_ONKEY, "onkey", IORESOURCE_IRQ,},
|
||||
};
|
||||
|
||||
static struct resource codec_resources[] __devinitdata = {
|
||||
static struct resource codec_resources[] = {
|
||||
/* Headset microphone insertion or removal */
|
||||
{PM8607_IRQ_MICIN, PM8607_IRQ_MICIN, "micin", IORESOURCE_IRQ,},
|
||||
/* Hook-switch press or release */
|
||||
|
|
@ -143,12 +143,12 @@ static struct resource codec_resources[] __devinitdata = {
|
|||
{PM8607_IRQ_AUDIO_SHORT, PM8607_IRQ_AUDIO_SHORT, "audio-short", IORESOURCE_IRQ,},
|
||||
};
|
||||
|
||||
static struct resource battery_resources[] __devinitdata = {
|
||||
static struct resource battery_resources[] = {
|
||||
{PM8607_IRQ_CC, PM8607_IRQ_CC, "columb counter", IORESOURCE_IRQ,},
|
||||
{PM8607_IRQ_BAT, PM8607_IRQ_BAT, "battery", IORESOURCE_IRQ,},
|
||||
};
|
||||
|
||||
static struct resource charger_resources[] __devinitdata = {
|
||||
static struct resource charger_resources[] = {
|
||||
{PM8607_IRQ_CHG, PM8607_IRQ_CHG, "charger detect", IORESOURCE_IRQ,},
|
||||
{PM8607_IRQ_CHG_DONE, PM8607_IRQ_CHG_DONE, "charging done", IORESOURCE_IRQ,},
|
||||
{PM8607_IRQ_CHG_FAIL, PM8607_IRQ_CHG_FAIL, "charging timeout", IORESOURCE_IRQ,},
|
||||
|
|
@ -158,11 +158,11 @@ static struct resource charger_resources[] __devinitdata = {
|
|||
{PM8607_IRQ_VCHG, PM8607_IRQ_VCHG, "vchg voltage", IORESOURCE_IRQ,},
|
||||
};
|
||||
|
||||
static struct resource rtc_resources[] __devinitdata = {
|
||||
static struct resource rtc_resources[] = {
|
||||
{PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ,},
|
||||
};
|
||||
|
||||
static struct mfd_cell bk_devs[] __devinitdata = {
|
||||
static struct mfd_cell bk_devs[] = {
|
||||
{
|
||||
.name = "88pm860x-backlight",
|
||||
.id = 0,
|
||||
|
|
@ -181,7 +181,7 @@ static struct mfd_cell bk_devs[] __devinitdata = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell led_devs[] __devinitdata = {
|
||||
static struct mfd_cell led_devs[] = {
|
||||
{
|
||||
.name = "88pm860x-led",
|
||||
.id = 0,
|
||||
|
|
@ -215,7 +215,7 @@ static struct mfd_cell led_devs[] __devinitdata = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell reg_devs[] __devinitdata = {
|
||||
static struct mfd_cell reg_devs[] = {
|
||||
{
|
||||
.name = "88pm860x-regulator",
|
||||
.id = 0,
|
||||
|
|
@ -565,7 +565,7 @@ static struct irq_domain_ops pm860x_irq_domain_ops = {
|
|||
.xlate = irq_domain_xlate_onetwocell,
|
||||
};
|
||||
|
||||
static int __devinit device_irq_init(struct pm860x_chip *chip,
|
||||
static int device_irq_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
struct i2c_client *i2c = (chip->id == CHIP_PM8607) ? chip->client \
|
||||
|
|
@ -730,7 +730,7 @@ out:
|
|||
}
|
||||
EXPORT_SYMBOL(pm8606_osc_disable);
|
||||
|
||||
static void __devinit device_osc_init(struct i2c_client *i2c)
|
||||
static void device_osc_init(struct i2c_client *i2c)
|
||||
{
|
||||
struct pm860x_chip *chip = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
@ -745,7 +745,7 @@ static void __devinit device_osc_init(struct i2c_client *i2c)
|
|||
chip->osc_status = PM8606_REF_GP_OSC_OFF;
|
||||
}
|
||||
|
||||
static void __devinit device_bk_init(struct pm860x_chip *chip,
|
||||
static void device_bk_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret, i;
|
||||
|
|
@ -765,7 +765,7 @@ static void __devinit device_bk_init(struct pm860x_chip *chip,
|
|||
dev_err(chip->dev, "Failed to add backlight subdev\n");
|
||||
}
|
||||
|
||||
static void __devinit device_led_init(struct pm860x_chip *chip,
|
||||
static void device_led_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret, i;
|
||||
|
|
@ -787,7 +787,7 @@ static void __devinit device_led_init(struct pm860x_chip *chip,
|
|||
}
|
||||
}
|
||||
|
||||
static void __devinit device_regulator_init(struct pm860x_chip *chip,
|
||||
static void device_regulator_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -866,7 +866,7 @@ static void __devinit device_regulator_init(struct pm860x_chip *chip,
|
|||
}
|
||||
}
|
||||
|
||||
static void __devinit device_rtc_init(struct pm860x_chip *chip,
|
||||
static void device_rtc_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -885,7 +885,7 @@ static void __devinit device_rtc_init(struct pm860x_chip *chip,
|
|||
dev_err(chip->dev, "Failed to add rtc subdev\n");
|
||||
}
|
||||
|
||||
static void __devinit device_touch_init(struct pm860x_chip *chip,
|
||||
static void device_touch_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -904,7 +904,7 @@ static void __devinit device_touch_init(struct pm860x_chip *chip,
|
|||
dev_err(chip->dev, "Failed to add touch subdev\n");
|
||||
}
|
||||
|
||||
static void __devinit device_power_init(struct pm860x_chip *chip,
|
||||
static void device_power_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -951,7 +951,7 @@ static void __devinit device_power_init(struct pm860x_chip *chip,
|
|||
}
|
||||
}
|
||||
|
||||
static void __devinit device_onkey_init(struct pm860x_chip *chip,
|
||||
static void device_onkey_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -965,7 +965,7 @@ static void __devinit device_onkey_init(struct pm860x_chip *chip,
|
|||
dev_err(chip->dev, "Failed to add onkey subdev\n");
|
||||
}
|
||||
|
||||
static void __devinit device_codec_init(struct pm860x_chip *chip,
|
||||
static void device_codec_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -979,7 +979,7 @@ static void __devinit device_codec_init(struct pm860x_chip *chip,
|
|||
dev_err(chip->dev, "Failed to add codec subdev\n");
|
||||
}
|
||||
|
||||
static void __devinit device_8607_init(struct pm860x_chip *chip,
|
||||
static void device_8607_init(struct pm860x_chip *chip,
|
||||
struct i2c_client *i2c,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
|
|
@ -1040,7 +1040,7 @@ out:
|
|||
return;
|
||||
}
|
||||
|
||||
static void __devinit device_8606_init(struct pm860x_chip *chip,
|
||||
static void device_8606_init(struct pm860x_chip *chip,
|
||||
struct i2c_client *i2c,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
|
|
@ -1049,7 +1049,7 @@ static void __devinit device_8606_init(struct pm860x_chip *chip,
|
|||
device_led_init(chip, pdata);
|
||||
}
|
||||
|
||||
static int __devinit pm860x_device_init(struct pm860x_chip *chip,
|
||||
static int pm860x_device_init(struct pm860x_chip *chip,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
chip->core_irq = 0;
|
||||
|
|
@ -1077,7 +1077,7 @@ static int __devinit pm860x_device_init(struct pm860x_chip *chip,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void __devexit pm860x_device_exit(struct pm860x_chip *chip)
|
||||
static void pm860x_device_exit(struct pm860x_chip *chip)
|
||||
{
|
||||
device_irq_exit(chip);
|
||||
mfd_remove_devices(chip->dev);
|
||||
|
|
@ -1109,7 +1109,7 @@ static struct regmap_config pm860x_regmap_config = {
|
|||
.val_bits = 8,
|
||||
};
|
||||
|
||||
static int __devinit pm860x_dt_init(struct device_node *np,
|
||||
static int pm860x_dt_init(struct device_node *np,
|
||||
struct device *dev,
|
||||
struct pm860x_platform_data *pdata)
|
||||
{
|
||||
|
|
@ -1127,7 +1127,7 @@ static int __devinit pm860x_dt_init(struct device_node *np,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit pm860x_probe(struct i2c_client *client,
|
||||
static int pm860x_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct pm860x_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -1200,7 +1200,7 @@ err:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit pm860x_remove(struct i2c_client *client)
|
||||
static int pm860x_remove(struct i2c_client *client)
|
||||
{
|
||||
struct pm860x_chip *chip = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -1258,7 +1258,7 @@ static struct i2c_driver pm860x_driver = {
|
|||
.of_match_table = of_match_ptr(pm860x_dt_ids),
|
||||
},
|
||||
.probe = pm860x_probe,
|
||||
.remove = __devexit_p(pm860x_remove),
|
||||
.remove = pm860x_remove,
|
||||
.id_table = pm860x_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,16 @@ config MFD_SM501_GPIO
|
|||
lines on the SM501. The platform data is used to supply the
|
||||
base number for the first GPIO line to register.
|
||||
|
||||
config MFD_RTSX_PCI
|
||||
tristate "Support for Realtek PCI-E card reader"
|
||||
depends on PCI
|
||||
select MFD_CORE
|
||||
help
|
||||
This supports for Realtek PCI-Express card reader including rts5209,
|
||||
rts5229, rtl8411, etc. Realtek card reader supports access to many
|
||||
types of memory cards, such as Memory Stick, Memory Stick Pro,
|
||||
Secure Digital and MultiMediaCard.
|
||||
|
||||
config MFD_ASIC3
|
||||
bool "Support for Compaq ASIC3"
|
||||
depends on GENERIC_HARDIRQS && GPIOLIB && ARM
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ obj-$(CONFIG_MFD_88PM805) += 88pm805.o 88pm80x.o
|
|||
obj-$(CONFIG_MFD_SM501) += sm501.o
|
||||
obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o
|
||||
|
||||
rtsx_pci-objs := rtsx_pcr.o rts5209.o rts5229.o rtl8411.o
|
||||
obj-$(CONFIG_MFD_RTSX_PCI) += rtsx_pci.o
|
||||
|
||||
obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o
|
||||
obj-$(CONFIG_HTC_PASIC3) += htc-pasic3.o
|
||||
obj-$(CONFIG_HTC_I2CPLD) += htc-i2cpld.o
|
||||
|
|
|
|||
|
|
@ -661,8 +661,7 @@ struct ab3100_init_setting {
|
|||
u8 setting;
|
||||
};
|
||||
|
||||
static const struct ab3100_init_setting __devinitconst
|
||||
ab3100_init_settings[] = {
|
||||
static const struct ab3100_init_setting ab3100_init_settings[] = {
|
||||
{
|
||||
.abreg = AB3100_MCA,
|
||||
.setting = 0x01
|
||||
|
|
@ -708,7 +707,7 @@ ab3100_init_settings[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit ab3100_setup(struct ab3100 *ab3100)
|
||||
static int ab3100_setup(struct ab3100 *ab3100)
|
||||
{
|
||||
int err = 0;
|
||||
int i;
|
||||
|
|
@ -803,7 +802,7 @@ struct ab_family_id {
|
|||
char *name;
|
||||
};
|
||||
|
||||
static const struct ab_family_id ids[] __devinitconst = {
|
||||
static const struct ab_family_id ids[] = {
|
||||
/* AB3100 */
|
||||
{
|
||||
.id = 0xc0,
|
||||
|
|
@ -857,7 +856,7 @@ static const struct ab_family_id ids[] __devinitconst = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit ab3100_probe(struct i2c_client *client,
|
||||
static int ab3100_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct ab3100 *ab3100;
|
||||
|
|
@ -962,7 +961,7 @@ static int __devinit ab3100_probe(struct i2c_client *client,
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devexit ab3100_remove(struct i2c_client *client)
|
||||
static int ab3100_remove(struct i2c_client *client)
|
||||
{
|
||||
struct ab3100 *ab3100 = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -986,7 +985,7 @@ static struct i2c_driver ab3100_driver = {
|
|||
},
|
||||
.id_table = ab3100_id,
|
||||
.probe = ab3100_probe,
|
||||
.remove = __devexit_p(ab3100_remove),
|
||||
.remove = ab3100_remove,
|
||||
};
|
||||
|
||||
static int __init ab3100_i2c_init(void)
|
||||
|
|
|
|||
|
|
@ -623,7 +623,7 @@ static struct resource __devinitdata ab9540_gpio_resources[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_gpadc_resources[] = {
|
||||
static struct resource ab8500_gpadc_resources[] = {
|
||||
{
|
||||
.name = "HW_CONV_END",
|
||||
.start = AB8500_INT_GP_HW_ADC_CONV_END,
|
||||
|
|
@ -638,7 +638,7 @@ static struct resource __devinitdata ab8500_gpadc_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_rtc_resources[] = {
|
||||
static struct resource ab8500_rtc_resources[] = {
|
||||
{
|
||||
.name = "60S",
|
||||
.start = AB8500_INT_RTC_60S,
|
||||
|
|
@ -653,7 +653,7 @@ static struct resource __devinitdata ab8500_rtc_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_poweronkey_db_resources[] = {
|
||||
static struct resource ab8500_poweronkey_db_resources[] = {
|
||||
{
|
||||
.name = "ONKEY_DBF",
|
||||
.start = AB8500_INT_PON_KEY1DB_F,
|
||||
|
|
@ -668,7 +668,7 @@ static struct resource __devinitdata ab8500_poweronkey_db_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_av_acc_detect_resources[] = {
|
||||
static struct resource ab8500_av_acc_detect_resources[] = {
|
||||
{
|
||||
.name = "ACC_DETECT_1DB_F",
|
||||
.start = AB8500_INT_ACC_DETECT_1DB_F,
|
||||
|
|
@ -707,7 +707,7 @@ static struct resource __devinitdata ab8500_av_acc_detect_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_charger_resources[] = {
|
||||
static struct resource ab8500_charger_resources[] = {
|
||||
{
|
||||
.name = "MAIN_CH_UNPLUG_DET",
|
||||
.start = AB8500_INT_MAIN_CH_UNPLUG_DET,
|
||||
|
|
@ -788,7 +788,7 @@ static struct resource __devinitdata ab8500_charger_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_btemp_resources[] = {
|
||||
static struct resource ab8500_btemp_resources[] = {
|
||||
{
|
||||
.name = "BAT_CTRL_INDB",
|
||||
.start = AB8500_INT_BAT_CTRL_INDB,
|
||||
|
|
@ -821,7 +821,7 @@ static struct resource __devinitdata ab8500_btemp_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_fg_resources[] = {
|
||||
static struct resource ab8500_fg_resources[] = {
|
||||
{
|
||||
.name = "NCONV_ACCU",
|
||||
.start = AB8500_INT_CCN_CONV_ACC,
|
||||
|
|
@ -860,10 +860,10 @@ static struct resource __devinitdata ab8500_fg_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_chargalg_resources[] = {};
|
||||
static struct resource ab8500_chargalg_resources[] = {};
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static struct resource __devinitdata ab8500_debug_resources[] = {
|
||||
static struct resource ab8500_debug_resources[] = {
|
||||
{
|
||||
.name = "IRQ_FIRST",
|
||||
.start = AB8500_INT_MAIN_EXT_CH_NOT_OK,
|
||||
|
|
@ -879,7 +879,7 @@ static struct resource __devinitdata ab8500_debug_resources[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
static struct resource __devinitdata ab8500_usb_resources[] = {
|
||||
static struct resource ab8500_usb_resources[] = {
|
||||
{
|
||||
.name = "ID_WAKEUP_R",
|
||||
.start = AB8500_INT_ID_WAKEUP_R,
|
||||
|
|
@ -924,7 +924,7 @@ static struct resource __devinitdata ab8500_usb_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8505_iddet_resources[] = {
|
||||
static struct resource ab8505_iddet_resources[] = {
|
||||
{
|
||||
.name = "KeyDeglitch",
|
||||
.start = AB8505_INT_KEYDEGLITCH,
|
||||
|
|
@ -957,7 +957,7 @@ static struct resource __devinitdata ab8505_iddet_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata ab8500_temp_resources[] = {
|
||||
static struct resource ab8500_temp_resources[] = {
|
||||
{
|
||||
.name = "AB8500_TEMP_WARM",
|
||||
.start = AB8500_INT_TEMP_WARM,
|
||||
|
|
@ -966,7 +966,7 @@ static struct resource __devinitdata ab8500_temp_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell __devinitdata abx500_common_devs[] = {
|
||||
static struct mfd_cell abx500_common_devs[] = {
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
{
|
||||
.name = "ab8500-debug",
|
||||
|
|
@ -1038,7 +1038,7 @@ static struct mfd_cell __devinitdata abx500_common_devs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell __devinitdata ab8500_bm_devs[] = {
|
||||
static struct mfd_cell ab8500_bm_devs[] = {
|
||||
{
|
||||
.name = "ab8500-charger",
|
||||
.of_compatible = "stericsson,ab8500-charger",
|
||||
|
|
@ -1081,7 +1081,7 @@ static struct mfd_cell __devinitdata ab8500_bm_devs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell __devinitdata ab8500_devs[] = {
|
||||
static struct mfd_cell ab8500_devs[] = {
|
||||
{
|
||||
.name = "ab8500-gpio",
|
||||
.of_compatible = "stericsson,ab8500-gpio",
|
||||
|
|
@ -1100,7 +1100,7 @@ static struct mfd_cell __devinitdata ab8500_devs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell __devinitdata ab9540_devs[] = {
|
||||
static struct mfd_cell ab9540_devs[] = {
|
||||
{
|
||||
.name = "ab8500-gpio",
|
||||
.num_resources = ARRAY_SIZE(ab9540_gpio_resources),
|
||||
|
|
@ -1117,7 +1117,7 @@ static struct mfd_cell __devinitdata ab9540_devs[] = {
|
|||
};
|
||||
|
||||
/* Device list common to ab9540 and ab8505 */
|
||||
static struct mfd_cell __devinitdata ab9540_ab8505_devs[] = {
|
||||
static struct mfd_cell ab9540_ab8505_devs[] = {
|
||||
{
|
||||
.name = "ab-iddet",
|
||||
.num_resources = ARRAY_SIZE(ab8505_iddet_resources),
|
||||
|
|
@ -1268,7 +1268,7 @@ static struct attribute_group ab9540_attr_group = {
|
|||
.attrs = ab9540_sysfs_entries,
|
||||
};
|
||||
|
||||
static int __devinit ab8500_probe(struct platform_device *pdev)
|
||||
static int ab8500_probe(struct platform_device *pdev)
|
||||
{
|
||||
static char *switch_off_status[] = {
|
||||
"Swoff bit programming",
|
||||
|
|
@ -1493,7 +1493,7 @@ out_free_ab8500:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit ab8500_remove(struct platform_device *pdev)
|
||||
static int ab8500_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct ab8500 *ab8500 = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
@ -1526,7 +1526,7 @@ static struct platform_driver ab8500_core_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = ab8500_probe,
|
||||
.remove = __devexit_p(ab8500_remove),
|
||||
.remove = ab8500_remove,
|
||||
.id_table = ab8500_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@ static struct dentry *ab8500_bank_file;
|
|||
static struct dentry *ab8500_address_file;
|
||||
static struct dentry *ab8500_val_file;
|
||||
|
||||
static int __devinit ab8500_debug_probe(struct platform_device *plf)
|
||||
static int ab8500_debug_probe(struct platform_device *plf)
|
||||
{
|
||||
debug_bank = AB8500_MISC;
|
||||
debug_address = AB8500_REV_REG & 0x00FF;
|
||||
|
|
@ -597,7 +597,7 @@ exit_no_debugfs:
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static int __devexit ab8500_debug_remove(struct platform_device *plf)
|
||||
static int ab8500_debug_remove(struct platform_device *plf)
|
||||
{
|
||||
debugfs_remove(ab8500_val_file);
|
||||
debugfs_remove(ab8500_address_file);
|
||||
|
|
@ -614,7 +614,7 @@ static struct platform_driver ab8500_debug_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = ab8500_debug_probe,
|
||||
.remove = __devexit_p(ab8500_debug_remove)
|
||||
.remove = ab8500_debug_remove
|
||||
};
|
||||
|
||||
static int __init ab8500_debug_init(void)
|
||||
|
|
|
|||
|
|
@ -571,7 +571,7 @@ static void ab8500_gpadc_read_calibration_data(struct ab8500_gpadc *gpadc)
|
|||
gpadc->cal_data[ADC_INPUT_VBAT].offset);
|
||||
}
|
||||
|
||||
static int __devinit ab8500_gpadc_probe(struct platform_device *pdev)
|
||||
static int ab8500_gpadc_probe(struct platform_device *pdev)
|
||||
{
|
||||
int ret = 0;
|
||||
struct ab8500_gpadc *gpadc;
|
||||
|
|
@ -634,7 +634,7 @@ fail:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit ab8500_gpadc_remove(struct platform_device *pdev)
|
||||
static int ab8500_gpadc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct ab8500_gpadc *gpadc = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
@ -651,7 +651,7 @@ static int __devexit ab8500_gpadc_remove(struct platform_device *pdev)
|
|||
|
||||
static struct platform_driver ab8500_gpadc_driver = {
|
||||
.probe = ab8500_gpadc_probe,
|
||||
.remove = __devexit_p(ab8500_gpadc_remove),
|
||||
.remove = ab8500_gpadc_remove,
|
||||
.driver = {
|
||||
.name = "ab8500-gpadc",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
|||
|
|
@ -49,13 +49,13 @@ int ab8500_sysctrl_write(u16 reg, u8 mask, u8 value)
|
|||
(u8)(reg & 0xFF), mask, value);
|
||||
}
|
||||
|
||||
static int __devinit ab8500_sysctrl_probe(struct platform_device *pdev)
|
||||
static int ab8500_sysctrl_probe(struct platform_device *pdev)
|
||||
{
|
||||
sysctrl_dev = &pdev->dev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit ab8500_sysctrl_remove(struct platform_device *pdev)
|
||||
static int ab8500_sysctrl_remove(struct platform_device *pdev)
|
||||
{
|
||||
sysctrl_dev = NULL;
|
||||
return 0;
|
||||
|
|
@ -67,7 +67,7 @@ static struct platform_driver ab8500_sysctrl_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = ab8500_sysctrl_probe,
|
||||
.remove = __devexit_p(ab8500_sysctrl_remove),
|
||||
.remove = ab8500_sysctrl_remove,
|
||||
};
|
||||
|
||||
static int __init ab8500_sysctrl_init(void)
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ static int adp5520_remove_subdevs(struct adp5520_chip *chip)
|
|||
return device_for_each_child(chip->dev, NULL, __remove_subdev);
|
||||
}
|
||||
|
||||
static int __devinit adp5520_probe(struct i2c_client *client,
|
||||
static int adp5520_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct adp5520_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -307,7 +307,7 @@ out_free_chip:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit adp5520_remove(struct i2c_client *client)
|
||||
static int adp5520_remove(struct i2c_client *client)
|
||||
{
|
||||
struct adp5520_chip *chip = dev_get_drvdata(&client->dev);
|
||||
|
||||
|
|
@ -356,7 +356,7 @@ static struct i2c_driver adp5520_driver = {
|
|||
.pm = &adp5520_pm,
|
||||
},
|
||||
.probe = adp5520_probe,
|
||||
.remove = __devexit_p(adp5520_remove),
|
||||
.remove = adp5520_remove,
|
||||
.id_table = adp5520_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -96,11 +96,11 @@ static irqreturn_t arizona_underclocked(int irq, void *data)
|
|||
return IRQ_NONE;
|
||||
}
|
||||
|
||||
if (val & ARIZONA_AIF3_UNDERCLOCKED_STS)
|
||||
dev_err(arizona->dev, "AIF3 underclocked\n");
|
||||
if (val & ARIZONA_AIF3_UNDERCLOCKED_STS)
|
||||
dev_err(arizona->dev, "AIF3 underclocked\n");
|
||||
if (val & ARIZONA_AIF2_UNDERCLOCKED_STS)
|
||||
dev_err(arizona->dev, "AIF2 underclocked\n");
|
||||
if (val & ARIZONA_AIF1_UNDERCLOCKED_STS)
|
||||
dev_err(arizona->dev, "AIF1 underclocked\n");
|
||||
if (val & ARIZONA_ISRC2_UNDERCLOCKED_STS)
|
||||
dev_err(arizona->dev, "ISRC2 underclocked\n");
|
||||
|
|
@ -285,7 +285,7 @@ static struct mfd_cell wm5110_devs[] = {
|
|||
{ .name = "wm5110-codec" },
|
||||
};
|
||||
|
||||
int __devinit arizona_dev_init(struct arizona *arizona)
|
||||
int arizona_dev_init(struct arizona *arizona)
|
||||
{
|
||||
struct device *dev = arizona->dev;
|
||||
const char *type_name;
|
||||
|
|
@ -415,11 +415,19 @@ int __devinit arizona_dev_init(struct arizona *arizona)
|
|||
|
||||
/* If we have a /RESET GPIO we'll already be reset */
|
||||
if (!arizona->pdata.reset) {
|
||||
regcache_mark_dirty(arizona->regmap);
|
||||
|
||||
ret = regmap_write(arizona->regmap, ARIZONA_SOFTWARE_RESET, 0);
|
||||
if (ret != 0) {
|
||||
dev_err(dev, "Failed to reset device: %d\n", ret);
|
||||
goto err_reset;
|
||||
}
|
||||
|
||||
ret = regcache_sync(arizona->regmap);
|
||||
if (ret != 0) {
|
||||
dev_err(dev, "Failed to sync device: %d\n", ret);
|
||||
goto err_reset;
|
||||
}
|
||||
}
|
||||
|
||||
ret = arizona_wait_for_boot(arizona);
|
||||
|
|
@ -520,7 +528,7 @@ int __devinit arizona_dev_init(struct arizona *arizona)
|
|||
break;
|
||||
case WM5110:
|
||||
ret = mfd_add_devices(arizona->dev, -1, wm5110_devs,
|
||||
ARRAY_SIZE(wm5102_devs), NULL, 0, NULL);
|
||||
ARRAY_SIZE(wm5110_devs), NULL, 0, NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -553,7 +561,7 @@ err_early:
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(arizona_dev_init);
|
||||
|
||||
int __devexit arizona_dev_exit(struct arizona *arizona)
|
||||
int arizona_dev_exit(struct arizona *arizona)
|
||||
{
|
||||
mfd_remove_devices(arizona->dev);
|
||||
arizona_free_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, arizona);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include "arizona.h"
|
||||
|
||||
static __devinit int arizona_i2c_probe(struct i2c_client *i2c,
|
||||
static int arizona_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct arizona *arizona;
|
||||
|
|
@ -65,7 +65,7 @@ static __devinit int arizona_i2c_probe(struct i2c_client *i2c,
|
|||
return arizona_dev_init(arizona);
|
||||
}
|
||||
|
||||
static int __devexit arizona_i2c_remove(struct i2c_client *i2c)
|
||||
static int arizona_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct arizona *arizona = dev_get_drvdata(&i2c->dev);
|
||||
arizona_dev_exit(arizona);
|
||||
|
|
@ -86,7 +86,7 @@ static struct i2c_driver arizona_i2c_driver = {
|
|||
.pm = &arizona_pm_ops,
|
||||
},
|
||||
.probe = arizona_i2c_probe,
|
||||
.remove = __devexit_p(arizona_i2c_remove),
|
||||
.remove = arizona_i2c_remove,
|
||||
.id_table = arizona_i2c_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@ int arizona_irq_init(struct arizona *arizona)
|
|||
|
||||
switch (arizona->rev) {
|
||||
case 0:
|
||||
case 1:
|
||||
ctrlif_error = false;
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include "arizona.h"
|
||||
|
||||
static int __devinit arizona_spi_probe(struct spi_device *spi)
|
||||
static int arizona_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
const struct spi_device_id *id = spi_get_device_id(spi);
|
||||
struct arizona *arizona;
|
||||
|
|
@ -65,7 +65,7 @@ static int __devinit arizona_spi_probe(struct spi_device *spi)
|
|||
return arizona_dev_init(arizona);
|
||||
}
|
||||
|
||||
static int __devexit arizona_spi_remove(struct spi_device *spi)
|
||||
static int arizona_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
struct arizona *arizona = dev_get_drvdata(&spi->dev);
|
||||
arizona_dev_exit(arizona);
|
||||
|
|
@ -86,7 +86,7 @@ static struct spi_driver arizona_spi_driver = {
|
|||
.pm = &arizona_pm_ops,
|
||||
},
|
||||
.probe = arizona_spi_probe,
|
||||
.remove = __devexit_p(arizona_spi_remove),
|
||||
.remove = arizona_spi_remove,
|
||||
.id_table = arizona_spi_ids,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1039,7 +1039,7 @@ static int __init asic3_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit asic3_remove(struct platform_device *pdev)
|
||||
static int asic3_remove(struct platform_device *pdev)
|
||||
{
|
||||
int ret;
|
||||
struct asic3 *asic = platform_get_drvdata(pdev);
|
||||
|
|
@ -1071,7 +1071,7 @@ static struct platform_driver asic3_device_driver = {
|
|||
.driver = {
|
||||
.name = "asic3",
|
||||
},
|
||||
.remove = __devexit_p(asic3_remove),
|
||||
.remove = asic3_remove,
|
||||
.shutdown = asic3_shutdown,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -71,9 +71,9 @@ static int cs5535_mfd_res_disable(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static __devinitdata struct resource cs5535_mfd_resources[NR_BARS];
|
||||
static struct resource cs5535_mfd_resources[NR_BARS];
|
||||
|
||||
static __devinitdata struct mfd_cell cs5535_mfd_cells[] = {
|
||||
static struct mfd_cell cs5535_mfd_cells[] = {
|
||||
{
|
||||
.id = SMB_BAR,
|
||||
.name = "cs5535-smb",
|
||||
|
|
@ -113,7 +113,7 @@ static __devinitdata struct mfd_cell cs5535_mfd_cells[] = {
|
|||
};
|
||||
|
||||
#ifdef CONFIG_OLPC
|
||||
static void __devinit cs5535_clone_olpc_cells(void)
|
||||
static void cs5535_clone_olpc_cells(void)
|
||||
{
|
||||
const char *acpi_clones[] = { "olpc-xo1-pm-acpi", "olpc-xo1-sci-acpi" };
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ static void __devinit cs5535_clone_olpc_cells(void)
|
|||
static void cs5535_clone_olpc_cells(void) { }
|
||||
#endif
|
||||
|
||||
static int __devinit cs5535_mfd_probe(struct pci_dev *pdev,
|
||||
static int cs5535_mfd_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
int err, i;
|
||||
|
|
@ -166,7 +166,7 @@ err_disable:
|
|||
return err;
|
||||
}
|
||||
|
||||
static void __devexit cs5535_mfd_remove(struct pci_dev *pdev)
|
||||
static void cs5535_mfd_remove(struct pci_dev *pdev)
|
||||
{
|
||||
mfd_remove_devices(&pdev->dev);
|
||||
pci_disable_device(pdev);
|
||||
|
|
@ -183,7 +183,7 @@ static struct pci_driver cs5535_mfd_driver = {
|
|||
.name = DRV_NAME,
|
||||
.id_table = cs5535_mfd_pci_tbl,
|
||||
.probe = cs5535_mfd_probe,
|
||||
.remove = __devexit_p(cs5535_mfd_remove),
|
||||
.remove = cs5535_mfd_remove,
|
||||
};
|
||||
|
||||
module_pci_driver(cs5535_mfd_driver);
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@ int da903x_query_status(struct device *dev, unsigned int sbits)
|
|||
}
|
||||
EXPORT_SYMBOL(da903x_query_status);
|
||||
|
||||
static int __devinit da9030_init_chip(struct da903x_chip *chip)
|
||||
static int da9030_init_chip(struct da903x_chip *chip)
|
||||
{
|
||||
uint8_t chip_id;
|
||||
int err;
|
||||
|
|
@ -459,7 +459,7 @@ static int da903x_remove_subdevs(struct da903x_chip *chip)
|
|||
return device_for_each_child(chip->dev, NULL, __remove_subdev);
|
||||
}
|
||||
|
||||
static int __devinit da903x_add_subdevs(struct da903x_chip *chip,
|
||||
static int da903x_add_subdevs(struct da903x_chip *chip,
|
||||
struct da903x_platform_data *pdata)
|
||||
{
|
||||
struct da903x_subdev_info *subdev;
|
||||
|
|
@ -491,7 +491,7 @@ failed:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit da903x_probe(struct i2c_client *client,
|
||||
static int da903x_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct da903x_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -544,7 +544,7 @@ out_free_chip:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit da903x_remove(struct i2c_client *client)
|
||||
static int da903x_remove(struct i2c_client *client)
|
||||
{
|
||||
struct da903x_chip *chip = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -560,7 +560,7 @@ static struct i2c_driver da903x_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = da903x_probe,
|
||||
.remove = __devexit_p(da903x_remove),
|
||||
.remove = da903x_remove,
|
||||
.id_table = da903x_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -515,7 +515,7 @@ static struct resource da9052_tsi_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct mfd_cell __devinitdata da9052_subdev_info[] = {
|
||||
static struct mfd_cell da9052_subdev_info[] = {
|
||||
{
|
||||
.name = "da9052-regulator",
|
||||
.id = 1,
|
||||
|
|
@ -769,7 +769,7 @@ struct regmap_config da9052_regmap_config = {
|
|||
};
|
||||
EXPORT_SYMBOL_GPL(da9052_regmap_config);
|
||||
|
||||
int __devinit da9052_device_init(struct da9052 *da9052, u8 chip_id)
|
||||
int da9052_device_init(struct da9052 *da9052, u8 chip_id)
|
||||
{
|
||||
struct da9052_pdata *pdata = da9052->dev->platform_data;
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ static const struct of_device_id dialog_dt_ids[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
static int __devinit da9052_i2c_probe(struct i2c_client *client,
|
||||
static int da9052_i2c_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct da9052 *da9052;
|
||||
|
|
@ -121,7 +121,7 @@ static int __devinit da9052_i2c_probe(struct i2c_client *client,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit da9052_i2c_remove(struct i2c_client *client)
|
||||
static int da9052_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
struct da9052 *da9052 = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ static int __devexit da9052_i2c_remove(struct i2c_client *client)
|
|||
|
||||
static struct i2c_driver da9052_i2c_driver = {
|
||||
.probe = da9052_i2c_probe,
|
||||
.remove = __devexit_p(da9052_i2c_remove),
|
||||
.remove = da9052_i2c_remove,
|
||||
.id_table = da9052_i2c_id,
|
||||
.driver = {
|
||||
.name = "da9052",
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include <linux/mfd/da9052/da9052.h>
|
||||
|
||||
static int __devinit da9052_spi_probe(struct spi_device *spi)
|
||||
static int da9052_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
int ret;
|
||||
const struct spi_device_id *id = spi_get_device_id(spi);
|
||||
|
|
@ -58,7 +58,7 @@ static int __devinit da9052_spi_probe(struct spi_device *spi)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit da9052_spi_remove(struct spi_device *spi)
|
||||
static int da9052_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
struct da9052 *da9052 = dev_get_drvdata(&spi->dev);
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ static struct spi_device_id da9052_spi_id[] = {
|
|||
|
||||
static struct spi_driver da9052_spi_driver = {
|
||||
.probe = da9052_spi_probe,
|
||||
.remove = __devexit_p(da9052_spi_remove),
|
||||
.remove = da9052_spi_remove,
|
||||
.id_table = da9052_spi_id,
|
||||
.driver = {
|
||||
.name = "da9052",
|
||||
|
|
|
|||
|
|
@ -377,7 +377,7 @@ static struct regmap_irq_chip da9055_regmap_irq_chip = {
|
|||
.num_irqs = ARRAY_SIZE(da9055_irqs),
|
||||
};
|
||||
|
||||
int __devinit da9055_device_init(struct da9055 *da9055)
|
||||
int da9055_device_init(struct da9055 *da9055)
|
||||
{
|
||||
struct da9055_pdata *pdata = da9055->dev->platform_data;
|
||||
int ret;
|
||||
|
|
@ -412,7 +412,7 @@ err:
|
|||
return ret;
|
||||
}
|
||||
|
||||
void __devexit da9055_device_exit(struct da9055 *da9055)
|
||||
void da9055_device_exit(struct da9055 *da9055)
|
||||
{
|
||||
regmap_del_irq_chip(da9055->chip_irq, da9055->irq_data);
|
||||
mfd_remove_devices(da9055->dev);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include <linux/mfd/da9055/core.h>
|
||||
|
||||
static int __devinit da9055_i2c_probe(struct i2c_client *i2c,
|
||||
static int da9055_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct da9055 *da9055;
|
||||
|
|
@ -44,7 +44,7 @@ static int __devinit da9055_i2c_probe(struct i2c_client *i2c,
|
|||
return da9055_device_init(da9055);
|
||||
}
|
||||
|
||||
static int __devexit da9055_i2c_remove(struct i2c_client *i2c)
|
||||
static int da9055_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct da9055 *da9055 = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ static struct i2c_device_id da9055_i2c_id[] = {
|
|||
|
||||
static struct i2c_driver da9055_i2c_driver = {
|
||||
.probe = da9055_i2c_probe,
|
||||
.remove = __devexit_p(da9055_i2c_remove),
|
||||
.remove = da9055_i2c_remove,
|
||||
.id_table = da9055_i2c_id,
|
||||
.driver = {
|
||||
.name = "da9055",
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ fail1:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit davinci_vc_remove(struct platform_device *pdev)
|
||||
static int davinci_vc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct davinci_vc *davinci_vc = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
@ -174,7 +174,7 @@ static struct platform_driver davinci_vc_driver = {
|
|||
.name = "davinci_voicecodec",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.remove = __devexit_p(davinci_vc_remove),
|
||||
.remove = davinci_vc_remove,
|
||||
};
|
||||
|
||||
static int __init davinci_vc_init(void)
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include <linux/mfd/abx500/ab8500.h>
|
||||
#include <linux/regulator/db8500-prcmu.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <asm/hardware/gic.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/irqs.h>
|
||||
|
|
@ -420,9 +421,6 @@ static struct {
|
|||
|
||||
static atomic_t ac_wake_req_state = ATOMIC_INIT(0);
|
||||
|
||||
/* Functions definition */
|
||||
static void compute_armss_rate(void);
|
||||
|
||||
/* Spinlocks */
|
||||
static DEFINE_SPINLOCK(prcmu_lock);
|
||||
static DEFINE_SPINLOCK(clkout_lock);
|
||||
|
|
@ -1019,7 +1017,6 @@ int db8500_prcmu_set_arm_opp(u8 opp)
|
|||
(mb1_transfer.ack.arm_opp != opp))
|
||||
r = -EIO;
|
||||
|
||||
compute_armss_rate();
|
||||
mutex_unlock(&mb1_transfer.lock);
|
||||
|
||||
return r;
|
||||
|
|
@ -1169,12 +1166,12 @@ int db8500_prcmu_get_ape_opp(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* prcmu_request_ape_opp_100_voltage - Request APE OPP 100% voltage
|
||||
* db8500_prcmu_request_ape_opp_100_voltage - Request APE OPP 100% voltage
|
||||
* @enable: true to request the higher voltage, false to drop a request.
|
||||
*
|
||||
* Calls to this function to enable and disable requests must be balanced.
|
||||
*/
|
||||
int prcmu_request_ape_opp_100_voltage(bool enable)
|
||||
int db8500_prcmu_request_ape_opp_100_voltage(bool enable)
|
||||
{
|
||||
int r = 0;
|
||||
u8 header;
|
||||
|
|
@ -1669,13 +1666,8 @@ static unsigned long clock_rate(u8 clock)
|
|||
else
|
||||
return 0;
|
||||
}
|
||||
static unsigned long latest_armss_rate;
|
||||
static unsigned long armss_rate(void)
|
||||
{
|
||||
return latest_armss_rate;
|
||||
}
|
||||
|
||||
static void compute_armss_rate(void)
|
||||
static unsigned long armss_rate(void)
|
||||
{
|
||||
u32 r;
|
||||
unsigned long rate;
|
||||
|
|
@ -1700,7 +1692,7 @@ static void compute_armss_rate(void)
|
|||
rate = pll_rate(PRCM_PLLARM_FREQ, ROOT_CLOCK_RATE, PLL_DIV);
|
||||
}
|
||||
|
||||
latest_armss_rate = rate;
|
||||
return rate;
|
||||
}
|
||||
|
||||
static unsigned long dsiclk_rate(u8 n)
|
||||
|
|
@ -1820,6 +1812,35 @@ static long round_clock_rate(u8 clock, unsigned long rate)
|
|||
return rounded_rate;
|
||||
}
|
||||
|
||||
/* CPU FREQ table, may be changed due to if MAX_OPP is supported. */
|
||||
static struct cpufreq_frequency_table db8500_cpufreq_table[] = {
|
||||
{ .frequency = 200000, .index = ARM_EXTCLK,},
|
||||
{ .frequency = 400000, .index = ARM_50_OPP,},
|
||||
{ .frequency = 800000, .index = ARM_100_OPP,},
|
||||
{ .frequency = CPUFREQ_TABLE_END,}, /* To be used for MAX_OPP. */
|
||||
{ .frequency = CPUFREQ_TABLE_END,},
|
||||
};
|
||||
|
||||
static long round_armss_rate(unsigned long rate)
|
||||
{
|
||||
long freq = 0;
|
||||
int i = 0;
|
||||
|
||||
/* cpufreq table frequencies is in KHz. */
|
||||
rate = rate / 1000;
|
||||
|
||||
/* Find the corresponding arm opp from the cpufreq table. */
|
||||
while (db8500_cpufreq_table[i].frequency != CPUFREQ_TABLE_END) {
|
||||
freq = db8500_cpufreq_table[i].frequency;
|
||||
if (freq == rate)
|
||||
break;
|
||||
i++;
|
||||
}
|
||||
|
||||
/* Return the last valid value, even if a match was not found. */
|
||||
return freq * 1000;
|
||||
}
|
||||
|
||||
#define MIN_PLL_VCO_RATE 600000000ULL
|
||||
#define MAX_PLL_VCO_RATE 1680640000ULL
|
||||
|
||||
|
|
@ -1891,6 +1912,8 @@ long prcmu_round_clock_rate(u8 clock, unsigned long rate)
|
|||
{
|
||||
if (clock < PRCMU_NUM_REG_CLOCKS)
|
||||
return round_clock_rate(clock, rate);
|
||||
else if (clock == PRCMU_ARMSS)
|
||||
return round_armss_rate(rate);
|
||||
else if (clock == PRCMU_PLLDSI)
|
||||
return round_plldsi_rate(rate);
|
||||
else if ((clock == PRCMU_DSI0CLK) || (clock == PRCMU_DSI1CLK))
|
||||
|
|
@ -1950,6 +1973,27 @@ static void set_clock_rate(u8 clock, unsigned long rate)
|
|||
spin_unlock_irqrestore(&clk_mgt_lock, flags);
|
||||
}
|
||||
|
||||
static int set_armss_rate(unsigned long rate)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
/* cpufreq table frequencies is in KHz. */
|
||||
rate = rate / 1000;
|
||||
|
||||
/* Find the corresponding arm opp from the cpufreq table. */
|
||||
while (db8500_cpufreq_table[i].frequency != CPUFREQ_TABLE_END) {
|
||||
if (db8500_cpufreq_table[i].frequency == rate)
|
||||
break;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (db8500_cpufreq_table[i].frequency != rate)
|
||||
return -EINVAL;
|
||||
|
||||
/* Set the new arm opp. */
|
||||
return db8500_prcmu_set_arm_opp(db8500_cpufreq_table[i].index);
|
||||
}
|
||||
|
||||
static int set_plldsi_rate(unsigned long rate)
|
||||
{
|
||||
unsigned long src_rate;
|
||||
|
|
@ -2030,6 +2074,8 @@ int prcmu_set_clock_rate(u8 clock, unsigned long rate)
|
|||
{
|
||||
if (clock < PRCMU_NUM_REG_CLOCKS)
|
||||
set_clock_rate(clock, rate);
|
||||
else if (clock == PRCMU_ARMSS)
|
||||
return set_armss_rate(rate);
|
||||
else if (clock == PRCMU_PLLDSI)
|
||||
return set_plldsi_rate(rate);
|
||||
else if ((clock == PRCMU_DSI0CLK) || (clock == PRCMU_DSI1CLK))
|
||||
|
|
@ -2754,8 +2800,6 @@ void __init db8500_prcmu_early_init(void)
|
|||
init_completion(&mb5_transfer.work);
|
||||
|
||||
INIT_WORK(&mb0_transfer.mask_work, prcmu_mask_work);
|
||||
|
||||
compute_armss_rate();
|
||||
}
|
||||
|
||||
static void __init init_prcm_registers(void)
|
||||
|
|
@ -3020,6 +3064,8 @@ static struct mfd_cell db8500_prcmu_devs[] = {
|
|||
{
|
||||
.name = "cpufreq-u8500",
|
||||
.of_compatible = "stericsson,cpufreq-u8500",
|
||||
.platform_data = &db8500_cpufreq_table,
|
||||
.pdata_size = sizeof(db8500_cpufreq_table),
|
||||
},
|
||||
{
|
||||
.name = "ab8500-core",
|
||||
|
|
@ -3030,11 +3076,19 @@ static struct mfd_cell db8500_prcmu_devs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static void db8500_prcmu_update_cpufreq(void)
|
||||
{
|
||||
if (prcmu_has_arm_maxopp()) {
|
||||
db8500_cpufreq_table[3].frequency = 1000000;
|
||||
db8500_cpufreq_table[3].index = ARM_MAX_OPP;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* prcmu_fw_init - arch init call for the Linux PRCMU fw init logic
|
||||
*
|
||||
*/
|
||||
static int __devinit db8500_prcmu_probe(struct platform_device *pdev)
|
||||
static int db8500_prcmu_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct ab8500_platform_data *ab8500_platdata = pdev->dev.platform_data;
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
|
|
@ -3074,6 +3128,8 @@ static int __devinit db8500_prcmu_probe(struct platform_device *pdev)
|
|||
if (cpu_is_u8500v20_or_later())
|
||||
prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET);
|
||||
|
||||
db8500_prcmu_update_cpufreq();
|
||||
|
||||
err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs,
|
||||
ARRAY_SIZE(db8500_prcmu_devs), NULL, 0, NULL);
|
||||
if (err) {
|
||||
|
|
|
|||
|
|
@ -371,7 +371,7 @@ static int pcap_remove_subdev(struct device *dev, void *unused)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit pcap_add_subdev(struct pcap_chip *pcap,
|
||||
static int pcap_add_subdev(struct pcap_chip *pcap,
|
||||
struct pcap_subdev *subdev)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
|
|
@ -391,7 +391,7 @@ static int __devinit pcap_add_subdev(struct pcap_chip *pcap,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit ezx_pcap_remove(struct spi_device *spi)
|
||||
static int ezx_pcap_remove(struct spi_device *spi)
|
||||
{
|
||||
struct pcap_chip *pcap = dev_get_drvdata(&spi->dev);
|
||||
struct pcap_platform_data *pdata = spi->dev.platform_data;
|
||||
|
|
@ -420,7 +420,7 @@ static int __devexit ezx_pcap_remove(struct spi_device *spi)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit ezx_pcap_probe(struct spi_device *spi)
|
||||
static int ezx_pcap_probe(struct spi_device *spi)
|
||||
{
|
||||
struct pcap_platform_data *pdata = spi->dev.platform_data;
|
||||
struct pcap_chip *pcap;
|
||||
|
|
@ -525,7 +525,7 @@ ret:
|
|||
|
||||
static struct spi_driver ezxpcap_driver = {
|
||||
.probe = ezx_pcap_probe,
|
||||
.remove = __devexit_p(ezx_pcap_remove),
|
||||
.remove = ezx_pcap_remove,
|
||||
.driver = {
|
||||
.name = "ezx-pcap",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ static void htcpld_chip_reset(struct i2c_client *client)
|
|||
client, (chip_data->cache_out = chip_data->reset));
|
||||
}
|
||||
|
||||
static int __devinit htcpld_setup_chip_irq(
|
||||
static int htcpld_setup_chip_irq(
|
||||
struct platform_device *pdev,
|
||||
int chip_index)
|
||||
{
|
||||
|
|
@ -361,7 +361,7 @@ static int __devinit htcpld_setup_chip_irq(
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit htcpld_register_chip_i2c(
|
||||
static int htcpld_register_chip_i2c(
|
||||
struct platform_device *pdev,
|
||||
int chip_index)
|
||||
{
|
||||
|
|
@ -419,7 +419,7 @@ static int __devinit htcpld_register_chip_i2c(
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void __devinit htcpld_unregister_chip_i2c(
|
||||
static void htcpld_unregister_chip_i2c(
|
||||
struct platform_device *pdev,
|
||||
int chip_index)
|
||||
{
|
||||
|
|
@ -434,7 +434,7 @@ static void __devinit htcpld_unregister_chip_i2c(
|
|||
i2c_unregister_device(chip->client);
|
||||
}
|
||||
|
||||
static int __devinit htcpld_register_chip_gpio(
|
||||
static int htcpld_register_chip_gpio(
|
||||
struct platform_device *pdev,
|
||||
int chip_index)
|
||||
{
|
||||
|
|
@ -501,7 +501,7 @@ static int __devinit htcpld_register_chip_gpio(
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit htcpld_setup_chips(struct platform_device *pdev)
|
||||
static int htcpld_setup_chips(struct platform_device *pdev)
|
||||
{
|
||||
struct htcpld_data *htcpld;
|
||||
struct device *dev = &pdev->dev;
|
||||
|
|
@ -563,7 +563,7 @@ static int __devinit htcpld_setup_chips(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit htcpld_core_probe(struct platform_device *pdev)
|
||||
static int htcpld_core_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct htcpld_data *htcpld;
|
||||
struct device *dev = &pdev->dev;
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ int intel_msic_irq_read(struct intel_msic *msic, unsigned short reg, u8 *val)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(intel_msic_irq_read);
|
||||
|
||||
static int __devinit intel_msic_init_devices(struct intel_msic *msic)
|
||||
static int intel_msic_init_devices(struct intel_msic *msic)
|
||||
{
|
||||
struct platform_device *pdev = msic->pdev;
|
||||
struct intel_msic_platform_data *pdata = pdev->dev.platform_data;
|
||||
|
|
@ -364,7 +364,7 @@ fail:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __devexit intel_msic_remove_devices(struct intel_msic *msic)
|
||||
static void intel_msic_remove_devices(struct intel_msic *msic)
|
||||
{
|
||||
struct platform_device *pdev = msic->pdev;
|
||||
struct intel_msic_platform_data *pdata = pdev->dev.platform_data;
|
||||
|
|
@ -375,7 +375,7 @@ static void __devexit intel_msic_remove_devices(struct intel_msic *msic)
|
|||
gpio_free(pdata->ocd->gpio);
|
||||
}
|
||||
|
||||
static int __devinit intel_msic_probe(struct platform_device *pdev)
|
||||
static int intel_msic_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct intel_msic_platform_data *pdata = pdev->dev.platform_data;
|
||||
struct intel_msic *msic;
|
||||
|
|
@ -445,7 +445,7 @@ static int __devinit intel_msic_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit intel_msic_remove(struct platform_device *pdev)
|
||||
static int intel_msic_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct intel_msic *msic = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
@ -457,7 +457,7 @@ static int __devexit intel_msic_remove(struct platform_device *pdev)
|
|||
|
||||
static struct platform_driver intel_msic_driver = {
|
||||
.probe = intel_msic_probe,
|
||||
.remove = __devexit_p(intel_msic_remove),
|
||||
.remove = intel_msic_remove,
|
||||
.driver = {
|
||||
.name = "intel_msic",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ struct cmodio_device {
|
|||
* Subdevices using the mfd-core API
|
||||
*/
|
||||
|
||||
static int __devinit cmodio_setup_subdevice(struct cmodio_device *priv,
|
||||
static int cmodio_setup_subdevice(struct cmodio_device *priv,
|
||||
char *name, unsigned int devno,
|
||||
unsigned int modno)
|
||||
{
|
||||
|
|
@ -120,7 +120,7 @@ static int __devinit cmodio_setup_subdevice(struct cmodio_device *priv,
|
|||
}
|
||||
|
||||
/* Probe each submodule using kernel parameters */
|
||||
static int __devinit cmodio_probe_submodules(struct cmodio_device *priv)
|
||||
static int cmodio_probe_submodules(struct cmodio_device *priv)
|
||||
{
|
||||
struct pci_dev *pdev = priv->pdev;
|
||||
unsigned int num_probed = 0;
|
||||
|
|
@ -177,7 +177,7 @@ static const struct attribute_group cmodio_sysfs_attr_group = {
|
|||
* PCI Driver
|
||||
*/
|
||||
|
||||
static int __devinit cmodio_pci_probe(struct pci_dev *dev,
|
||||
static int cmodio_pci_probe(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
struct cmodio_device *priv;
|
||||
|
|
@ -254,7 +254,7 @@ out_return:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __devexit cmodio_pci_remove(struct pci_dev *dev)
|
||||
static void cmodio_pci_remove(struct pci_dev *dev)
|
||||
{
|
||||
struct cmodio_device *priv = pci_get_drvdata(dev);
|
||||
|
||||
|
|
@ -280,7 +280,7 @@ static struct pci_driver cmodio_pci_driver = {
|
|||
.name = DRV_NAME,
|
||||
.id_table = cmodio_pci_ids,
|
||||
.probe = cmodio_pci_probe,
|
||||
.remove = __devexit_p(cmodio_pci_remove),
|
||||
.remove = cmodio_pci_remove,
|
||||
};
|
||||
|
||||
module_pci_driver(cmodio_pci_driver);
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ static struct mfd_cell jz4740_adc_cells[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit jz4740_adc_probe(struct platform_device *pdev)
|
||||
static int jz4740_adc_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct irq_chip_generic *gc;
|
||||
struct irq_chip_type *ct;
|
||||
|
|
@ -307,7 +307,7 @@ err_free:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit jz4740_adc_remove(struct platform_device *pdev)
|
||||
static int jz4740_adc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct jz4740_adc *adc = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
@ -332,7 +332,7 @@ static int __devexit jz4740_adc_remove(struct platform_device *pdev)
|
|||
|
||||
static struct platform_driver jz4740_adc_driver = {
|
||||
.probe = jz4740_adc_probe,
|
||||
.remove = __devexit_p(jz4740_adc_remove),
|
||||
.remove = jz4740_adc_remove,
|
||||
.driver = {
|
||||
.name = "jz4740-adc",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ static struct attribute_group lm3533_attribute_group = {
|
|||
.attrs = lm3533_attributes
|
||||
};
|
||||
|
||||
static int __devinit lm3533_device_als_init(struct lm3533 *lm3533)
|
||||
static int lm3533_device_als_init(struct lm3533 *lm3533)
|
||||
{
|
||||
struct lm3533_platform_data *pdata = lm3533->dev->platform_data;
|
||||
int ret;
|
||||
|
|
@ -405,7 +405,7 @@ static int __devinit lm3533_device_als_init(struct lm3533 *lm3533)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit lm3533_device_bl_init(struct lm3533 *lm3533)
|
||||
static int lm3533_device_bl_init(struct lm3533 *lm3533)
|
||||
{
|
||||
struct lm3533_platform_data *pdata = lm3533->dev->platform_data;
|
||||
int i;
|
||||
|
|
@ -434,7 +434,7 @@ static int __devinit lm3533_device_bl_init(struct lm3533 *lm3533)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit lm3533_device_led_init(struct lm3533 *lm3533)
|
||||
static int lm3533_device_led_init(struct lm3533 *lm3533)
|
||||
{
|
||||
struct lm3533_platform_data *pdata = lm3533->dev->platform_data;
|
||||
int i;
|
||||
|
|
@ -463,7 +463,7 @@ static int __devinit lm3533_device_led_init(struct lm3533 *lm3533)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit lm3533_device_setup(struct lm3533 *lm3533,
|
||||
static int lm3533_device_setup(struct lm3533 *lm3533,
|
||||
struct lm3533_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -479,7 +479,7 @@ static int __devinit lm3533_device_setup(struct lm3533 *lm3533,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit lm3533_device_init(struct lm3533 *lm3533)
|
||||
static int lm3533_device_init(struct lm3533 *lm3533)
|
||||
{
|
||||
struct lm3533_platform_data *pdata = lm3533->dev->platform_data;
|
||||
int ret;
|
||||
|
|
@ -534,7 +534,7 @@ err_disable:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __devexit lm3533_device_exit(struct lm3533 *lm3533)
|
||||
static void lm3533_device_exit(struct lm3533 *lm3533)
|
||||
{
|
||||
dev_dbg(lm3533->dev, "%s\n", __func__);
|
||||
|
||||
|
|
@ -596,7 +596,7 @@ static struct regmap_config regmap_config = {
|
|||
.precious_reg = lm3533_precious_register,
|
||||
};
|
||||
|
||||
static int __devinit lm3533_i2c_probe(struct i2c_client *i2c,
|
||||
static int lm3533_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct lm3533 *lm3533;
|
||||
|
|
@ -624,7 +624,7 @@ static int __devinit lm3533_i2c_probe(struct i2c_client *i2c,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit lm3533_i2c_remove(struct i2c_client *i2c)
|
||||
static int lm3533_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct lm3533 *lm3533 = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
@ -648,7 +648,7 @@ static struct i2c_driver lm3533_i2c_driver = {
|
|||
},
|
||||
.id_table = lm3533_i2c_ids,
|
||||
.probe = lm3533_i2c_probe,
|
||||
.remove = __devexit_p(lm3533_i2c_remove),
|
||||
.remove = lm3533_i2c_remove,
|
||||
};
|
||||
|
||||
static int __init lm3533_i2c_init(void)
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ static int lp8788_probe(struct i2c_client *cl, const struct i2c_device_id *id)
|
|||
ARRAY_SIZE(lp8788_devs), NULL, 0, NULL);
|
||||
}
|
||||
|
||||
static int __devexit lp8788_remove(struct i2c_client *cl)
|
||||
static int lp8788_remove(struct i2c_client *cl)
|
||||
{
|
||||
struct lp8788 *lp = i2c_get_clientdata(cl);
|
||||
|
||||
|
|
@ -224,7 +224,7 @@ static struct i2c_driver lp8788_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = lp8788_probe,
|
||||
.remove = __devexit_p(lp8788_remove),
|
||||
.remove = lp8788_remove,
|
||||
.id_table = lp8788_ids,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ enum lpc_chipsets {
|
|||
LPC_LPT_LP, /* Lynx Point-LP */
|
||||
};
|
||||
|
||||
struct lpc_ich_info lpc_chipset_info[] __devinitdata = {
|
||||
struct lpc_ich_info lpc_chipset_info[] = {
|
||||
[LPC_ICH] = {
|
||||
.name = "ICH",
|
||||
.iTCO_version = 1,
|
||||
|
|
@ -672,7 +672,7 @@ static void lpc_ich_restore_config_space(struct pci_dev *dev)
|
|||
}
|
||||
}
|
||||
|
||||
static void __devinit lpc_ich_enable_acpi_space(struct pci_dev *dev)
|
||||
static void lpc_ich_enable_acpi_space(struct pci_dev *dev)
|
||||
{
|
||||
u8 reg_save;
|
||||
|
||||
|
|
@ -681,7 +681,7 @@ static void __devinit lpc_ich_enable_acpi_space(struct pci_dev *dev)
|
|||
lpc_ich_acpi_save = reg_save;
|
||||
}
|
||||
|
||||
static void __devinit lpc_ich_enable_gpio_space(struct pci_dev *dev)
|
||||
static void lpc_ich_enable_gpio_space(struct pci_dev *dev)
|
||||
{
|
||||
u8 reg_save;
|
||||
|
||||
|
|
@ -690,7 +690,7 @@ static void __devinit lpc_ich_enable_gpio_space(struct pci_dev *dev)
|
|||
lpc_ich_gpio_save = reg_save;
|
||||
}
|
||||
|
||||
static void __devinit lpc_ich_finalize_cell(struct mfd_cell *cell,
|
||||
static void lpc_ich_finalize_cell(struct mfd_cell *cell,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
cell->platform_data = &lpc_chipset_info[id->driver_data];
|
||||
|
|
@ -702,7 +702,7 @@ static void __devinit lpc_ich_finalize_cell(struct mfd_cell *cell,
|
|||
* GPIO groups and it's enough to have access to one of these to instantiate
|
||||
* the device.
|
||||
*/
|
||||
static int __devinit lpc_ich_check_conflict_gpio(struct resource *res)
|
||||
static int lpc_ich_check_conflict_gpio(struct resource *res)
|
||||
{
|
||||
int ret;
|
||||
u8 use_gpio = 0;
|
||||
|
|
@ -721,7 +721,7 @@ static int __devinit lpc_ich_check_conflict_gpio(struct resource *res)
|
|||
return use_gpio ? use_gpio : ret;
|
||||
}
|
||||
|
||||
static int __devinit lpc_ich_init_gpio(struct pci_dev *dev,
|
||||
static int lpc_ich_init_gpio(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
u32 base_addr_cfg;
|
||||
|
|
@ -798,7 +798,7 @@ gpio_done:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
|
||||
static int lpc_ich_init_wdt(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
u32 base_addr_cfg;
|
||||
|
|
@ -852,7 +852,7 @@ wdt_done:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit lpc_ich_probe(struct pci_dev *dev,
|
||||
static int lpc_ich_probe(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -878,7 +878,7 @@ static int __devinit lpc_ich_probe(struct pci_dev *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void __devexit lpc_ich_remove(struct pci_dev *dev)
|
||||
static void lpc_ich_remove(struct pci_dev *dev)
|
||||
{
|
||||
mfd_remove_devices(&dev->dev);
|
||||
lpc_ich_restore_config_space(dev);
|
||||
|
|
@ -888,7 +888,7 @@ static struct pci_driver lpc_ich_driver = {
|
|||
.name = "lpc_ich",
|
||||
.id_table = lpc_ich_ids,
|
||||
.probe = lpc_ich_probe,
|
||||
.remove = __devexit_p(lpc_ich_remove),
|
||||
.remove = lpc_ich_remove,
|
||||
};
|
||||
|
||||
static int __init lpc_ich_init(void)
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ static DEFINE_PCI_DEVICE_TABLE(lpc_sch_ids) = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(pci, lpc_sch_ids);
|
||||
|
||||
static int __devinit lpc_sch_probe(struct pci_dev *dev,
|
||||
static int lpc_sch_probe(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
unsigned int base_addr_cfg;
|
||||
|
|
@ -164,7 +164,7 @@ out_dev:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __devexit lpc_sch_remove(struct pci_dev *dev)
|
||||
static void lpc_sch_remove(struct pci_dev *dev)
|
||||
{
|
||||
mfd_remove_devices(&dev->dev);
|
||||
}
|
||||
|
|
@ -173,7 +173,7 @@ static struct pci_driver lpc_sch_driver = {
|
|||
.name = "lpc_sch",
|
||||
.id_table = lpc_sch_ids,
|
||||
.probe = lpc_sch_probe,
|
||||
.remove = __devexit_p(lpc_sch_remove),
|
||||
.remove = lpc_sch_remove,
|
||||
};
|
||||
|
||||
module_pci_driver(lpc_sch_driver);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ static struct regmap_config max77686_regmap_config = {
|
|||
};
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static struct of_device_id __devinitdata max77686_pmic_dt_match[] = {
|
||||
static struct of_device_id max77686_pmic_dt_match[] = {
|
||||
{.compatible = "maxim,max77686", .data = 0},
|
||||
{},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ static void max8907_power_off(void)
|
|||
MAX8907_MASK_POWER_OFF, MAX8907_MASK_POWER_OFF);
|
||||
}
|
||||
|
||||
static __devinit int max8907_i2c_probe(struct i2c_client *i2c,
|
||||
static int max8907_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct max8907 *max8907;
|
||||
|
|
@ -288,7 +288,7 @@ err_alloc_drvdata:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static __devexit int max8907_i2c_remove(struct i2c_client *i2c)
|
||||
static int max8907_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct max8907 *max8907 = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
#include <linux/mfd/core.h>
|
||||
#include <linux/mfd/max8925.h>
|
||||
|
||||
static struct resource bk_resources[] __devinitdata = {
|
||||
static struct resource bk_resources[] = {
|
||||
{ 0x84, 0x84, "mode control", IORESOURCE_REG, },
|
||||
{ 0x85, 0x85, "control", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct mfd_cell bk_devs[] __devinitdata = {
|
||||
static struct mfd_cell bk_devs[] = {
|
||||
{
|
||||
.name = "max8925-backlight",
|
||||
.num_resources = ARRAY_SIZE(bk_resources),
|
||||
|
|
@ -110,99 +110,99 @@ static struct mfd_cell onkey_devs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource sd1_resources[] __devinitdata = {
|
||||
static struct resource sd1_resources[] = {
|
||||
{0x06, 0x06, "sdv", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource sd2_resources[] __devinitdata = {
|
||||
static struct resource sd2_resources[] = {
|
||||
{0x09, 0x09, "sdv", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource sd3_resources[] __devinitdata = {
|
||||
static struct resource sd3_resources[] = {
|
||||
{0x0c, 0x0c, "sdv", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo1_resources[] __devinitdata = {
|
||||
static struct resource ldo1_resources[] = {
|
||||
{0x1a, 0x1a, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo2_resources[] __devinitdata = {
|
||||
static struct resource ldo2_resources[] = {
|
||||
{0x1e, 0x1e, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo3_resources[] __devinitdata = {
|
||||
static struct resource ldo3_resources[] = {
|
||||
{0x22, 0x22, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo4_resources[] __devinitdata = {
|
||||
static struct resource ldo4_resources[] = {
|
||||
{0x26, 0x26, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo5_resources[] __devinitdata = {
|
||||
static struct resource ldo5_resources[] = {
|
||||
{0x2a, 0x2a, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo6_resources[] __devinitdata = {
|
||||
static struct resource ldo6_resources[] = {
|
||||
{0x2e, 0x2e, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo7_resources[] __devinitdata = {
|
||||
static struct resource ldo7_resources[] = {
|
||||
{0x32, 0x32, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo8_resources[] __devinitdata = {
|
||||
static struct resource ldo8_resources[] = {
|
||||
{0x36, 0x36, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo9_resources[] __devinitdata = {
|
||||
static struct resource ldo9_resources[] = {
|
||||
{0x3a, 0x3a, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo10_resources[] __devinitdata = {
|
||||
static struct resource ldo10_resources[] = {
|
||||
{0x3e, 0x3e, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo11_resources[] __devinitdata = {
|
||||
static struct resource ldo11_resources[] = {
|
||||
{0x42, 0x42, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo12_resources[] __devinitdata = {
|
||||
static struct resource ldo12_resources[] = {
|
||||
{0x46, 0x46, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo13_resources[] __devinitdata = {
|
||||
static struct resource ldo13_resources[] = {
|
||||
{0x4a, 0x4a, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo14_resources[] __devinitdata = {
|
||||
static struct resource ldo14_resources[] = {
|
||||
{0x4e, 0x4e, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo15_resources[] __devinitdata = {
|
||||
static struct resource ldo15_resources[] = {
|
||||
{0x52, 0x52, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo16_resources[] __devinitdata = {
|
||||
static struct resource ldo16_resources[] = {
|
||||
{0x12, 0x12, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo17_resources[] __devinitdata = {
|
||||
static struct resource ldo17_resources[] = {
|
||||
{0x16, 0x16, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo18_resources[] __devinitdata = {
|
||||
static struct resource ldo18_resources[] = {
|
||||
{0x74, 0x74, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo19_resources[] __devinitdata = {
|
||||
static struct resource ldo19_resources[] = {
|
||||
{0x5e, 0x5e, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct resource ldo20_resources[] __devinitdata = {
|
||||
static struct resource ldo20_resources[] = {
|
||||
{0x9e, 0x9e, "ldov", IORESOURCE_REG, },
|
||||
};
|
||||
|
||||
static struct mfd_cell reg_devs[] __devinitdata = {
|
||||
static struct mfd_cell reg_devs[] = {
|
||||
{
|
||||
.name = "max8925-regulator",
|
||||
.id = 0,
|
||||
|
|
@ -714,7 +714,7 @@ tsc_irq:
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void __devinit init_regulator(struct max8925_chip *chip,
|
||||
static void init_regulator(struct max8925_chip *chip,
|
||||
struct max8925_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -821,7 +821,7 @@ static void __devinit init_regulator(struct max8925_chip *chip,
|
|||
}
|
||||
}
|
||||
|
||||
int __devinit max8925_device_init(struct max8925_chip *chip,
|
||||
int max8925_device_init(struct max8925_chip *chip,
|
||||
struct max8925_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -901,7 +901,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
void __devexit max8925_device_exit(struct max8925_chip *chip)
|
||||
void max8925_device_exit(struct max8925_chip *chip)
|
||||
{
|
||||
if (chip->core_irq)
|
||||
free_irq(chip->core_irq, chip);
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ static const struct i2c_device_id max8925_id_table[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(i2c, max8925_id_table);
|
||||
|
||||
static int __devinit max8925_probe(struct i2c_client *client,
|
||||
static int max8925_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct max8925_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -168,7 +168,7 @@ static int __devinit max8925_probe(struct i2c_client *client,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit max8925_remove(struct i2c_client *client)
|
||||
static int max8925_remove(struct i2c_client *client)
|
||||
{
|
||||
struct max8925_chip *chip = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -210,7 +210,7 @@ static struct i2c_driver max8925_driver = {
|
|||
.pm = &max8925_pm_ops,
|
||||
},
|
||||
.probe = max8925_probe,
|
||||
.remove = __devexit_p(max8925_remove),
|
||||
.remove = max8925_remove,
|
||||
.id_table = max8925_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ static int mc13xxx_i2c_probe(struct i2c_client *client,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit mc13xxx_i2c_remove(struct i2c_client *client)
|
||||
static int mc13xxx_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
struct mc13xxx *mc13xxx = dev_get_drvdata(&client->dev);
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ static struct i2c_driver mc13xxx_i2c_driver = {
|
|||
.of_match_table = mc13xxx_dt_ids,
|
||||
},
|
||||
.probe = mc13xxx_i2c_probe,
|
||||
.remove = __devexit_p(mc13xxx_i2c_remove),
|
||||
.remove = mc13xxx_i2c_remove,
|
||||
};
|
||||
|
||||
static int __init mc13xxx_i2c_init(void)
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ static int mc13xxx_spi_probe(struct spi_device *spi)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit mc13xxx_spi_remove(struct spi_device *spi)
|
||||
static int mc13xxx_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
struct mc13xxx *mc13xxx = dev_get_drvdata(&spi->dev);
|
||||
|
||||
|
|
@ -176,7 +176,7 @@ static struct spi_driver mc13xxx_spi_driver = {
|
|||
.of_match_table = mc13xxx_dt_ids,
|
||||
},
|
||||
.probe = mc13xxx_spi_probe,
|
||||
.remove = __devexit_p(mc13xxx_spi_remove),
|
||||
.remove = mc13xxx_spi_remove,
|
||||
};
|
||||
|
||||
static int __init mc13xxx_init(void)
|
||||
|
|
|
|||
|
|
@ -464,7 +464,7 @@ static void omap_usbhs_deinit(struct device *dev)
|
|||
*
|
||||
* Allocates basic resources for this USB host controller.
|
||||
*/
|
||||
static int __devinit usbhs_omap_probe(struct platform_device *pdev)
|
||||
static int usbhs_omap_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct usbhs_omap_platform_data *pdata = dev->platform_data;
|
||||
|
|
@ -652,7 +652,7 @@ end_probe:
|
|||
*
|
||||
* Reverses the effect of usbhs_omap_probe().
|
||||
*/
|
||||
static int __devexit usbhs_omap_remove(struct platform_device *pdev)
|
||||
static int usbhs_omap_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct usbhs_hcd_omap *omap = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ static unsigned ohci_omap3_fslsmode(enum usbhs_omap_port_mode mode)
|
|||
*
|
||||
* Allocates basic resources for this USB host controller.
|
||||
*/
|
||||
static int __devinit usbtll_omap_probe(struct platform_device *pdev)
|
||||
static int usbtll_omap_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct usbtll_omap_platform_data *pdata = dev->platform_data;
|
||||
|
|
@ -348,7 +348,7 @@ end:
|
|||
*
|
||||
* Reverses the effect of usbtll_omap_probe().
|
||||
*/
|
||||
static int __devexit usbtll_omap_remove(struct platform_device *pdev)
|
||||
static int usbtll_omap_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct usbtll_omap *tll = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
@ -424,7 +424,7 @@ static struct platform_driver usbtll_omap_driver = {
|
|||
.pm = &usbtllomap_dev_pm_ops,
|
||||
},
|
||||
.probe = usbtll_omap_probe,
|
||||
.remove = __devexit_p(usbtll_omap_remove),
|
||||
.remove = usbtll_omap_remove,
|
||||
};
|
||||
|
||||
int omap_tll_enable(void)
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ static struct regmap_irq_chip palmas_irq_chip = {
|
|||
PALMAS_INT1_MASK),
|
||||
};
|
||||
|
||||
static void __devinit palmas_dt_to_pdata(struct device_node *node,
|
||||
static void palmas_dt_to_pdata(struct device_node *node,
|
||||
struct palmas_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -275,7 +275,7 @@ static void __devinit palmas_dt_to_pdata(struct device_node *node,
|
|||
PALMAS_POWER_CTRL_ENABLE2_MASK;
|
||||
}
|
||||
|
||||
static int __devinit palmas_i2c_probe(struct i2c_client *i2c,
|
||||
static int palmas_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct palmas *palmas;
|
||||
|
|
@ -492,7 +492,7 @@ static const struct i2c_device_id palmas_i2c_id[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(i2c, palmas_i2c_id);
|
||||
|
||||
static struct of_device_id __devinitdata of_palmas_match_tbl[] = {
|
||||
static struct of_device_id of_palmas_match_tbl[] = {
|
||||
{ .compatible = "ti,palmas", },
|
||||
{ /* end */ }
|
||||
};
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ static void pcf50633_adc_irq(int irq, void *data)
|
|||
kfree(req);
|
||||
}
|
||||
|
||||
static int __devinit pcf50633_adc_probe(struct platform_device *pdev)
|
||||
static int pcf50633_adc_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct pcf50633_adc *adc;
|
||||
|
||||
|
|
@ -218,7 +218,7 @@ static int __devinit pcf50633_adc_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit pcf50633_adc_remove(struct platform_device *pdev)
|
||||
static int pcf50633_adc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct pcf50633_adc *adc = platform_get_drvdata(pdev);
|
||||
int i, head;
|
||||
|
|
@ -246,7 +246,7 @@ static struct platform_driver pcf50633_adc_driver = {
|
|||
.name = "pcf50633-adc",
|
||||
},
|
||||
.probe = pcf50633_adc_probe,
|
||||
.remove = __devexit_p(pcf50633_adc_remove),
|
||||
.remove = pcf50633_adc_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(pcf50633_adc_driver);
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ static struct regmap_config pcf50633_regmap_config = {
|
|||
.val_bits = 8,
|
||||
};
|
||||
|
||||
static int __devinit pcf50633_probe(struct i2c_client *client,
|
||||
static int pcf50633_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *ids)
|
||||
{
|
||||
struct pcf50633 *pcf;
|
||||
|
|
@ -275,7 +275,7 @@ static int __devinit pcf50633_probe(struct i2c_client *client,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit pcf50633_remove(struct i2c_client *client)
|
||||
static int pcf50633_remove(struct i2c_client *client)
|
||||
{
|
||||
struct pcf50633 *pcf = i2c_get_clientdata(client);
|
||||
int i;
|
||||
|
|
@ -308,7 +308,7 @@ static struct i2c_driver pcf50633_driver = {
|
|||
},
|
||||
.id_table = pcf50633_id_table,
|
||||
.probe = pcf50633_probe,
|
||||
.remove = __devexit_p(pcf50633_remove),
|
||||
.remove = pcf50633_remove,
|
||||
};
|
||||
|
||||
static int __init pcf50633_init(void)
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ static struct pm8xxx_drvdata pm8921_drvdata = {
|
|||
.pmic_read_irq_stat = pm8921_read_irq_stat,
|
||||
};
|
||||
|
||||
static int __devinit pm8921_add_subdevices(const struct pm8921_platform_data
|
||||
static int pm8921_add_subdevices(const struct pm8921_platform_data
|
||||
*pdata,
|
||||
struct pm8921 *pmic,
|
||||
u32 rev)
|
||||
|
|
@ -104,7 +104,7 @@ static int __devinit pm8921_add_subdevices(const struct pm8921_platform_data
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit pm8921_probe(struct platform_device *pdev)
|
||||
static int pm8921_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct pm8921_platform_data *pdata = pdev->dev.platform_data;
|
||||
struct pm8921 *pmic;
|
||||
|
|
@ -165,7 +165,7 @@ err_read_rev:
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int __devexit pm8921_remove(struct platform_device *pdev)
|
||||
static int pm8921_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct pm8xxx_drvdata *drvdata;
|
||||
struct pm8921 *pmic = NULL;
|
||||
|
|
@ -187,7 +187,7 @@ static int __devexit pm8921_remove(struct platform_device *pdev)
|
|||
|
||||
static struct platform_driver pm8921_driver = {
|
||||
.probe = pm8921_probe,
|
||||
.remove = __devexit_p(pm8921_remove),
|
||||
.remove = pm8921_remove,
|
||||
.driver = {
|
||||
.name = "pm8921-core",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ bail_out:
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(pm8xxx_get_irq_stat);
|
||||
|
||||
struct pm_irq_chip * __devinit pm8xxx_irq_init(struct device *dev,
|
||||
struct pm_irq_chip * pm8xxx_irq_init(struct device *dev,
|
||||
const struct pm8xxx_irq_platform_data *pdata)
|
||||
{
|
||||
struct pm_irq_chip *chip;
|
||||
|
|
@ -363,7 +363,7 @@ struct pm_irq_chip * __devinit pm8xxx_irq_init(struct device *dev,
|
|||
return chip;
|
||||
}
|
||||
|
||||
int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip)
|
||||
int pm8xxx_irq_exit(struct pm_irq_chip *chip)
|
||||
{
|
||||
irq_set_chained_handler(chip->devirq, NULL);
|
||||
kfree(chip);
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@ static const struct regmap_config rc5t583_regmap_config = {
|
|||
.cache_type = REGCACHE_RBTREE,
|
||||
};
|
||||
|
||||
static int __devinit rc5t583_i2c_probe(struct i2c_client *i2c,
|
||||
static int rc5t583_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct rc5t583 *rc5t583;
|
||||
|
|
@ -303,7 +303,7 @@ err_add_devs:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit rc5t583_i2c_remove(struct i2c_client *i2c)
|
||||
static int rc5t583_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct rc5t583 *rc5t583 = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
@ -325,7 +325,7 @@ static struct i2c_driver rc5t583_i2c_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = rc5t583_i2c_probe,
|
||||
.remove = __devexit_p(rc5t583_i2c_remove),
|
||||
.remove = rc5t583_i2c_remove,
|
||||
.id_table = rc5t583_i2c_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ static struct mfd_cell rdc321x_sb_cells[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit rdc321x_sb_probe(struct pci_dev *pdev,
|
||||
static int rdc321x_sb_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *ent)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -91,7 +91,7 @@ static int __devinit rdc321x_sb_probe(struct pci_dev *pdev,
|
|||
NULL, 0, NULL);
|
||||
}
|
||||
|
||||
static void __devexit rdc321x_sb_remove(struct pci_dev *pdev)
|
||||
static void rdc321x_sb_remove(struct pci_dev *pdev)
|
||||
{
|
||||
mfd_remove_devices(&pdev->dev);
|
||||
}
|
||||
|
|
@ -106,7 +106,7 @@ static struct pci_driver rdc321x_sb_driver = {
|
|||
.name = "RDC321x Southbridge",
|
||||
.id_table = rdc321x_sb_table,
|
||||
.probe = rdc321x_sb_probe,
|
||||
.remove = __devexit_p(rdc321x_sb_remove),
|
||||
.remove = rdc321x_sb_remove,
|
||||
};
|
||||
|
||||
module_pci_driver(rdc321x_sb_driver);
|
||||
|
|
|
|||
251
drivers/mfd/rtl8411.c
Normal file
251
drivers/mfd/rtl8411.c
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
/* Driver for Realtek PCI-Express card reader
|
||||
*
|
||||
* Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author:
|
||||
* Wei WANG <wei_wang@realsil.com.cn>
|
||||
* No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/mfd/rtsx_pci.h>
|
||||
|
||||
#include "rtsx_pcr.h"
|
||||
|
||||
static u8 rtl8411_get_ic_version(struct rtsx_pcr *pcr)
|
||||
{
|
||||
u8 val;
|
||||
|
||||
rtsx_pci_read_register(pcr, SYS_VER, &val);
|
||||
return val & 0x0F;
|
||||
}
|
||||
|
||||
static int rtl8411_extra_init_hw(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CD_PAD_CTL,
|
||||
CD_DISABLE_MASK | CD_AUTO_DISABLE, CD_ENABLE);
|
||||
}
|
||||
|
||||
static int rtl8411_turn_on_led(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00);
|
||||
}
|
||||
|
||||
static int rtl8411_turn_off_led(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01);
|
||||
}
|
||||
|
||||
static int rtl8411_enable_auto_blink(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D);
|
||||
}
|
||||
|
||||
static int rtl8411_disable_auto_blink(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00);
|
||||
}
|
||||
|
||||
static int rtl8411_card_power_on(struct rtsx_pcr *pcr, int card)
|
||||
{
|
||||
int err;
|
||||
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_5_PERCENT_ON);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_CTL,
|
||||
BPP_LDO_POWB, BPP_LDO_SUSPEND);
|
||||
err = rtsx_pci_send_cmd(pcr, 100);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* To avoid too large in-rush current */
|
||||
udelay(150);
|
||||
|
||||
err = rtsx_pci_write_register(pcr, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_10_PERCENT_ON);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
udelay(150);
|
||||
|
||||
err = rtsx_pci_write_register(pcr, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_15_PERCENT_ON);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
udelay(150);
|
||||
|
||||
err = rtsx_pci_write_register(pcr, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_ON);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return rtsx_pci_write_register(pcr, LDO_CTL, BPP_LDO_POWB, BPP_LDO_ON);
|
||||
}
|
||||
|
||||
static int rtl8411_card_power_off(struct rtsx_pcr *pcr, int card)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = rtsx_pci_write_register(pcr, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_OFF);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return rtsx_pci_write_register(pcr, LDO_CTL,
|
||||
BPP_LDO_POWB, BPP_LDO_SUSPEND);
|
||||
}
|
||||
|
||||
static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr *pcr)
|
||||
{
|
||||
unsigned int card_exist;
|
||||
|
||||
card_exist = rtsx_pci_readl(pcr, RTSX_BIPR);
|
||||
card_exist &= CARD_EXIST;
|
||||
if (!card_exist) {
|
||||
/* Enable card CD */
|
||||
rtsx_pci_write_register(pcr, CD_PAD_CTL,
|
||||
CD_DISABLE_MASK, CD_ENABLE);
|
||||
/* Enable card interrupt */
|
||||
rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x00);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (hweight32(card_exist) > 1) {
|
||||
rtsx_pci_write_register(pcr, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_5_PERCENT_ON);
|
||||
msleep(100);
|
||||
|
||||
card_exist = rtsx_pci_readl(pcr, RTSX_BIPR);
|
||||
if (card_exist & MS_EXIST)
|
||||
card_exist = MS_EXIST;
|
||||
else if (card_exist & SD_EXIST)
|
||||
card_exist = SD_EXIST;
|
||||
else
|
||||
card_exist = 0;
|
||||
|
||||
rtsx_pci_write_register(pcr, CARD_PWR_CTL,
|
||||
BPP_POWER_MASK, BPP_POWER_OFF);
|
||||
|
||||
dev_dbg(&(pcr->pci->dev),
|
||||
"After CD deglitch, card_exist = 0x%x\n",
|
||||
card_exist);
|
||||
}
|
||||
|
||||
if (card_exist & MS_EXIST) {
|
||||
/* Disable SD interrupt */
|
||||
rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x40);
|
||||
rtsx_pci_write_register(pcr, CD_PAD_CTL,
|
||||
CD_DISABLE_MASK, MS_CD_EN_ONLY);
|
||||
} else if (card_exist & SD_EXIST) {
|
||||
/* Disable MS interrupt */
|
||||
rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x80);
|
||||
rtsx_pci_write_register(pcr, CD_PAD_CTL,
|
||||
CD_DISABLE_MASK, SD_CD_EN_ONLY);
|
||||
}
|
||||
|
||||
return card_exist;
|
||||
}
|
||||
|
||||
static const struct pcr_ops rtl8411_pcr_ops = {
|
||||
.extra_init_hw = rtl8411_extra_init_hw,
|
||||
.optimize_phy = NULL,
|
||||
.turn_on_led = rtl8411_turn_on_led,
|
||||
.turn_off_led = rtl8411_turn_off_led,
|
||||
.enable_auto_blink = rtl8411_enable_auto_blink,
|
||||
.disable_auto_blink = rtl8411_disable_auto_blink,
|
||||
.card_power_on = rtl8411_card_power_on,
|
||||
.card_power_off = rtl8411_card_power_off,
|
||||
.cd_deglitch = rtl8411_cd_deglitch,
|
||||
};
|
||||
|
||||
/* SD Pull Control Enable:
|
||||
* SD_DAT[3:0] ==> pull up
|
||||
* SD_CD ==> pull up
|
||||
* SD_WP ==> pull up
|
||||
* SD_CMD ==> pull up
|
||||
* SD_CLK ==> pull down
|
||||
*/
|
||||
static const u32 rtl8411_sd_pull_ctl_enable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL1, 0xAA),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xA9),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x09),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04),
|
||||
0,
|
||||
};
|
||||
|
||||
/* SD Pull Control Disable:
|
||||
* SD_DAT[3:0] ==> pull down
|
||||
* SD_CD ==> pull up
|
||||
* SD_WP ==> pull down
|
||||
* SD_CMD ==> pull down
|
||||
* SD_CLK ==> pull down
|
||||
*/
|
||||
static const u32 rtl8411_sd_pull_ctl_disable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04),
|
||||
0,
|
||||
};
|
||||
|
||||
/* MS Pull Control Enable:
|
||||
* MS CD ==> pull up
|
||||
* others ==> pull down
|
||||
*/
|
||||
static const u32 rtl8411_ms_pull_ctl_enable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL4, 0x05),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04),
|
||||
0,
|
||||
};
|
||||
|
||||
/* MS Pull Control Disable:
|
||||
* MS CD ==> pull up
|
||||
* others ==> pull down
|
||||
*/
|
||||
static const u32 rtl8411_ms_pull_ctl_disable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04),
|
||||
0,
|
||||
};
|
||||
|
||||
void rtl8411_init_params(struct rtsx_pcr *pcr)
|
||||
{
|
||||
pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104;
|
||||
pcr->num_slots = 2;
|
||||
pcr->ops = &rtl8411_pcr_ops;
|
||||
|
||||
pcr->ic_version = rtl8411_get_ic_version(pcr);
|
||||
pcr->sd_pull_ctl_enable_tbl = rtl8411_sd_pull_ctl_enable_tbl;
|
||||
pcr->sd_pull_ctl_disable_tbl = rtl8411_sd_pull_ctl_disable_tbl;
|
||||
pcr->ms_pull_ctl_enable_tbl = rtl8411_ms_pull_ctl_enable_tbl;
|
||||
pcr->ms_pull_ctl_disable_tbl = rtl8411_ms_pull_ctl_disable_tbl;
|
||||
}
|
||||
223
drivers/mfd/rts5209.c
Normal file
223
drivers/mfd/rts5209.c
Normal file
|
|
@ -0,0 +1,223 @@
|
|||
/* Driver for Realtek PCI-Express card reader
|
||||
*
|
||||
* Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author:
|
||||
* Wei WANG <wei_wang@realsil.com.cn>
|
||||
* No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/mfd/rtsx_pci.h>
|
||||
|
||||
#include "rtsx_pcr.h"
|
||||
|
||||
static u8 rts5209_get_ic_version(struct rtsx_pcr *pcr)
|
||||
{
|
||||
u8 val;
|
||||
|
||||
val = rtsx_pci_readb(pcr, 0x1C);
|
||||
return val & 0x0F;
|
||||
}
|
||||
|
||||
static void rts5209_init_vendor_cfg(struct rtsx_pcr *pcr)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
rtsx_pci_read_config_dword(pcr, 0x724, &val);
|
||||
dev_dbg(&(pcr->pci->dev), "Cfg 0x724: 0x%x\n", val);
|
||||
|
||||
if (!(val & 0x80)) {
|
||||
if (val & 0x08)
|
||||
pcr->ms_pmos = false;
|
||||
else
|
||||
pcr->ms_pmos = true;
|
||||
}
|
||||
}
|
||||
|
||||
static int rts5209_extra_init_hw(struct rtsx_pcr *pcr)
|
||||
{
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
|
||||
/* Turn off LED */
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_GPIO, 0xFF, 0x03);
|
||||
/* Configure GPIO as output */
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_GPIO_DIR, 0xFF, 0x03);
|
||||
|
||||
return rtsx_pci_send_cmd(pcr, 100);
|
||||
}
|
||||
|
||||
static int rts5209_optimize_phy(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_phy_register(pcr, 0x00, 0xB966);
|
||||
}
|
||||
|
||||
static int rts5209_turn_on_led(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00);
|
||||
}
|
||||
|
||||
static int rts5209_turn_off_led(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01);
|
||||
}
|
||||
|
||||
static int rts5209_enable_auto_blink(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D);
|
||||
}
|
||||
|
||||
static int rts5209_disable_auto_blink(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00);
|
||||
}
|
||||
|
||||
static int rts5209_card_power_on(struct rtsx_pcr *pcr, int card)
|
||||
{
|
||||
int err;
|
||||
u8 pwr_mask, partial_pwr_on, pwr_on;
|
||||
|
||||
pwr_mask = SD_POWER_MASK;
|
||||
partial_pwr_on = SD_PARTIAL_POWER_ON;
|
||||
pwr_on = SD_POWER_ON;
|
||||
|
||||
if (pcr->ms_pmos && (card == RTSX_MS_CARD)) {
|
||||
pwr_mask = MS_POWER_MASK;
|
||||
partial_pwr_on = MS_PARTIAL_POWER_ON;
|
||||
pwr_on = MS_POWER_ON;
|
||||
}
|
||||
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
|
||||
pwr_mask, partial_pwr_on);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL,
|
||||
LDO3318_PWR_MASK, 0x04);
|
||||
err = rtsx_pci_send_cmd(pcr, 100);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* To avoid too large in-rush current */
|
||||
udelay(150);
|
||||
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, pwr_mask, pwr_on);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL,
|
||||
LDO3318_PWR_MASK, 0x00);
|
||||
err = rtsx_pci_send_cmd(pcr, 100);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rts5209_card_power_off(struct rtsx_pcr *pcr, int card)
|
||||
{
|
||||
u8 pwr_mask, pwr_off;
|
||||
|
||||
pwr_mask = SD_POWER_MASK;
|
||||
pwr_off = SD_POWER_OFF;
|
||||
|
||||
if (pcr->ms_pmos && (card == RTSX_MS_CARD)) {
|
||||
pwr_mask = MS_POWER_MASK;
|
||||
pwr_off = MS_POWER_OFF;
|
||||
}
|
||||
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
|
||||
pwr_mask | PMOS_STRG_MASK, pwr_off | PMOS_STRG_400mA);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL,
|
||||
LDO3318_PWR_MASK, 0X06);
|
||||
return rtsx_pci_send_cmd(pcr, 100);
|
||||
}
|
||||
|
||||
static const struct pcr_ops rts5209_pcr_ops = {
|
||||
.extra_init_hw = rts5209_extra_init_hw,
|
||||
.optimize_phy = rts5209_optimize_phy,
|
||||
.turn_on_led = rts5209_turn_on_led,
|
||||
.turn_off_led = rts5209_turn_off_led,
|
||||
.enable_auto_blink = rts5209_enable_auto_blink,
|
||||
.disable_auto_blink = rts5209_disable_auto_blink,
|
||||
.card_power_on = rts5209_card_power_on,
|
||||
.card_power_off = rts5209_card_power_off,
|
||||
.cd_deglitch = NULL,
|
||||
};
|
||||
|
||||
/* SD Pull Control Enable:
|
||||
* SD_DAT[3:0] ==> pull up
|
||||
* SD_CD ==> pull up
|
||||
* SD_WP ==> pull up
|
||||
* SD_CMD ==> pull up
|
||||
* SD_CLK ==> pull down
|
||||
*/
|
||||
static const u32 rts5209_sd_pull_ctl_enable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL1, 0xAA),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9),
|
||||
0,
|
||||
};
|
||||
|
||||
/* SD Pull Control Disable:
|
||||
* SD_DAT[3:0] ==> pull down
|
||||
* SD_CD ==> pull up
|
||||
* SD_WP ==> pull down
|
||||
* SD_CMD ==> pull down
|
||||
* SD_CLK ==> pull down
|
||||
*/
|
||||
static const u32 rts5209_sd_pull_ctl_disable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL1, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5),
|
||||
0,
|
||||
};
|
||||
|
||||
/* MS Pull Control Enable:
|
||||
* MS CD ==> pull up
|
||||
* others ==> pull down
|
||||
*/
|
||||
static const u32 rts5209_ms_pull_ctl_enable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL4, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15),
|
||||
0,
|
||||
};
|
||||
|
||||
/* MS Pull Control Disable:
|
||||
* MS CD ==> pull up
|
||||
* others ==> pull down
|
||||
*/
|
||||
static const u32 rts5209_ms_pull_ctl_disable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL4, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15),
|
||||
0,
|
||||
};
|
||||
|
||||
void rts5209_init_params(struct rtsx_pcr *pcr)
|
||||
{
|
||||
pcr->extra_caps = EXTRA_CAPS_SD_SDR50 |
|
||||
EXTRA_CAPS_SD_SDR104 | EXTRA_CAPS_MMC_8BIT;
|
||||
pcr->num_slots = 2;
|
||||
pcr->ops = &rts5209_pcr_ops;
|
||||
|
||||
rts5209_init_vendor_cfg(pcr);
|
||||
|
||||
pcr->ic_version = rts5209_get_ic_version(pcr);
|
||||
pcr->sd_pull_ctl_enable_tbl = rts5209_sd_pull_ctl_enable_tbl;
|
||||
pcr->sd_pull_ctl_disable_tbl = rts5209_sd_pull_ctl_disable_tbl;
|
||||
pcr->ms_pull_ctl_enable_tbl = rts5209_ms_pull_ctl_enable_tbl;
|
||||
pcr->ms_pull_ctl_disable_tbl = rts5209_ms_pull_ctl_disable_tbl;
|
||||
}
|
||||
205
drivers/mfd/rts5229.c
Normal file
205
drivers/mfd/rts5229.c
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
/* Driver for Realtek PCI-Express card reader
|
||||
*
|
||||
* Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author:
|
||||
* Wei WANG <wei_wang@realsil.com.cn>
|
||||
* No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/mfd/rtsx_pci.h>
|
||||
|
||||
#include "rtsx_pcr.h"
|
||||
|
||||
static u8 rts5229_get_ic_version(struct rtsx_pcr *pcr)
|
||||
{
|
||||
u8 val;
|
||||
|
||||
rtsx_pci_read_register(pcr, DUMMY_REG_RESET_0, &val);
|
||||
return val & 0x0F;
|
||||
}
|
||||
|
||||
static int rts5229_extra_init_hw(struct rtsx_pcr *pcr)
|
||||
{
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
|
||||
/* Configure GPIO as output */
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, GPIO_CTL, 0x02, 0x02);
|
||||
/* Switch LDO3318 source from DV33 to card_3v3 */
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x00);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x01);
|
||||
/* LED shine disabled, set initial shine cycle period */
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OLT_LED_CTL, 0x0F, 0x02);
|
||||
|
||||
return rtsx_pci_send_cmd(pcr, 100);
|
||||
}
|
||||
|
||||
static int rts5229_optimize_phy(struct rtsx_pcr *pcr)
|
||||
{
|
||||
/* Optimize RX sensitivity */
|
||||
return rtsx_pci_write_phy_register(pcr, 0x00, 0xBA42);
|
||||
}
|
||||
|
||||
static int rts5229_turn_on_led(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x02);
|
||||
}
|
||||
|
||||
static int rts5229_turn_off_led(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00);
|
||||
}
|
||||
|
||||
static int rts5229_enable_auto_blink(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x08);
|
||||
}
|
||||
|
||||
static int rts5229_disable_auto_blink(struct rtsx_pcr *pcr)
|
||||
{
|
||||
return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x00);
|
||||
}
|
||||
|
||||
static int rts5229_card_power_on(struct rtsx_pcr *pcr, int card)
|
||||
{
|
||||
int err;
|
||||
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
|
||||
SD_POWER_MASK, SD_PARTIAL_POWER_ON);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL,
|
||||
LDO3318_PWR_MASK, 0x02);
|
||||
err = rtsx_pci_send_cmd(pcr, 100);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* To avoid too large in-rush current */
|
||||
udelay(150);
|
||||
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
|
||||
SD_POWER_MASK, SD_POWER_ON);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL,
|
||||
LDO3318_PWR_MASK, 0x06);
|
||||
err = rtsx_pci_send_cmd(pcr, 100);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rts5229_card_power_off(struct rtsx_pcr *pcr, int card)
|
||||
{
|
||||
rtsx_pci_init_cmd(pcr);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
|
||||
SD_POWER_MASK | PMOS_STRG_MASK,
|
||||
SD_POWER_OFF | PMOS_STRG_400mA);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL,
|
||||
LDO3318_PWR_MASK, 0X00);
|
||||
return rtsx_pci_send_cmd(pcr, 100);
|
||||
}
|
||||
|
||||
static const struct pcr_ops rts5229_pcr_ops = {
|
||||
.extra_init_hw = rts5229_extra_init_hw,
|
||||
.optimize_phy = rts5229_optimize_phy,
|
||||
.turn_on_led = rts5229_turn_on_led,
|
||||
.turn_off_led = rts5229_turn_off_led,
|
||||
.enable_auto_blink = rts5229_enable_auto_blink,
|
||||
.disable_auto_blink = rts5229_disable_auto_blink,
|
||||
.card_power_on = rts5229_card_power_on,
|
||||
.card_power_off = rts5229_card_power_off,
|
||||
.cd_deglitch = NULL,
|
||||
};
|
||||
|
||||
/* SD Pull Control Enable:
|
||||
* SD_DAT[3:0] ==> pull up
|
||||
* SD_CD ==> pull up
|
||||
* SD_WP ==> pull up
|
||||
* SD_CMD ==> pull up
|
||||
* SD_CLK ==> pull down
|
||||
*/
|
||||
static const u32 rts5229_sd_pull_ctl_enable_tbl1[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9),
|
||||
0,
|
||||
};
|
||||
|
||||
/* For RTS5229 version C */
|
||||
static const u32 rts5229_sd_pull_ctl_enable_tbl2[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD9),
|
||||
0,
|
||||
};
|
||||
|
||||
/* SD Pull Control Disable:
|
||||
* SD_DAT[3:0] ==> pull down
|
||||
* SD_CD ==> pull up
|
||||
* SD_WP ==> pull down
|
||||
* SD_CMD ==> pull down
|
||||
* SD_CLK ==> pull down
|
||||
*/
|
||||
static const u32 rts5229_sd_pull_ctl_disable_tbl1[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5),
|
||||
0,
|
||||
};
|
||||
|
||||
/* For RTS5229 version C */
|
||||
static const u32 rts5229_sd_pull_ctl_disable_tbl2[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE5),
|
||||
0,
|
||||
};
|
||||
|
||||
/* MS Pull Control Enable:
|
||||
* MS CD ==> pull up
|
||||
* others ==> pull down
|
||||
*/
|
||||
static const u32 rts5229_ms_pull_ctl_enable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15),
|
||||
0,
|
||||
};
|
||||
|
||||
/* MS Pull Control Disable:
|
||||
* MS CD ==> pull up
|
||||
* others ==> pull down
|
||||
*/
|
||||
static const u32 rts5229_ms_pull_ctl_disable_tbl[] = {
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55),
|
||||
RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15),
|
||||
0,
|
||||
};
|
||||
|
||||
void rts5229_init_params(struct rtsx_pcr *pcr)
|
||||
{
|
||||
pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104;
|
||||
pcr->num_slots = 2;
|
||||
pcr->ops = &rts5229_pcr_ops;
|
||||
|
||||
pcr->ic_version = rts5229_get_ic_version(pcr);
|
||||
if (pcr->ic_version == IC_VER_C) {
|
||||
pcr->sd_pull_ctl_enable_tbl = rts5229_sd_pull_ctl_enable_tbl2;
|
||||
pcr->sd_pull_ctl_disable_tbl = rts5229_sd_pull_ctl_disable_tbl2;
|
||||
} else {
|
||||
pcr->sd_pull_ctl_enable_tbl = rts5229_sd_pull_ctl_enable_tbl1;
|
||||
pcr->sd_pull_ctl_disable_tbl = rts5229_sd_pull_ctl_disable_tbl1;
|
||||
}
|
||||
pcr->ms_pull_ctl_enable_tbl = rts5229_ms_pull_ctl_enable_tbl;
|
||||
pcr->ms_pull_ctl_disable_tbl = rts5229_ms_pull_ctl_disable_tbl;
|
||||
}
|
||||
1251
drivers/mfd/rtsx_pcr.c
Normal file
1251
drivers/mfd/rtsx_pcr.c
Normal file
File diff suppressed because it is too large
Load diff
32
drivers/mfd/rtsx_pcr.h
Normal file
32
drivers/mfd/rtsx_pcr.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/* Driver for Realtek PCI-Express card reader
|
||||
*
|
||||
* Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author:
|
||||
* Wei WANG <wei_wang@realsil.com.cn>
|
||||
* No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
|
||||
*/
|
||||
|
||||
#ifndef __RTSX_PCR_H
|
||||
#define __RTSX_PCR_H
|
||||
|
||||
#include <linux/mfd/rtsx_pci.h>
|
||||
|
||||
void rts5209_init_params(struct rtsx_pcr *pcr);
|
||||
void rts5229_init_params(struct rtsx_pcr *pcr);
|
||||
void rtl8411_init_params(struct rtsx_pcr *pcr);
|
||||
|
||||
#endif
|
||||
|
|
@ -1014,7 +1014,7 @@ static struct gpio_chip gpio_chip_template = {
|
|||
.get = sm501_gpio_get,
|
||||
};
|
||||
|
||||
static int __devinit sm501_gpio_register_chip(struct sm501_devdata *sm,
|
||||
static int sm501_gpio_register_chip(struct sm501_devdata *sm,
|
||||
struct sm501_gpio *gpio,
|
||||
struct sm501_gpio_chip *chip)
|
||||
{
|
||||
|
|
@ -1042,7 +1042,7 @@ static int __devinit sm501_gpio_register_chip(struct sm501_devdata *sm,
|
|||
return gpiochip_add(gchip);
|
||||
}
|
||||
|
||||
static int __devinit sm501_register_gpio(struct sm501_devdata *sm)
|
||||
static int sm501_register_gpio(struct sm501_devdata *sm)
|
||||
{
|
||||
struct sm501_gpio *gpio = &sm->gpio;
|
||||
resource_size_t iobase = sm->io_res->start + SM501_GPIO;
|
||||
|
|
@ -1313,7 +1313,7 @@ static unsigned int sm501_mem_local[] = {
|
|||
* Common init code for an SM501
|
||||
*/
|
||||
|
||||
static int __devinit sm501_init_dev(struct sm501_devdata *sm)
|
||||
static int sm501_init_dev(struct sm501_devdata *sm)
|
||||
{
|
||||
struct sm501_initdata *idata;
|
||||
struct sm501_platdata *pdata;
|
||||
|
|
@ -1389,7 +1389,7 @@ static int __devinit sm501_init_dev(struct sm501_devdata *sm)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit sm501_plat_probe(struct platform_device *dev)
|
||||
static int sm501_plat_probe(struct platform_device *dev)
|
||||
{
|
||||
struct sm501_devdata *sm;
|
||||
int ret;
|
||||
|
|
@ -1578,7 +1578,7 @@ static struct sm501_platdata sm501_pci_platdata = {
|
|||
.gpio_base = -1,
|
||||
};
|
||||
|
||||
static int __devinit sm501_pci_probe(struct pci_dev *dev,
|
||||
static int sm501_pci_probe(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
struct sm501_devdata *sm;
|
||||
|
|
@ -1685,7 +1685,7 @@ static void sm501_dev_remove(struct sm501_devdata *sm)
|
|||
sm501_gpio_remove(sm);
|
||||
}
|
||||
|
||||
static void __devexit sm501_pci_remove(struct pci_dev *dev)
|
||||
static void sm501_pci_remove(struct pci_dev *dev)
|
||||
{
|
||||
struct sm501_devdata *sm = pci_get_drvdata(dev);
|
||||
|
||||
|
|
@ -1723,12 +1723,12 @@ static struct pci_driver sm501_pci_driver = {
|
|||
.name = "sm501",
|
||||
.id_table = sm501_pci_tbl,
|
||||
.probe = sm501_pci_probe,
|
||||
.remove = __devexit_p(sm501_pci_remove),
|
||||
.remove = sm501_pci_remove,
|
||||
};
|
||||
|
||||
MODULE_ALIAS("platform:sm501");
|
||||
|
||||
static struct of_device_id __devinitdata of_sm501_match_tbl[] = {
|
||||
static struct of_device_id of_sm501_match_tbl[] = {
|
||||
{ .compatible = "smi,sm501", },
|
||||
{ /* end */ }
|
||||
};
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ static struct sta2x11_mfd *sta2x11_mfd_find(struct pci_dev *pdev)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int __devinit sta2x11_mfd_add(struct pci_dev *pdev, gfp_t flags)
|
||||
static int sta2x11_mfd_add(struct pci_dev *pdev, gfp_t flags)
|
||||
{
|
||||
struct sta2x11_mfd *mfd = sta2x11_mfd_find(pdev);
|
||||
struct sta2x11_instance *instance;
|
||||
|
|
@ -89,7 +89,7 @@ static int __devinit sta2x11_mfd_add(struct pci_dev *pdev, gfp_t flags)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit mfd_remove(struct pci_dev *pdev)
|
||||
static int mfd_remove(struct pci_dev *pdev)
|
||||
{
|
||||
struct sta2x11_mfd *mfd = sta2x11_mfd_find(pdev);
|
||||
|
||||
|
|
@ -305,7 +305,7 @@ enum bar1_cells {
|
|||
.flags = IORESOURCE_MEM, \
|
||||
}
|
||||
|
||||
static const __devinitconst struct resource gpio_resources[] = {
|
||||
static const struct resource gpio_resources[] = {
|
||||
{
|
||||
.name = "sta2x11_gpio", /* 4 consecutive cells, 1 driver */
|
||||
.start = 0,
|
||||
|
|
@ -313,31 +313,31 @@ static const __devinitconst struct resource gpio_resources[] = {
|
|||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
static const __devinitconst struct resource sctl_resources[] = {
|
||||
static const struct resource sctl_resources[] = {
|
||||
CELL_4K("sta2x11-sctl", STA2X11_SCTL),
|
||||
};
|
||||
static const __devinitconst struct resource scr_resources[] = {
|
||||
static const struct resource scr_resources[] = {
|
||||
CELL_4K("sta2x11-scr", STA2X11_SCR),
|
||||
};
|
||||
static const __devinitconst struct resource time_resources[] = {
|
||||
static const struct resource time_resources[] = {
|
||||
CELL_4K("sta2x11-time", STA2X11_TIME),
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource apbreg_resources[] = {
|
||||
static const struct resource apbreg_resources[] = {
|
||||
CELL_4K("sta2x11-apbreg", STA2X11_APBREG),
|
||||
};
|
||||
|
||||
#define DEV(_name, _r) \
|
||||
{ .name = _name, .num_resources = ARRAY_SIZE(_r), .resources = _r, }
|
||||
|
||||
static __devinitdata struct mfd_cell sta2x11_mfd_bar0[] = {
|
||||
static struct mfd_cell sta2x11_mfd_bar0[] = {
|
||||
DEV("sta2x11-gpio", gpio_resources), /* offset 0: we add pdata later */
|
||||
DEV("sta2x11-sctl", sctl_resources),
|
||||
DEV("sta2x11-scr", scr_resources),
|
||||
DEV("sta2x11-time", time_resources),
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell sta2x11_mfd_bar1[] = {
|
||||
static struct mfd_cell sta2x11_mfd_bar1[] = {
|
||||
DEV("sta2x11-apbreg", apbreg_resources),
|
||||
};
|
||||
|
||||
|
|
@ -363,7 +363,7 @@ static int sta2x11_mfd_resume(struct pci_dev *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit sta2x11_mfd_probe(struct pci_dev *pdev,
|
||||
static int sta2x11_mfd_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *pci_id)
|
||||
{
|
||||
int err, i;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ static struct stmpe_client_info i2c_ci = {
|
|||
.write_block = i2c_block_write,
|
||||
};
|
||||
|
||||
static int __devinit
|
||||
static int
|
||||
stmpe_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
|
||||
{
|
||||
i2c_ci.data = (void *)id;
|
||||
|
|
@ -63,7 +63,7 @@ stmpe_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
|
|||
return stmpe_probe(&i2c_ci, id->driver_data);
|
||||
}
|
||||
|
||||
static int __devexit stmpe_i2c_remove(struct i2c_client *i2c)
|
||||
static int stmpe_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct stmpe *stmpe = dev_get_drvdata(&i2c->dev);
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ static struct i2c_driver stmpe_i2c_driver = {
|
|||
.driver.pm = &stmpe_dev_pm_ops,
|
||||
#endif
|
||||
.probe = stmpe_i2c_probe,
|
||||
.remove = __devexit_p(stmpe_i2c_remove),
|
||||
.remove = stmpe_i2c_remove,
|
||||
.id_table = stmpe_i2c_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ static struct stmpe_client_info spi_ci = {
|
|||
.init = spi_init,
|
||||
};
|
||||
|
||||
static int __devinit
|
||||
static int
|
||||
stmpe_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
const struct spi_device_id *id = spi_get_device_id(spi);
|
||||
|
|
@ -101,7 +101,7 @@ stmpe_spi_probe(struct spi_device *spi)
|
|||
return stmpe_probe(&spi_ci, id->driver_data);
|
||||
}
|
||||
|
||||
static int __devexit stmpe_spi_remove(struct spi_device *spi)
|
||||
static int stmpe_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
struct stmpe *stmpe = dev_get_drvdata(&spi->dev);
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ static struct spi_driver stmpe_spi_driver = {
|
|||
#endif
|
||||
},
|
||||
.probe = stmpe_spi_probe,
|
||||
.remove = __devexit_p(stmpe_spi_remove),
|
||||
.remove = stmpe_spi_remove,
|
||||
.id_table = stmpe_spi_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -294,12 +294,14 @@ static struct resource stmpe_gpio_resources[] = {
|
|||
|
||||
static struct mfd_cell stmpe_gpio_cell = {
|
||||
.name = "stmpe-gpio",
|
||||
.of_compatible = "st,stmpe-gpio",
|
||||
.resources = stmpe_gpio_resources,
|
||||
.num_resources = ARRAY_SIZE(stmpe_gpio_resources),
|
||||
};
|
||||
|
||||
static struct mfd_cell stmpe_gpio_cell_noirq = {
|
||||
.name = "stmpe-gpio",
|
||||
.of_compatible = "st,stmpe-gpio",
|
||||
/* gpio cell resources consist of an irq only so no resources here */
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ static struct regmap_config syscon_regmap_config = {
|
|||
.reg_stride = 4,
|
||||
};
|
||||
|
||||
static int __devinit syscon_probe(struct platform_device *pdev)
|
||||
static int syscon_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct device_node *np = dev->of_node;
|
||||
|
|
@ -138,7 +138,7 @@ static int __devinit syscon_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit syscon_remove(struct platform_device *pdev)
|
||||
static int syscon_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct syscon *syscon;
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ static struct platform_driver syscon_driver = {
|
|||
.of_match_table = of_syscon_match,
|
||||
},
|
||||
.probe = syscon_probe,
|
||||
.remove = __devexit_p(syscon_remove),
|
||||
.remove = syscon_remove,
|
||||
};
|
||||
|
||||
static int __init syscon_init(void)
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ static int tc3589x_chip_init(struct tc3589x *tc3589x)
|
|||
return tc3589x_reg_write(tc3589x, TC3589x_RSTINTCLR, 0x1);
|
||||
}
|
||||
|
||||
static int __devinit tc3589x_device_init(struct tc3589x *tc3589x)
|
||||
static int tc3589x_device_init(struct tc3589x *tc3589x)
|
||||
{
|
||||
int ret = 0;
|
||||
unsigned int blocks = tc3589x->pdata->block;
|
||||
|
|
@ -329,7 +329,7 @@ static int tc3589x_of_probe(struct device_node *np,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit tc3589x_probe(struct i2c_client *i2c,
|
||||
static int tc3589x_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct tc3589x_platform_data *pdata = i2c->dev.platform_data;
|
||||
|
|
@ -402,7 +402,7 @@ out_free:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit tc3589x_remove(struct i2c_client *client)
|
||||
static int tc3589x_remove(struct i2c_client *client)
|
||||
{
|
||||
struct tc3589x *tc3589x = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -458,7 +458,7 @@ static struct i2c_driver tc3589x_driver = {
|
|||
.driver.owner = THIS_MODULE,
|
||||
.driver.pm = &tc3589x_dev_pm_ops,
|
||||
.probe = tc3589x_probe,
|
||||
.remove = __devexit_p(tc3589x_remove),
|
||||
.remove = tc3589x_remove,
|
||||
.id_table = tc3589x_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ static struct mfd_cell tc6387xb_cells[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit tc6387xb_probe(struct platform_device *dev)
|
||||
static int tc6387xb_probe(struct platform_device *dev)
|
||||
{
|
||||
struct tc6387xb_platform_data *pdata = dev->dev.platform_data;
|
||||
struct resource *iomem, *rscr;
|
||||
|
|
@ -208,7 +208,7 @@ err_no_irq:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit tc6387xb_remove(struct platform_device *dev)
|
||||
static int tc6387xb_remove(struct platform_device *dev)
|
||||
{
|
||||
struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
|
||||
|
||||
|
|
@ -229,7 +229,7 @@ static struct platform_driver tc6387xb_platform_driver = {
|
|||
.name = "tc6387xb",
|
||||
},
|
||||
.probe = tc6387xb_probe,
|
||||
.remove = __devexit_p(tc6387xb_remove),
|
||||
.remove = tc6387xb_remove,
|
||||
.suspend = tc6387xb_suspend,
|
||||
.resume = tc6387xb_resume,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ static int tc6393xb_nand_enable(struct platform_device *nand)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct resource __devinitdata tc6393xb_nand_resources[] = {
|
||||
static struct resource tc6393xb_nand_resources[] = {
|
||||
{
|
||||
.start = 0x1000,
|
||||
.end = 0x1007,
|
||||
|
|
@ -196,7 +196,7 @@ static const struct resource tc6393xb_ohci_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct resource __devinitdata tc6393xb_fb_resources[] = {
|
||||
static struct resource tc6393xb_fb_resources[] = {
|
||||
{
|
||||
.start = 0x5000,
|
||||
.end = 0x51ff,
|
||||
|
|
@ -382,7 +382,7 @@ static struct tmio_mmc_data tc6393xb_mmc_data = {
|
|||
.set_clk_div = tc6393xb_mmc_clk_div,
|
||||
};
|
||||
|
||||
static struct mfd_cell __devinitdata tc6393xb_cells[] = {
|
||||
static struct mfd_cell tc6393xb_cells[] = {
|
||||
[TC6393XB_CELL_NAND] = {
|
||||
.name = "tmio-nand",
|
||||
.enable = tc6393xb_nand_enable,
|
||||
|
|
@ -602,7 +602,7 @@ static void tc6393xb_detach_irq(struct platform_device *dev)
|
|||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
static int __devinit tc6393xb_probe(struct platform_device *dev)
|
||||
static int tc6393xb_probe(struct platform_device *dev)
|
||||
{
|
||||
struct tc6393xb_platform_data *tcpd = dev->dev.platform_data;
|
||||
struct tc6393xb *tc6393xb;
|
||||
|
|
@ -731,7 +731,7 @@ err_kzalloc:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit tc6393xb_remove(struct platform_device *dev)
|
||||
static int tc6393xb_remove(struct platform_device *dev)
|
||||
{
|
||||
struct tc6393xb_platform_data *tcpd = dev->dev.platform_data;
|
||||
struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
|
||||
|
|
@ -831,7 +831,7 @@ static int tc6393xb_resume(struct platform_device *dev)
|
|||
|
||||
static struct platform_driver tc6393xb_driver = {
|
||||
.probe = tc6393xb_probe,
|
||||
.remove = __devexit_p(tc6393xb_remove),
|
||||
.remove = tc6393xb_remove,
|
||||
.suspend = tc6393xb_suspend,
|
||||
.resume = tc6393xb_resume,
|
||||
|
||||
|
|
|
|||
|
|
@ -315,7 +315,7 @@ static irqreturn_t ti_ssp_interrupt(int irq, void *dev_data)
|
|||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int __devinit ti_ssp_probe(struct platform_device *pdev)
|
||||
static int ti_ssp_probe(struct platform_device *pdev)
|
||||
{
|
||||
static struct ti_ssp *ssp;
|
||||
const struct ti_ssp_data *pdata = pdev->dev.platform_data;
|
||||
|
|
@ -433,7 +433,7 @@ error_res:
|
|||
return error;
|
||||
}
|
||||
|
||||
static int __devexit ti_ssp_remove(struct platform_device *pdev)
|
||||
static int ti_ssp_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct ti_ssp *ssp = dev_get_drvdata(dev);
|
||||
|
|
@ -451,7 +451,7 @@ static int __devexit ti_ssp_remove(struct platform_device *pdev)
|
|||
|
||||
static struct platform_driver ti_ssp_driver = {
|
||||
.probe = ti_ssp_probe,
|
||||
.remove = __devexit_p(ti_ssp_remove),
|
||||
.remove = ti_ssp_remove,
|
||||
.driver = {
|
||||
.name = "ti-ssp",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
|||
|
|
@ -75,13 +75,13 @@ static struct i2c_board_info timberdale_i2c_board_info[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct xiic_i2c_platform_data
|
||||
static struct xiic_i2c_platform_data
|
||||
timberdale_xiic_platform_data = {
|
||||
.devices = timberdale_i2c_board_info,
|
||||
.num_devices = ARRAY_SIZE(timberdale_i2c_board_info)
|
||||
};
|
||||
|
||||
static __devinitdata struct ocores_i2c_platform_data
|
||||
static struct ocores_i2c_platform_data
|
||||
timberdale_ocores_platform_data = {
|
||||
.reg_shift = 2,
|
||||
.clock_khz = 62500,
|
||||
|
|
@ -89,7 +89,7 @@ timberdale_ocores_platform_data = {
|
|||
.num_devices = ARRAY_SIZE(timberdale_i2c_board_info)
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_xiic_resources[] = {
|
||||
static const struct resource timberdale_xiic_resources[] = {
|
||||
{
|
||||
.start = XIICOFFSET,
|
||||
.end = XIICEND,
|
||||
|
|
@ -102,7 +102,7 @@ static const __devinitconst struct resource timberdale_xiic_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_ocores_resources[] = {
|
||||
static const struct resource timberdale_ocores_resources[] = {
|
||||
{
|
||||
.start = OCORESOFFSET,
|
||||
.end = OCORESEND,
|
||||
|
|
@ -143,7 +143,7 @@ static struct spi_board_info timberdale_spi_8bit_board_info[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct xspi_platform_data timberdale_xspi_platform_data = {
|
||||
static struct xspi_platform_data timberdale_xspi_platform_data = {
|
||||
.num_chipselect = 3,
|
||||
.little_endian = true,
|
||||
/* bits per word and devices will be filled in runtime depending
|
||||
|
|
@ -151,7 +151,7 @@ static __devinitdata struct xspi_platform_data timberdale_xspi_platform_data = {
|
|||
*/
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_spi_resources[] = {
|
||||
static const struct resource timberdale_spi_resources[] = {
|
||||
{
|
||||
.start = SPIOFFSET,
|
||||
.end = SPIEND,
|
||||
|
|
@ -164,13 +164,13 @@ static const __devinitconst struct resource timberdale_spi_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct ks8842_platform_data
|
||||
static struct ks8842_platform_data
|
||||
timberdale_ks8842_platform_data = {
|
||||
.rx_dma_channel = DMA_ETH_RX,
|
||||
.tx_dma_channel = DMA_ETH_TX
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_eth_resources[] = {
|
||||
static const struct resource timberdale_eth_resources[] = {
|
||||
{
|
||||
.start = ETHOFFSET,
|
||||
.end = ETHEND,
|
||||
|
|
@ -183,14 +183,14 @@ static const __devinitconst struct resource timberdale_eth_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct timbgpio_platform_data
|
||||
static struct timbgpio_platform_data
|
||||
timberdale_gpio_platform_data = {
|
||||
.gpio_base = 0,
|
||||
.nr_pins = GPIO_NR_PINS,
|
||||
.irq_base = 200,
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_gpio_resources[] = {
|
||||
static const struct resource timberdale_gpio_resources[] = {
|
||||
{
|
||||
.start = GPIOOFFSET,
|
||||
.end = GPIOEND,
|
||||
|
|
@ -203,7 +203,7 @@ static const __devinitconst struct resource timberdale_gpio_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_mlogicore_resources[] = {
|
||||
static const struct resource timberdale_mlogicore_resources[] = {
|
||||
{
|
||||
.start = MLCOREOFFSET,
|
||||
.end = MLCOREEND,
|
||||
|
|
@ -221,7 +221,7 @@ static const __devinitconst struct resource timberdale_mlogicore_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_uart_resources[] = {
|
||||
static const struct resource timberdale_uart_resources[] = {
|
||||
{
|
||||
.start = UARTOFFSET,
|
||||
.end = UARTEND,
|
||||
|
|
@ -234,7 +234,7 @@ static const __devinitconst struct resource timberdale_uart_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_uartlite_resources[] = {
|
||||
static const struct resource timberdale_uartlite_resources[] = {
|
||||
{
|
||||
.start = UARTLITEOFFSET,
|
||||
.end = UARTLITEEND,
|
||||
|
|
@ -247,13 +247,13 @@ static const __devinitconst struct resource timberdale_uartlite_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct i2c_board_info timberdale_adv7180_i2c_board_info = {
|
||||
static struct i2c_board_info timberdale_adv7180_i2c_board_info = {
|
||||
/* Requires jumper JP9 to be off */
|
||||
I2C_BOARD_INFO("adv7180", 0x42 >> 1),
|
||||
.irq = IRQ_TIMBERDALE_ADV7180
|
||||
};
|
||||
|
||||
static __devinitdata struct timb_video_platform_data
|
||||
static struct timb_video_platform_data
|
||||
timberdale_video_platform_data = {
|
||||
.dma_channel = DMA_VIDEO_RX,
|
||||
.i2c_adapter = 0,
|
||||
|
|
@ -262,7 +262,7 @@ static __devinitdata struct timb_video_platform_data
|
|||
}
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource
|
||||
static const struct resource
|
||||
timberdale_radio_resources[] = {
|
||||
{
|
||||
.start = RDSOFFSET,
|
||||
|
|
@ -276,22 +276,22 @@ timberdale_radio_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct i2c_board_info timberdale_tef6868_i2c_board_info = {
|
||||
static struct i2c_board_info timberdale_tef6868_i2c_board_info = {
|
||||
I2C_BOARD_INFO("tef6862", 0x60)
|
||||
};
|
||||
|
||||
static __devinitdata struct i2c_board_info timberdale_saa7706_i2c_board_info = {
|
||||
static struct i2c_board_info timberdale_saa7706_i2c_board_info = {
|
||||
I2C_BOARD_INFO("saa7706h", 0x1C)
|
||||
};
|
||||
|
||||
static __devinitdata struct timb_radio_platform_data
|
||||
static struct timb_radio_platform_data
|
||||
timberdale_radio_platform_data = {
|
||||
.i2c_adapter = 0,
|
||||
.tuner = &timberdale_tef6868_i2c_board_info,
|
||||
.dsp = &timberdale_saa7706_i2c_board_info
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_video_resources[] = {
|
||||
static const struct resource timberdale_video_resources[] = {
|
||||
{
|
||||
.start = LOGIWOFFSET,
|
||||
.end = LOGIWEND,
|
||||
|
|
@ -303,7 +303,7 @@ static const __devinitconst struct resource timberdale_video_resources[] = {
|
|||
*/
|
||||
};
|
||||
|
||||
static __devinitdata struct timb_dma_platform_data timb_dma_platform_data = {
|
||||
static struct timb_dma_platform_data timb_dma_platform_data = {
|
||||
.nr_channels = 10,
|
||||
.channels = {
|
||||
{
|
||||
|
|
@ -362,7 +362,7 @@ static __devinitdata struct timb_dma_platform_data timb_dma_platform_data = {
|
|||
}
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_dma_resources[] = {
|
||||
static const struct resource timberdale_dma_resources[] = {
|
||||
{
|
||||
.start = DMAOFFSET,
|
||||
.end = DMAEND,
|
||||
|
|
@ -375,7 +375,7 @@ static const __devinitconst struct resource timberdale_dma_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg0[] = {
|
||||
static struct mfd_cell timberdale_cells_bar0_cfg0[] = {
|
||||
{
|
||||
.name = "timb-dma",
|
||||
.num_resources = ARRAY_SIZE(timberdale_dma_resources),
|
||||
|
|
@ -432,7 +432,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg0[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg1[] = {
|
||||
static struct mfd_cell timberdale_cells_bar0_cfg1[] = {
|
||||
{
|
||||
.name = "timb-dma",
|
||||
.num_resources = ARRAY_SIZE(timberdale_dma_resources),
|
||||
|
|
@ -499,7 +499,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg1[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg2[] = {
|
||||
static struct mfd_cell timberdale_cells_bar0_cfg2[] = {
|
||||
{
|
||||
.name = "timb-dma",
|
||||
.num_resources = ARRAY_SIZE(timberdale_dma_resources),
|
||||
|
|
@ -549,7 +549,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg2[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg3[] = {
|
||||
static struct mfd_cell timberdale_cells_bar0_cfg3[] = {
|
||||
{
|
||||
.name = "timb-dma",
|
||||
.num_resources = ARRAY_SIZE(timberdale_dma_resources),
|
||||
|
|
@ -606,7 +606,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg3[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static const __devinitconst struct resource timberdale_sdhc_resources[] = {
|
||||
static const struct resource timberdale_sdhc_resources[] = {
|
||||
/* located in bar 1 and bar 2 */
|
||||
{
|
||||
.start = SDHC0OFFSET,
|
||||
|
|
@ -620,7 +620,7 @@ static const __devinitconst struct resource timberdale_sdhc_resources[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell timberdale_cells_bar1[] = {
|
||||
static struct mfd_cell timberdale_cells_bar1[] = {
|
||||
{
|
||||
.name = "sdhci",
|
||||
.num_resources = ARRAY_SIZE(timberdale_sdhc_resources),
|
||||
|
|
@ -628,7 +628,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar1[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinitdata struct mfd_cell timberdale_cells_bar2[] = {
|
||||
static struct mfd_cell timberdale_cells_bar2[] = {
|
||||
{
|
||||
.name = "sdhci",
|
||||
.num_resources = ARRAY_SIZE(timberdale_sdhc_resources),
|
||||
|
|
@ -650,7 +650,7 @@ static DEVICE_ATTR(fw_ver, S_IRUGO, show_fw_ver, NULL);
|
|||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
static int __devinit timb_probe(struct pci_dev *dev,
|
||||
static int timb_probe(struct pci_dev *dev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
struct timberdale_device *priv;
|
||||
|
|
@ -840,7 +840,7 @@ err_enable:
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
static void __devexit timb_remove(struct pci_dev *dev)
|
||||
static void timb_remove(struct pci_dev *dev)
|
||||
{
|
||||
struct timberdale_device *priv = pci_get_drvdata(dev);
|
||||
|
||||
|
|
@ -867,7 +867,7 @@ static struct pci_driver timberdale_pci_driver = {
|
|||
.name = DRIVER_NAME,
|
||||
.id_table = timberdale_pci_tbl,
|
||||
.probe = timb_probe,
|
||||
.remove = __devexit_p(timb_remove),
|
||||
.remove = timb_remove,
|
||||
};
|
||||
|
||||
static int __init timberdale_init(void)
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ fail:
|
|||
}
|
||||
EXPORT_SYMBOL(tps6105x_mask_and_set);
|
||||
|
||||
static int __devinit tps6105x_startup(struct tps6105x *tps6105x)
|
||||
static int tps6105x_startup(struct tps6105x *tps6105x)
|
||||
{
|
||||
int ret;
|
||||
u8 regval;
|
||||
|
|
@ -133,7 +133,7 @@ static struct mfd_cell tps6105x_cells[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __devinit tps6105x_probe(struct i2c_client *client,
|
||||
static int tps6105x_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct tps6105x *tps6105x;
|
||||
|
|
@ -199,7 +199,7 @@ fail:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit tps6105x_remove(struct i2c_client *client)
|
||||
static int tps6105x_remove(struct i2c_client *client)
|
||||
{
|
||||
struct tps6105x *tps6105x = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -226,7 +226,7 @@ static struct i2c_driver tps6105x_driver = {
|
|||
.name = "tps6105x",
|
||||
},
|
||||
.probe = tps6105x_probe,
|
||||
.remove = __devexit_p(tps6105x_remove),
|
||||
.remove = tps6105x_remove,
|
||||
.id_table = tps6105x_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ static irqreturn_t tps65090_irq(int irq, void *data)
|
|||
return acks ? IRQ_HANDLED : IRQ_NONE;
|
||||
}
|
||||
|
||||
static int __devinit tps65090_irq_init(struct tps65090 *tps65090, int irq,
|
||||
static int tps65090_irq_init(struct tps65090 *tps65090, int irq,
|
||||
int irq_base)
|
||||
{
|
||||
int i, ret;
|
||||
|
|
@ -251,7 +251,7 @@ static const struct regmap_config tps65090_regmap_config = {
|
|||
.volatile_reg = is_volatile_reg,
|
||||
};
|
||||
|
||||
static int __devinit tps65090_i2c_probe(struct i2c_client *client,
|
||||
static int tps65090_i2c_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct tps65090_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -308,7 +308,7 @@ err_exit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit tps65090_i2c_remove(struct i2c_client *client)
|
||||
static int tps65090_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
struct tps65090 *tps65090 = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -354,7 +354,7 @@ static struct i2c_driver tps65090_driver = {
|
|||
.pm = &tps65090_pm_ops,
|
||||
},
|
||||
.probe = tps65090_i2c_probe,
|
||||
.remove = __devexit_p(tps65090_i2c_remove),
|
||||
.remove = tps65090_i2c_remove,
|
||||
.id_table = tps65090_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ static const struct of_device_id tps65217_of_match[] = {
|
|||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
static int __devinit tps65217_probe(struct i2c_client *client,
|
||||
static int tps65217_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *ids)
|
||||
{
|
||||
struct tps65217 *tps;
|
||||
|
|
@ -214,7 +214,7 @@ static int __devinit tps65217_probe(struct i2c_client *client,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devexit tps65217_remove(struct i2c_client *client)
|
||||
static int tps65217_remove(struct i2c_client *client)
|
||||
{
|
||||
struct tps65217 *tps = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -237,7 +237,7 @@ static struct i2c_driver tps65217_driver = {
|
|||
},
|
||||
.id_table = tps65217_id_table,
|
||||
.probe = tps65217_probe,
|
||||
.remove = __devexit_p(tps65217_remove),
|
||||
.remove = tps65217_remove,
|
||||
};
|
||||
|
||||
static int __init tps65217_init(void)
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ static irqreturn_t tps6586x_irq(int irq, void *data)
|
|||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int __devinit tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
|
||||
static int tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
|
||||
int irq_base)
|
||||
{
|
||||
int i, ret;
|
||||
|
|
@ -316,7 +316,7 @@ static int __devinit tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x,
|
||||
static int tps6586x_add_subdevs(struct tps6586x *tps6586x,
|
||||
struct tps6586x_platform_data *pdata)
|
||||
{
|
||||
struct tps6586x_subdev_info *subdev;
|
||||
|
|
@ -468,7 +468,7 @@ static void tps6586x_power_off(void)
|
|||
tps6586x_set_bits(tps6586x_dev, TPS6586X_SUPPLYENE, SLEEP_MODE_BIT);
|
||||
}
|
||||
|
||||
static int __devinit tps6586x_i2c_probe(struct i2c_client *client,
|
||||
static int tps6586x_i2c_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct tps6586x_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -548,7 +548,7 @@ err_mfd_add:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit tps6586x_i2c_remove(struct i2c_client *client)
|
||||
static int tps6586x_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
struct tps6586x *tps6586x = i2c_get_clientdata(client);
|
||||
|
||||
|
|
@ -572,7 +572,7 @@ static struct i2c_driver tps6586x_driver = {
|
|||
.of_match_table = of_match_ptr(tps6586x_of_match),
|
||||
},
|
||||
.probe = tps6586x_i2c_probe,
|
||||
.remove = __devexit_p(tps6586x_i2c_remove),
|
||||
.remove = tps6586x_i2c_remove,
|
||||
.id_table = tps6586x_id_table,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ static const struct regmap_config tps65910_regmap_config = {
|
|||
.cache_type = REGCACHE_RBTREE,
|
||||
};
|
||||
|
||||
static int __devinit tps65910_ck32k_init(struct tps65910 *tps65910,
|
||||
static int tps65910_ck32k_init(struct tps65910 *tps65910,
|
||||
struct tps65910_board *pmic_pdata)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -96,7 +96,7 @@ static int __devinit tps65910_ck32k_init(struct tps65910 *tps65910,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit tps65910_sleepinit(struct tps65910 *tps65910,
|
||||
static int tps65910_sleepinit(struct tps65910 *tps65910,
|
||||
struct tps65910_board *pmic_pdata)
|
||||
{
|
||||
struct device *dev = NULL;
|
||||
|
|
@ -237,7 +237,7 @@ static void tps65910_power_off(void)
|
|||
DEVCTRL_DEV_ON_MASK);
|
||||
}
|
||||
|
||||
static __devinit int tps65910_i2c_probe(struct i2c_client *i2c,
|
||||
static int tps65910_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct tps65910 *tps65910;
|
||||
|
|
@ -302,7 +302,7 @@ static __devinit int tps65910_i2c_probe(struct i2c_client *i2c,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static __devexit int tps65910_i2c_remove(struct i2c_client *i2c)
|
||||
static int tps65910_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct tps65910 *tps65910 = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
@ -327,7 +327,7 @@ static struct i2c_driver tps65910_i2c_driver = {
|
|||
.of_match_table = of_match_ptr(tps65910_of_match),
|
||||
},
|
||||
.probe = tps65910_i2c_probe,
|
||||
.remove = __devexit_p(tps65910_i2c_remove),
|
||||
.remove = tps65910_i2c_remove,
|
||||
.id_table = tps65910_i2c_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ static ssize_t comp_threshold_show(struct device *dev,
|
|||
static DEVICE_ATTR(comp1_threshold, S_IRUGO, comp_threshold_show, NULL);
|
||||
static DEVICE_ATTR(comp2_threshold, S_IRUGO, comp_threshold_show, NULL);
|
||||
|
||||
static __devinit int tps65911_comparator_probe(struct platform_device *pdev)
|
||||
static int tps65911_comparator_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct tps65910 *tps65910 = dev_get_drvdata(pdev->dev.parent);
|
||||
struct tps65910_board *pdata = dev_get_platdata(tps65910->dev);
|
||||
|
|
@ -152,7 +152,7 @@ static __devinit int tps65911_comparator_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static __devexit int tps65911_comparator_remove(struct platform_device *pdev)
|
||||
static int tps65911_comparator_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct tps65910 *tps65910;
|
||||
|
||||
|
|
@ -169,7 +169,7 @@ static struct platform_driver tps65911_comparator_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = tps65911_comparator_probe,
|
||||
.remove = __devexit_p(tps65911_comparator_remove),
|
||||
.remove = tps65911_comparator_remove,
|
||||
};
|
||||
|
||||
static int __init tps65911_comparator_init(void)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ static int tps65912_spi_read(struct tps65912 *tps65912, u8 addr,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devinit tps65912_spi_probe(struct spi_device *spi)
|
||||
static int tps65912_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
struct tps65912 *tps65912;
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ static int __devinit tps65912_spi_probe(struct spi_device *spi)
|
|||
return tps65912_device_init(tps65912);
|
||||
}
|
||||
|
||||
static int __devexit tps65912_spi_remove(struct spi_device *spi)
|
||||
static int tps65912_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
struct tps65912 *tps65912 = spi_get_drvdata(spi);
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ static struct spi_driver tps65912_spi_driver = {
|
|||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = tps65912_spi_probe,
|
||||
.remove = __devexit_p(tps65912_spi_remove),
|
||||
.remove = tps65912_spi_remove,
|
||||
};
|
||||
|
||||
static int __init tps65912_spi_init(void)
|
||||
|
|
|
|||
|
|
@ -671,7 +671,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
|
|||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_PWM_TWL6030) && twl_class_is_6030()) {
|
||||
child = add_child(TWL6030_MODULE_ID1, "twl6030-pwm", NULL, 0,
|
||||
child = add_child(SUB_CHIP_ID1, "twl6030-pwm", NULL, 0,
|
||||
false, 0, 0);
|
||||
if (IS_ERR(child))
|
||||
return PTR_ERR(child);
|
||||
|
|
@ -1170,7 +1170,7 @@ static int twl_remove(struct i2c_client *client)
|
|||
}
|
||||
|
||||
/* NOTE: This driver only handles a single twl4030/tps659x0 chip */
|
||||
static int __devinit
|
||||
static int
|
||||
twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
{
|
||||
struct twl4030_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ static bool twl4030_audio_has_vibra(struct twl4030_audio_data *pdata,
|
|||
return false;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_audio_probe(struct platform_device *pdev)
|
||||
static int twl4030_audio_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct twl4030_audio *audio;
|
||||
struct twl4030_audio_data *pdata = pdev->dev.platform_data;
|
||||
|
|
@ -269,7 +269,7 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit twl4030_audio_remove(struct platform_device *pdev)
|
||||
static int twl4030_audio_remove(struct platform_device *pdev)
|
||||
{
|
||||
mfd_remove_devices(&pdev->dev);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
|
|
@ -291,7 +291,7 @@ static struct platform_driver twl4030_audio_driver = {
|
|||
.of_match_table = twl4030_audio_of_match,
|
||||
},
|
||||
.probe = twl4030_audio_probe,
|
||||
.remove = __devexit_p(twl4030_audio_remove),
|
||||
.remove = twl4030_audio_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(twl4030_audio_driver);
|
||||
|
|
|
|||
|
|
@ -672,7 +672,8 @@ int twl4030_sih_setup(struct device *dev, int module, int irq_base)
|
|||
irq = sih_mod + twl4030_irq_base;
|
||||
irq_set_handler_data(irq, agent);
|
||||
agent->irq_name = kasprintf(GFP_KERNEL, "twl4030_%s", sih->name);
|
||||
status = request_threaded_irq(irq, NULL, handle_twl4030_sih, 0,
|
||||
status = request_threaded_irq(irq, NULL, handle_twl4030_sih,
|
||||
IRQF_EARLY_RESUME,
|
||||
agent->irq_name ?: sih->name, NULL);
|
||||
|
||||
dev_info(dev, "%s (irq %d) chaining IRQs %d..%d\n", sih->name,
|
||||
|
|
|
|||
|
|
@ -692,7 +692,7 @@ static int twl4030_madc_set_power(struct twl4030_madc_data *madc, int on)
|
|||
/*
|
||||
* Initialize MADC and request for threaded irq
|
||||
*/
|
||||
static int __devinit twl4030_madc_probe(struct platform_device *pdev)
|
||||
static int twl4030_madc_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct twl4030_madc_data *madc;
|
||||
struct twl4030_madc_platform_data *pdata = pdev->dev.platform_data;
|
||||
|
|
@ -785,7 +785,7 @@ err_power:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit twl4030_madc_remove(struct platform_device *pdev)
|
||||
static int twl4030_madc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct twl4030_madc_data *madc = platform_get_drvdata(pdev);
|
||||
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ static u8 res_config_addrs[] = {
|
|||
[RES_MAIN_REF] = 0x94,
|
||||
};
|
||||
|
||||
static int __devinit twl4030_write_script_byte(u8 address, u8 byte)
|
||||
static int twl4030_write_script_byte(u8 address, u8 byte)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_write_script_ins(u8 address, u16 pmb_message,
|
||||
static int twl4030_write_script_ins(u8 address, u16 pmb_message,
|
||||
u8 delay, u8 next)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -158,7 +158,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_write_script(u8 address, struct twl4030_ins *script,
|
||||
static int twl4030_write_script(u8 address, struct twl4030_ins *script,
|
||||
int len)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -183,7 +183,7 @@ static int __devinit twl4030_write_script(u8 address, struct twl4030_ins *script
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_config_wakeup3_sequence(u8 address)
|
||||
static int twl4030_config_wakeup3_sequence(u8 address)
|
||||
{
|
||||
int err;
|
||||
u8 data;
|
||||
|
|
@ -208,7 +208,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_config_wakeup12_sequence(u8 address)
|
||||
static int twl4030_config_wakeup12_sequence(u8 address)
|
||||
{
|
||||
int err = 0;
|
||||
u8 data;
|
||||
|
|
@ -262,7 +262,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_config_sleep_sequence(u8 address)
|
||||
static int twl4030_config_sleep_sequence(u8 address)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
|
@ -276,7 +276,7 @@ static int __devinit twl4030_config_sleep_sequence(u8 address)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_config_warmreset_sequence(u8 address)
|
||||
static int twl4030_config_warmreset_sequence(u8 address)
|
||||
{
|
||||
int err;
|
||||
u8 rd_data;
|
||||
|
|
@ -324,7 +324,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int __devinit twl4030_configure_resource(struct twl4030_resconfig *rconfig)
|
||||
static int twl4030_configure_resource(struct twl4030_resconfig *rconfig)
|
||||
{
|
||||
int rconfig_addr;
|
||||
int err;
|
||||
|
|
@ -416,7 +416,7 @@ static int __devinit twl4030_configure_resource(struct twl4030_resconfig *rconfi
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit load_twl4030_script(struct twl4030_script *tscript,
|
||||
static int load_twl4030_script(struct twl4030_script *tscript,
|
||||
u8 address)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -527,7 +527,7 @@ void twl4030_power_off(void)
|
|||
pr_err("TWL4030 Unable to power off\n");
|
||||
}
|
||||
|
||||
void __devinit twl4030_power_init(struct twl4030_power_data *twl4030_scripts)
|
||||
void twl4030_power_init(struct twl4030_power_data *twl4030_scripts)
|
||||
{
|
||||
int err = 0;
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ static struct mfd_cell vx855_cells[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static __devinit int vx855_probe(struct pci_dev *pdev,
|
||||
static int vx855_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -112,7 +112,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __devexit vx855_remove(struct pci_dev *pdev)
|
||||
static void vx855_remove(struct pci_dev *pdev)
|
||||
{
|
||||
mfd_remove_devices(&pdev->dev);
|
||||
pci_disable_device(pdev);
|
||||
|
|
@ -128,7 +128,7 @@ static struct pci_driver vx855_pci_driver = {
|
|||
.name = "vx855",
|
||||
.id_table = vx855_pci_tbl,
|
||||
.probe = vx855_probe,
|
||||
.remove = __devexit_p(vx855_remove),
|
||||
.remove = vx855_remove,
|
||||
};
|
||||
|
||||
module_pci_driver(vx855_pci_driver);
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ static int wl1273_core_remove(struct i2c_client *client)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit wl1273_core_probe(struct i2c_client *client,
|
||||
static int wl1273_core_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct wl1273_fm_platform_data *pdata = client->dev.platform_data;
|
||||
|
|
@ -262,7 +262,7 @@ static struct i2c_driver wl1273_core_driver = {
|
|||
},
|
||||
.probe = wl1273_core_probe,
|
||||
.id_table = wl1273_driver_id_table,
|
||||
.remove = __devexit_p(wl1273_core_remove),
|
||||
.remove = wl1273_core_remove,
|
||||
};
|
||||
|
||||
static int __init wl1273_core_init(void)
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ static const struct reg_default wm5102_reva_patch[] = {
|
|||
{ 0x479, 0x0A30 },
|
||||
{ 0x47B, 0x0810 },
|
||||
{ 0x47D, 0x0510 },
|
||||
{ 0x4D1, 0x017F },
|
||||
{ 0x500, 0x000D },
|
||||
{ 0x507, 0x1820 },
|
||||
{ 0x508, 0x1820 },
|
||||
|
|
@ -52,524 +53,6 @@ static const struct reg_default wm5102_reva_patch[] = {
|
|||
{ 0x580, 0x000D },
|
||||
{ 0x587, 0x1820 },
|
||||
{ 0x588, 0x1820 },
|
||||
{ 0x101, 0x8140 },
|
||||
{ 0x3000, 0x2225 },
|
||||
{ 0x3001, 0x3a03 },
|
||||
{ 0x3002, 0x0225 },
|
||||
{ 0x3003, 0x0801 },
|
||||
{ 0x3004, 0x6249 },
|
||||
{ 0x3005, 0x0c04 },
|
||||
{ 0x3006, 0x0225 },
|
||||
{ 0x3007, 0x5901 },
|
||||
{ 0x3008, 0xe249 },
|
||||
{ 0x3009, 0x030d },
|
||||
{ 0x300a, 0x0249 },
|
||||
{ 0x300b, 0x2c01 },
|
||||
{ 0x300c, 0xe249 },
|
||||
{ 0x300d, 0x4342 },
|
||||
{ 0x300e, 0xe249 },
|
||||
{ 0x300f, 0x73c0 },
|
||||
{ 0x3010, 0x4249 },
|
||||
{ 0x3011, 0x0c00 },
|
||||
{ 0x3012, 0x0225 },
|
||||
{ 0x3013, 0x1f01 },
|
||||
{ 0x3014, 0x0225 },
|
||||
{ 0x3015, 0x1e01 },
|
||||
{ 0x3016, 0x0225 },
|
||||
{ 0x3017, 0xfa00 },
|
||||
{ 0x3018, 0x0000 },
|
||||
{ 0x3019, 0xf000 },
|
||||
{ 0x301a, 0x0000 },
|
||||
{ 0x301b, 0xf000 },
|
||||
{ 0x301c, 0x0000 },
|
||||
{ 0x301d, 0xf000 },
|
||||
{ 0x301e, 0x0000 },
|
||||
{ 0x301f, 0xf000 },
|
||||
{ 0x3020, 0x0000 },
|
||||
{ 0x3021, 0xf000 },
|
||||
{ 0x3022, 0x0000 },
|
||||
{ 0x3023, 0xf000 },
|
||||
{ 0x3024, 0x0000 },
|
||||
{ 0x3025, 0xf000 },
|
||||
{ 0x3026, 0x0000 },
|
||||
{ 0x3027, 0xf000 },
|
||||
{ 0x3028, 0x0000 },
|
||||
{ 0x3029, 0xf000 },
|
||||
{ 0x302a, 0x0000 },
|
||||
{ 0x302b, 0xf000 },
|
||||
{ 0x302c, 0x0000 },
|
||||
{ 0x302d, 0xf000 },
|
||||
{ 0x302e, 0x0000 },
|
||||
{ 0x302f, 0xf000 },
|
||||
{ 0x3030, 0x0225 },
|
||||
{ 0x3031, 0x1a01 },
|
||||
{ 0x3032, 0x0225 },
|
||||
{ 0x3033, 0x1e00 },
|
||||
{ 0x3034, 0x0225 },
|
||||
{ 0x3035, 0x1f00 },
|
||||
{ 0x3036, 0x6225 },
|
||||
{ 0x3037, 0xf800 },
|
||||
{ 0x3038, 0x0000 },
|
||||
{ 0x3039, 0xf000 },
|
||||
{ 0x303a, 0x0000 },
|
||||
{ 0x303b, 0xf000 },
|
||||
{ 0x303c, 0x0000 },
|
||||
{ 0x303d, 0xf000 },
|
||||
{ 0x303e, 0x0000 },
|
||||
{ 0x303f, 0xf000 },
|
||||
{ 0x3040, 0x2226 },
|
||||
{ 0x3041, 0x3a03 },
|
||||
{ 0x3042, 0x0226 },
|
||||
{ 0x3043, 0x0801 },
|
||||
{ 0x3044, 0x6249 },
|
||||
{ 0x3045, 0x0c06 },
|
||||
{ 0x3046, 0x0226 },
|
||||
{ 0x3047, 0x5901 },
|
||||
{ 0x3048, 0xe249 },
|
||||
{ 0x3049, 0x030d },
|
||||
{ 0x304a, 0x0249 },
|
||||
{ 0x304b, 0x2c01 },
|
||||
{ 0x304c, 0xe249 },
|
||||
{ 0x304d, 0x4342 },
|
||||
{ 0x304e, 0xe249 },
|
||||
{ 0x304f, 0x73c0 },
|
||||
{ 0x3050, 0x4249 },
|
||||
{ 0x3051, 0x0c00 },
|
||||
{ 0x3052, 0x0226 },
|
||||
{ 0x3053, 0x1f01 },
|
||||
{ 0x3054, 0x0226 },
|
||||
{ 0x3055, 0x1e01 },
|
||||
{ 0x3056, 0x0226 },
|
||||
{ 0x3057, 0xfa00 },
|
||||
{ 0x3058, 0x0000 },
|
||||
{ 0x3059, 0xf000 },
|
||||
{ 0x305a, 0x0000 },
|
||||
{ 0x305b, 0xf000 },
|
||||
{ 0x305c, 0x0000 },
|
||||
{ 0x305d, 0xf000 },
|
||||
{ 0x305e, 0x0000 },
|
||||
{ 0x305f, 0xf000 },
|
||||
{ 0x3060, 0x0000 },
|
||||
{ 0x3061, 0xf000 },
|
||||
{ 0x3062, 0x0000 },
|
||||
{ 0x3063, 0xf000 },
|
||||
{ 0x3064, 0x0000 },
|
||||
{ 0x3065, 0xf000 },
|
||||
{ 0x3066, 0x0000 },
|
||||
{ 0x3067, 0xf000 },
|
||||
{ 0x3068, 0x0000 },
|
||||
{ 0x3069, 0xf000 },
|
||||
{ 0x306a, 0x0000 },
|
||||
{ 0x306b, 0xf000 },
|
||||
{ 0x306c, 0x0000 },
|
||||
{ 0x306d, 0xf000 },
|
||||
{ 0x306e, 0x0000 },
|
||||
{ 0x306f, 0xf000 },
|
||||
{ 0x3070, 0x0226 },
|
||||
{ 0x3071, 0x1a01 },
|
||||
{ 0x3072, 0x0226 },
|
||||
{ 0x3073, 0x1e00 },
|
||||
{ 0x3074, 0x0226 },
|
||||
{ 0x3075, 0x1f00 },
|
||||
{ 0x3076, 0x6226 },
|
||||
{ 0x3077, 0xf800 },
|
||||
{ 0x3078, 0x0000 },
|
||||
{ 0x3079, 0xf000 },
|
||||
{ 0x307a, 0x0000 },
|
||||
{ 0x307b, 0xf000 },
|
||||
{ 0x307c, 0x0000 },
|
||||
{ 0x307d, 0xf000 },
|
||||
{ 0x307e, 0x0000 },
|
||||
{ 0x307f, 0xf000 },
|
||||
{ 0x3080, 0x2227 },
|
||||
{ 0x3081, 0x3a03 },
|
||||
{ 0x3082, 0x0227 },
|
||||
{ 0x3083, 0x0801 },
|
||||
{ 0x3084, 0x6255 },
|
||||
{ 0x3085, 0x0c04 },
|
||||
{ 0x3086, 0x0227 },
|
||||
{ 0x3087, 0x5901 },
|
||||
{ 0x3088, 0xe255 },
|
||||
{ 0x3089, 0x030d },
|
||||
{ 0x308a, 0x0255 },
|
||||
{ 0x308b, 0x2c01 },
|
||||
{ 0x308c, 0xe255 },
|
||||
{ 0x308d, 0x4342 },
|
||||
{ 0x308e, 0xe255 },
|
||||
{ 0x308f, 0x73c0 },
|
||||
{ 0x3090, 0x4255 },
|
||||
{ 0x3091, 0x0c00 },
|
||||
{ 0x3092, 0x0227 },
|
||||
{ 0x3093, 0x1f01 },
|
||||
{ 0x3094, 0x0227 },
|
||||
{ 0x3095, 0x1e01 },
|
||||
{ 0x3096, 0x0227 },
|
||||
{ 0x3097, 0xfa00 },
|
||||
{ 0x3098, 0x0000 },
|
||||
{ 0x3099, 0xf000 },
|
||||
{ 0x309a, 0x0000 },
|
||||
{ 0x309b, 0xf000 },
|
||||
{ 0x309c, 0x0000 },
|
||||
{ 0x309d, 0xf000 },
|
||||
{ 0x309e, 0x0000 },
|
||||
{ 0x309f, 0xf000 },
|
||||
{ 0x30a0, 0x0000 },
|
||||
{ 0x30a1, 0xf000 },
|
||||
{ 0x30a2, 0x0000 },
|
||||
{ 0x30a3, 0xf000 },
|
||||
{ 0x30a4, 0x0000 },
|
||||
{ 0x30a5, 0xf000 },
|
||||
{ 0x30a6, 0x0000 },
|
||||
{ 0x30a7, 0xf000 },
|
||||
{ 0x30a8, 0x0000 },
|
||||
{ 0x30a9, 0xf000 },
|
||||
{ 0x30aa, 0x0000 },
|
||||
{ 0x30ab, 0xf000 },
|
||||
{ 0x30ac, 0x0000 },
|
||||
{ 0x30ad, 0xf000 },
|
||||
{ 0x30ae, 0x0000 },
|
||||
{ 0x30af, 0xf000 },
|
||||
{ 0x30b0, 0x0227 },
|
||||
{ 0x30b1, 0x1a01 },
|
||||
{ 0x30b2, 0x0227 },
|
||||
{ 0x30b3, 0x1e00 },
|
||||
{ 0x30b4, 0x0227 },
|
||||
{ 0x30b5, 0x1f00 },
|
||||
{ 0x30b6, 0x6227 },
|
||||
{ 0x30b7, 0xf800 },
|
||||
{ 0x30b8, 0x0000 },
|
||||
{ 0x30b9, 0xf000 },
|
||||
{ 0x30ba, 0x0000 },
|
||||
{ 0x30bb, 0xf000 },
|
||||
{ 0x30bc, 0x0000 },
|
||||
{ 0x30bd, 0xf000 },
|
||||
{ 0x30be, 0x0000 },
|
||||
{ 0x30bf, 0xf000 },
|
||||
{ 0x30c0, 0x2228 },
|
||||
{ 0x30c1, 0x3a03 },
|
||||
{ 0x30c2, 0x0228 },
|
||||
{ 0x30c3, 0x0801 },
|
||||
{ 0x30c4, 0x6255 },
|
||||
{ 0x30c5, 0x0c06 },
|
||||
{ 0x30c6, 0x0228 },
|
||||
{ 0x30c7, 0x5901 },
|
||||
{ 0x30c8, 0xe255 },
|
||||
{ 0x30c9, 0x030d },
|
||||
{ 0x30ca, 0x0255 },
|
||||
{ 0x30cb, 0x2c01 },
|
||||
{ 0x30cc, 0xe255 },
|
||||
{ 0x30cd, 0x4342 },
|
||||
{ 0x30ce, 0xe255 },
|
||||
{ 0x30cf, 0x73c0 },
|
||||
{ 0x30d0, 0x4255 },
|
||||
{ 0x30d1, 0x0c00 },
|
||||
{ 0x30d2, 0x0228 },
|
||||
{ 0x30d3, 0x1f01 },
|
||||
{ 0x30d4, 0x0228 },
|
||||
{ 0x30d5, 0x1e01 },
|
||||
{ 0x30d6, 0x0228 },
|
||||
{ 0x30d7, 0xfa00 },
|
||||
{ 0x30d8, 0x0000 },
|
||||
{ 0x30d9, 0xf000 },
|
||||
{ 0x30da, 0x0000 },
|
||||
{ 0x30db, 0xf000 },
|
||||
{ 0x30dc, 0x0000 },
|
||||
{ 0x30dd, 0xf000 },
|
||||
{ 0x30de, 0x0000 },
|
||||
{ 0x30df, 0xf000 },
|
||||
{ 0x30e0, 0x0000 },
|
||||
{ 0x30e1, 0xf000 },
|
||||
{ 0x30e2, 0x0000 },
|
||||
{ 0x30e3, 0xf000 },
|
||||
{ 0x30e4, 0x0000 },
|
||||
{ 0x30e5, 0xf000 },
|
||||
{ 0x30e6, 0x0000 },
|
||||
{ 0x30e7, 0xf000 },
|
||||
{ 0x30e8, 0x0000 },
|
||||
{ 0x30e9, 0xf000 },
|
||||
{ 0x30ea, 0x0000 },
|
||||
{ 0x30eb, 0xf000 },
|
||||
{ 0x30ec, 0x0000 },
|
||||
{ 0x30ed, 0xf000 },
|
||||
{ 0x30ee, 0x0000 },
|
||||
{ 0x30ef, 0xf000 },
|
||||
{ 0x30f0, 0x0228 },
|
||||
{ 0x30f1, 0x1a01 },
|
||||
{ 0x30f2, 0x0228 },
|
||||
{ 0x30f3, 0x1e00 },
|
||||
{ 0x30f4, 0x0228 },
|
||||
{ 0x30f5, 0x1f00 },
|
||||
{ 0x30f6, 0x6228 },
|
||||
{ 0x30f7, 0xf800 },
|
||||
{ 0x30f8, 0x0000 },
|
||||
{ 0x30f9, 0xf000 },
|
||||
{ 0x30fa, 0x0000 },
|
||||
{ 0x30fb, 0xf000 },
|
||||
{ 0x30fc, 0x0000 },
|
||||
{ 0x30fd, 0xf000 },
|
||||
{ 0x30fe, 0x0000 },
|
||||
{ 0x30ff, 0xf000 },
|
||||
{ 0x3100, 0x222b },
|
||||
{ 0x3101, 0x3a03 },
|
||||
{ 0x3102, 0x222b },
|
||||
{ 0x3103, 0x5803 },
|
||||
{ 0x3104, 0xe26f },
|
||||
{ 0x3105, 0x030d },
|
||||
{ 0x3106, 0x626f },
|
||||
{ 0x3107, 0x2c01 },
|
||||
{ 0x3108, 0xe26f },
|
||||
{ 0x3109, 0x4342 },
|
||||
{ 0x310a, 0xe26f },
|
||||
{ 0x310b, 0x73c0 },
|
||||
{ 0x310c, 0x026f },
|
||||
{ 0x310d, 0x0c00 },
|
||||
{ 0x310e, 0x022b },
|
||||
{ 0x310f, 0x1f01 },
|
||||
{ 0x3110, 0x022b },
|
||||
{ 0x3111, 0x1e01 },
|
||||
{ 0x3112, 0x022b },
|
||||
{ 0x3113, 0xfa00 },
|
||||
{ 0x3114, 0x0000 },
|
||||
{ 0x3115, 0xf000 },
|
||||
{ 0x3116, 0x0000 },
|
||||
{ 0x3117, 0xf000 },
|
||||
{ 0x3118, 0x0000 },
|
||||
{ 0x3119, 0xf000 },
|
||||
{ 0x311a, 0x0000 },
|
||||
{ 0x311b, 0xf000 },
|
||||
{ 0x311c, 0x0000 },
|
||||
{ 0x311d, 0xf000 },
|
||||
{ 0x311e, 0x0000 },
|
||||
{ 0x311f, 0xf000 },
|
||||
{ 0x3120, 0x022b },
|
||||
{ 0x3121, 0x0a01 },
|
||||
{ 0x3122, 0x022b },
|
||||
{ 0x3123, 0x1e00 },
|
||||
{ 0x3124, 0x022b },
|
||||
{ 0x3125, 0x1f00 },
|
||||
{ 0x3126, 0x622b },
|
||||
{ 0x3127, 0xf800 },
|
||||
{ 0x3128, 0x0000 },
|
||||
{ 0x3129, 0xf000 },
|
||||
{ 0x312a, 0x0000 },
|
||||
{ 0x312b, 0xf000 },
|
||||
{ 0x312c, 0x0000 },
|
||||
{ 0x312d, 0xf000 },
|
||||
{ 0x312e, 0x0000 },
|
||||
{ 0x312f, 0xf000 },
|
||||
{ 0x3130, 0x0000 },
|
||||
{ 0x3131, 0xf000 },
|
||||
{ 0x3132, 0x0000 },
|
||||
{ 0x3133, 0xf000 },
|
||||
{ 0x3134, 0x0000 },
|
||||
{ 0x3135, 0xf000 },
|
||||
{ 0x3136, 0x0000 },
|
||||
{ 0x3137, 0xf000 },
|
||||
{ 0x3138, 0x0000 },
|
||||
{ 0x3139, 0xf000 },
|
||||
{ 0x313a, 0x0000 },
|
||||
{ 0x313b, 0xf000 },
|
||||
{ 0x313c, 0x0000 },
|
||||
{ 0x313d, 0xf000 },
|
||||
{ 0x313e, 0x0000 },
|
||||
{ 0x313f, 0xf000 },
|
||||
{ 0x3140, 0x0000 },
|
||||
{ 0x3141, 0xf000 },
|
||||
{ 0x3142, 0x0000 },
|
||||
{ 0x3143, 0xf000 },
|
||||
{ 0x3144, 0x0000 },
|
||||
{ 0x3145, 0xf000 },
|
||||
{ 0x3146, 0x0000 },
|
||||
{ 0x3147, 0xf000 },
|
||||
{ 0x3148, 0x0000 },
|
||||
{ 0x3149, 0xf000 },
|
||||
{ 0x314a, 0x0000 },
|
||||
{ 0x314b, 0xf000 },
|
||||
{ 0x314c, 0x0000 },
|
||||
{ 0x314d, 0xf000 },
|
||||
{ 0x314e, 0x0000 },
|
||||
{ 0x314f, 0xf000 },
|
||||
{ 0x3150, 0x0000 },
|
||||
{ 0x3151, 0xf000 },
|
||||
{ 0x3152, 0x0000 },
|
||||
{ 0x3153, 0xf000 },
|
||||
{ 0x3154, 0x0000 },
|
||||
{ 0x3155, 0xf000 },
|
||||
{ 0x3156, 0x0000 },
|
||||
{ 0x3157, 0xf000 },
|
||||
{ 0x3158, 0x0000 },
|
||||
{ 0x3159, 0xf000 },
|
||||
{ 0x315a, 0x0000 },
|
||||
{ 0x315b, 0xf000 },
|
||||
{ 0x315c, 0x0000 },
|
||||
{ 0x315d, 0xf000 },
|
||||
{ 0x315e, 0x0000 },
|
||||
{ 0x315f, 0xf000 },
|
||||
{ 0x3160, 0x0000 },
|
||||
{ 0x3161, 0xf000 },
|
||||
{ 0x3162, 0x0000 },
|
||||
{ 0x3163, 0xf000 },
|
||||
{ 0x3164, 0x0000 },
|
||||
{ 0x3165, 0xf000 },
|
||||
{ 0x3166, 0x0000 },
|
||||
{ 0x3167, 0xf000 },
|
||||
{ 0x3168, 0x0000 },
|
||||
{ 0x3169, 0xf000 },
|
||||
{ 0x316a, 0x0000 },
|
||||
{ 0x316b, 0xf000 },
|
||||
{ 0x316c, 0x0000 },
|
||||
{ 0x316d, 0xf000 },
|
||||
{ 0x316e, 0x0000 },
|
||||
{ 0x316f, 0xf000 },
|
||||
{ 0x3170, 0x0000 },
|
||||
{ 0x3171, 0xf000 },
|
||||
{ 0x3172, 0x0000 },
|
||||
{ 0x3173, 0xf000 },
|
||||
{ 0x3174, 0x0000 },
|
||||
{ 0x3175, 0xf000 },
|
||||
{ 0x3176, 0x0000 },
|
||||
{ 0x3177, 0xf000 },
|
||||
{ 0x3178, 0x0000 },
|
||||
{ 0x3179, 0xf000 },
|
||||
{ 0x317a, 0x0000 },
|
||||
{ 0x317b, 0xf000 },
|
||||
{ 0x317c, 0x0000 },
|
||||
{ 0x317d, 0xf000 },
|
||||
{ 0x317e, 0x0000 },
|
||||
{ 0x317f, 0xf000 },
|
||||
{ 0x3180, 0x2001 },
|
||||
{ 0x3181, 0xf101 },
|
||||
{ 0x3182, 0x0000 },
|
||||
{ 0x3183, 0xf000 },
|
||||
{ 0x3184, 0x0000 },
|
||||
{ 0x3185, 0xf000 },
|
||||
{ 0x3186, 0x0000 },
|
||||
{ 0x3187, 0xf000 },
|
||||
{ 0x3188, 0x0000 },
|
||||
{ 0x3189, 0xf000 },
|
||||
{ 0x318a, 0x0000 },
|
||||
{ 0x318b, 0xf000 },
|
||||
{ 0x318c, 0x0000 },
|
||||
{ 0x318d, 0xf000 },
|
||||
{ 0x318e, 0x0000 },
|
||||
{ 0x318f, 0xf000 },
|
||||
{ 0x3190, 0x0000 },
|
||||
{ 0x3191, 0xf000 },
|
||||
{ 0x3192, 0x0000 },
|
||||
{ 0x3193, 0xf000 },
|
||||
{ 0x3194, 0x0000 },
|
||||
{ 0x3195, 0xf000 },
|
||||
{ 0x3196, 0x0000 },
|
||||
{ 0x3197, 0xf000 },
|
||||
{ 0x3198, 0x0000 },
|
||||
{ 0x3199, 0xf000 },
|
||||
{ 0x319a, 0x0000 },
|
||||
{ 0x319b, 0xf000 },
|
||||
{ 0x319c, 0x0000 },
|
||||
{ 0x319d, 0xf000 },
|
||||
{ 0x319e, 0x0000 },
|
||||
{ 0x319f, 0xf000 },
|
||||
{ 0x31a0, 0x0000 },
|
||||
{ 0x31a1, 0xf000 },
|
||||
{ 0x31a2, 0x0000 },
|
||||
{ 0x31a3, 0xf000 },
|
||||
{ 0x31a4, 0x0000 },
|
||||
{ 0x31a5, 0xf000 },
|
||||
{ 0x31a6, 0x0000 },
|
||||
{ 0x31a7, 0xf000 },
|
||||
{ 0x31a8, 0x0000 },
|
||||
{ 0x31a9, 0xf000 },
|
||||
{ 0x31aa, 0x0000 },
|
||||
{ 0x31ab, 0xf000 },
|
||||
{ 0x31ac, 0x0000 },
|
||||
{ 0x31ad, 0xf000 },
|
||||
{ 0x31ae, 0x0000 },
|
||||
{ 0x31af, 0xf000 },
|
||||
{ 0x31b0, 0x0000 },
|
||||
{ 0x31b1, 0xf000 },
|
||||
{ 0x31b2, 0x0000 },
|
||||
{ 0x31b3, 0xf000 },
|
||||
{ 0x31b4, 0x0000 },
|
||||
{ 0x31b5, 0xf000 },
|
||||
{ 0x31b6, 0x0000 },
|
||||
{ 0x31b7, 0xf000 },
|
||||
{ 0x31b8, 0x0000 },
|
||||
{ 0x31b9, 0xf000 },
|
||||
{ 0x31ba, 0x0000 },
|
||||
{ 0x31bb, 0xf000 },
|
||||
{ 0x31bc, 0x0000 },
|
||||
{ 0x31bd, 0xf000 },
|
||||
{ 0x31be, 0x0000 },
|
||||
{ 0x31bf, 0xf000 },
|
||||
{ 0x31c0, 0x0000 },
|
||||
{ 0x31c1, 0xf000 },
|
||||
{ 0x31c2, 0x0000 },
|
||||
{ 0x31c3, 0xf000 },
|
||||
{ 0x31c4, 0x0000 },
|
||||
{ 0x31c5, 0xf000 },
|
||||
{ 0x31c6, 0x0000 },
|
||||
{ 0x31c7, 0xf000 },
|
||||
{ 0x31c8, 0x0000 },
|
||||
{ 0x31c9, 0xf000 },
|
||||
{ 0x31ca, 0x0000 },
|
||||
{ 0x31cb, 0xf000 },
|
||||
{ 0x31cc, 0x0000 },
|
||||
{ 0x31cd, 0xf000 },
|
||||
{ 0x31ce, 0x0000 },
|
||||
{ 0x31cf, 0xf000 },
|
||||
{ 0x31d0, 0x0000 },
|
||||
{ 0x31d1, 0xf000 },
|
||||
{ 0x31d2, 0x0000 },
|
||||
{ 0x31d3, 0xf000 },
|
||||
{ 0x31d4, 0x0000 },
|
||||
{ 0x31d5, 0xf000 },
|
||||
{ 0x31d6, 0x0000 },
|
||||
{ 0x31d7, 0xf000 },
|
||||
{ 0x31d8, 0x0000 },
|
||||
{ 0x31d9, 0xf000 },
|
||||
{ 0x31da, 0x0000 },
|
||||
{ 0x31db, 0xf000 },
|
||||
{ 0x31dc, 0x0000 },
|
||||
{ 0x31dd, 0xf000 },
|
||||
{ 0x31de, 0x0000 },
|
||||
{ 0x31df, 0xf000 },
|
||||
{ 0x31e0, 0x0000 },
|
||||
{ 0x31e1, 0xf000 },
|
||||
{ 0x31e2, 0x0000 },
|
||||
{ 0x31e3, 0xf000 },
|
||||
{ 0x31e4, 0x0000 },
|
||||
{ 0x31e5, 0xf000 },
|
||||
{ 0x31e6, 0x0000 },
|
||||
{ 0x31e7, 0xf000 },
|
||||
{ 0x31e8, 0x0000 },
|
||||
{ 0x31e9, 0xf000 },
|
||||
{ 0x31ea, 0x0000 },
|
||||
{ 0x31eb, 0xf000 },
|
||||
{ 0x31ec, 0x0000 },
|
||||
{ 0x31ed, 0xf000 },
|
||||
{ 0x31ee, 0x0000 },
|
||||
{ 0x31ef, 0xf000 },
|
||||
{ 0x31f0, 0x0000 },
|
||||
{ 0x31f1, 0xf000 },
|
||||
{ 0x31f2, 0x0000 },
|
||||
{ 0x31f3, 0xf000 },
|
||||
{ 0x31f4, 0x0000 },
|
||||
{ 0x31f5, 0xf000 },
|
||||
{ 0x31f6, 0x0000 },
|
||||
{ 0x31f7, 0xf000 },
|
||||
{ 0x31f8, 0x0000 },
|
||||
{ 0x31f9, 0xf000 },
|
||||
{ 0x31fa, 0x0000 },
|
||||
{ 0x31fb, 0xf000 },
|
||||
{ 0x31fc, 0x0000 },
|
||||
{ 0x31fd, 0xf000 },
|
||||
{ 0x31fe, 0x0000 },
|
||||
{ 0x31ff, 0xf000 },
|
||||
{ 0x024d, 0xff50 },
|
||||
{ 0x0252, 0xff50 },
|
||||
{ 0x0259, 0x0112 },
|
||||
{ 0x025e, 0x0112 },
|
||||
{ 0x101, 0x0304 },
|
||||
{ 0x80, 0x0000 },
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include <linux/mfd/wm831x/core.h>
|
||||
|
||||
static int __devinit wm831x_spi_probe(struct spi_device *spi)
|
||||
static int wm831x_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
const struct spi_device_id *id = spi_get_device_id(spi);
|
||||
struct wm831x *wm831x;
|
||||
|
|
@ -51,7 +51,7 @@ static int __devinit wm831x_spi_probe(struct spi_device *spi)
|
|||
return wm831x_device_init(wm831x, type, spi->irq);
|
||||
}
|
||||
|
||||
static int __devexit wm831x_spi_remove(struct spi_device *spi)
|
||||
static int wm831x_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
struct wm831x *wm831x = dev_get_drvdata(&spi->dev);
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ static struct spi_driver wm831x_spi_driver = {
|
|||
},
|
||||
.id_table = wm831x_spi_ids,
|
||||
.probe = wm831x_spi_probe,
|
||||
.remove = __devexit_p(wm831x_spi_remove),
|
||||
.remove = wm831x_spi_remove,
|
||||
.shutdown = wm831x_spi_shutdown,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -374,21 +374,21 @@ static int wm8994_ldo_in_use(struct wm8994_pdata *pdata, int ldo)
|
|||
}
|
||||
#endif
|
||||
|
||||
static const __devinitconst struct reg_default wm8994_revc_patch[] = {
|
||||
static const struct reg_default wm8994_revc_patch[] = {
|
||||
{ 0x102, 0x3 },
|
||||
{ 0x56, 0x3 },
|
||||
{ 0x817, 0x0 },
|
||||
{ 0x102, 0x0 },
|
||||
};
|
||||
|
||||
static const __devinitconst struct reg_default wm8958_reva_patch[] = {
|
||||
static const struct reg_default wm8958_reva_patch[] = {
|
||||
{ 0x102, 0x3 },
|
||||
{ 0xcb, 0x81 },
|
||||
{ 0x817, 0x0 },
|
||||
{ 0x102, 0x0 },
|
||||
};
|
||||
|
||||
static const __devinitconst struct reg_default wm1811_reva_patch[] = {
|
||||
static const struct reg_default wm1811_reva_patch[] = {
|
||||
{ 0x102, 0x3 },
|
||||
{ 0x56, 0xc07 },
|
||||
{ 0x5d, 0x7e },
|
||||
|
|
@ -399,7 +399,7 @@ static const __devinitconst struct reg_default wm1811_reva_patch[] = {
|
|||
/*
|
||||
* Instantiate the generic non-control parts of the device.
|
||||
*/
|
||||
static __devinit int wm8994_device_init(struct wm8994 *wm8994, int irq)
|
||||
static int wm8994_device_init(struct wm8994 *wm8994, int irq)
|
||||
{
|
||||
struct wm8994_pdata *pdata = wm8994->dev->platform_data;
|
||||
struct regmap_config *regmap_config;
|
||||
|
|
@ -671,7 +671,7 @@ err:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static __devexit void wm8994_device_exit(struct wm8994 *wm8994)
|
||||
static void wm8994_device_exit(struct wm8994 *wm8994)
|
||||
{
|
||||
pm_runtime_disable(wm8994->dev);
|
||||
mfd_remove_devices(wm8994->dev);
|
||||
|
|
@ -689,7 +689,7 @@ static const struct of_device_id wm8994_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, wm8994_of_match);
|
||||
|
||||
static __devinit int wm8994_i2c_probe(struct i2c_client *i2c,
|
||||
static int wm8994_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct wm8994 *wm8994;
|
||||
|
|
@ -715,7 +715,7 @@ static __devinit int wm8994_i2c_probe(struct i2c_client *i2c,
|
|||
return wm8994_device_init(wm8994, i2c->irq);
|
||||
}
|
||||
|
||||
static __devexit int wm8994_i2c_remove(struct i2c_client *i2c)
|
||||
static int wm8994_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct wm8994 *wm8994 = i2c_get_clientdata(i2c);
|
||||
|
||||
|
|
@ -744,7 +744,7 @@ static struct i2c_driver wm8994_i2c_driver = {
|
|||
.of_match_table = wm8994_of_match,
|
||||
},
|
||||
.probe = wm8994_i2c_probe,
|
||||
.remove = __devexit_p(wm8994_i2c_remove),
|
||||
.remove = wm8994_i2c_remove,
|
||||
.id_table = wm8994_i2c_id,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue