|
@@ -2534,10 +2534,15 @@ static int __devexit ab8500_charger_remove(struct platform_device *pdev)
|
|
|
static int __devinit ab8500_charger_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
int irq, i, charger_status, ret = 0;
|
|
|
- struct abx500_bm_plat_data *plat_data;
|
|
|
+ struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data;
|
|
|
+ struct ab8500_charger *di;
|
|
|
|
|
|
- struct ab8500_charger *di =
|
|
|
- kzalloc(sizeof(struct ab8500_charger), GFP_KERNEL);
|
|
|
+ if (!plat_data) {
|
|
|
+ dev_err(&pdev->dev, "No platform data\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ di = kzalloc(sizeof(*di), GFP_KERNEL);
|
|
|
if (!di)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -2550,13 +2555,12 @@ static int __devinit ab8500_charger_probe(struct platform_device *pdev)
|
|
|
spin_lock_init(&di->usb_state.usb_lock);
|
|
|
|
|
|
/* get charger specific platform data */
|
|
|
- plat_data = pdev->dev.platform_data;
|
|
|
- if (!plat_data || !plat_data->charger) {
|
|
|
+ di->pdata = plat_data->charger;
|
|
|
+ if (!di->pdata) {
|
|
|
dev_err(di->dev, "no charger platform data supplied\n");
|
|
|
ret = -EINVAL;
|
|
|
goto free_device_info;
|
|
|
}
|
|
|
- di->pdata = plat_data->charger;
|
|
|
|
|
|
/* get battery specific platform data */
|
|
|
di->bat = plat_data->battery;
|