diff options
Diffstat (limited to 'drivers/mfd/ab8500-core.c')
| -rw-r--r-- | drivers/mfd/ab8500-core.c | 45 | 
1 files changed, 23 insertions, 22 deletions
diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c index b6c2cdc7609..cf2e6a198c6 100644 --- a/drivers/mfd/ab8500-core.c +++ b/drivers/mfd/ab8500-core.c @@ -491,7 +491,7 @@ static int ab8500_handle_hierarchical_line(struct ab8500 *ab8500,  		if (line == AB8540_INT_GPIO43F || line == AB8540_INT_GPIO44F)  			line += 1; -		handle_nested_irq(ab8500->irq_base + line); +		handle_nested_irq(irq_create_mapping(ab8500->domain, line));  	}  	return 0; @@ -591,8 +591,8 @@ static int ab8500_irq_init(struct ab8500 *ab8500, struct device_node *np)  		num_irqs = AB8500_NR_IRQS;  	/* If ->irq_base is zero this will give a linear mapping */ -	ab8500->domain = irq_domain_add_simple(NULL, -			num_irqs, ab8500->irq_base, +	ab8500->domain = irq_domain_add_simple(ab8500->dev->of_node, +			num_irqs, 0,  			&ab8500_irq_ops, ab8500);  	if (!ab8500->domain) { @@ -1017,7 +1017,7 @@ static struct resource ab8500_temp_resources[] = {  	},  }; -static struct mfd_cell ab8500_bm_devs[] = { +static const struct mfd_cell ab8500_bm_devs[] = {  	{  		.name = "ab8500-charger",  		.of_compatible = "stericsson,ab8500-charger", @@ -1052,7 +1052,7 @@ static struct mfd_cell ab8500_bm_devs[] = {  	},  }; -static struct mfd_cell ab8500_devs[] = { +static const struct mfd_cell ab8500_devs[] = {  #ifdef CONFIG_DEBUG_FS  	{  		.name = "ab8500-debug", @@ -1143,7 +1143,7 @@ static struct mfd_cell ab8500_devs[] = {  	},  }; -static struct mfd_cell ab9540_devs[] = { +static const struct mfd_cell ab9540_devs[] = {  #ifdef CONFIG_DEBUG_FS  	{  		.name = "ab8500-debug", @@ -1214,7 +1214,7 @@ static struct mfd_cell ab9540_devs[] = {  };  /* Device list for ab8505  */ -static struct mfd_cell ab8505_devs[] = { +static const struct mfd_cell ab8505_devs[] = {  #ifdef CONFIG_DEBUG_FS  	{  		.name = "ab8500-debug", @@ -1275,7 +1275,7 @@ static struct mfd_cell ab8505_devs[] = {  	},  }; -static struct mfd_cell ab8540_devs[] = { +static const struct mfd_cell ab8540_devs[] = {  #ifdef CONFIG_DEBUG_FS  	{  		.name = "ab8500-debug", @@ -1339,7 +1339,7 @@ static struct mfd_cell ab8540_devs[] = {  	},  }; -static struct mfd_cell ab8540_cut1_devs[] = { +static const struct mfd_cell ab8540_cut1_devs[] = {  	{  		.name = "ab8500-rtc",  		.of_compatible = "stericsson,ab8500-rtc", @@ -1348,7 +1348,7 @@ static struct mfd_cell ab8540_cut1_devs[] = {  	},  }; -static struct mfd_cell ab8540_cut2_devs[] = { +static const struct mfd_cell ab8540_cut2_devs[] = {  	{  		.name = "ab8540-rtc",  		.of_compatible = "stericsson,ab8540-rtc", @@ -1583,14 +1583,13 @@ static int ab8500_probe(struct platform_device *pdev)  	if (!ab8500)  		return -ENOMEM; -	if (plat) -		ab8500->irq_base = plat->irq_base; -  	ab8500->dev = &pdev->dev;  	resource = platform_get_resource(pdev, IORESOURCE_IRQ, 0); -	if (!resource) +	if (!resource) { +		dev_err(&pdev->dev, "no IRQ resource\n");  		return -ENODEV; +	}  	ab8500->irq = resource->start; @@ -1612,8 +1611,10 @@ static int ab8500_probe(struct platform_device *pdev)  	else {  		ret = get_register_interruptible(ab8500, AB8500_MISC,  			AB8500_IC_NAME_REG, &value); -		if (ret < 0) +		if (ret < 0) { +			dev_err(&pdev->dev, "could not probe HW\n");  			return ret; +		}  		ab8500->version = value;  	} @@ -1759,30 +1760,30 @@ static int ab8500_probe(struct platform_device *pdev)  	if (is_ab9540(ab8500))  		ret = mfd_add_devices(ab8500->dev, 0, ab9540_devs,  				ARRAY_SIZE(ab9540_devs), NULL, -				ab8500->irq_base, ab8500->domain); +				0, ab8500->domain);  	else if (is_ab8540(ab8500)) {  		ret = mfd_add_devices(ab8500->dev, 0, ab8540_devs,  			      ARRAY_SIZE(ab8540_devs), NULL, -			      ab8500->irq_base, NULL); +			      0, ab8500->domain);  		if (ret)  			return ret;  		if (is_ab8540_1p2_or_earlier(ab8500))  			ret = mfd_add_devices(ab8500->dev, 0, ab8540_cut1_devs,  			      ARRAY_SIZE(ab8540_cut1_devs), NULL, -			      ab8500->irq_base, NULL); +			      0, ab8500->domain);  		else /* ab8540 >= cut2 */  			ret = mfd_add_devices(ab8500->dev, 0, ab8540_cut2_devs,  			      ARRAY_SIZE(ab8540_cut2_devs), NULL, -			      ab8500->irq_base, NULL); +			      0, ab8500->domain);  	} else if (is_ab8505(ab8500))  		ret = mfd_add_devices(ab8500->dev, 0, ab8505_devs,  			      ARRAY_SIZE(ab8505_devs), NULL, -			      ab8500->irq_base, ab8500->domain); +			      0, ab8500->domain);  	else  		ret = mfd_add_devices(ab8500->dev, 0, ab8500_devs,  				ARRAY_SIZE(ab8500_devs), NULL, -				ab8500->irq_base, ab8500->domain); +				0, ab8500->domain);  	if (ret)  		return ret; @@ -1790,7 +1791,7 @@ static int ab8500_probe(struct platform_device *pdev)  		/* Add battery management devices */  		ret = mfd_add_devices(ab8500->dev, 0, ab8500_bm_devs,  				      ARRAY_SIZE(ab8500_bm_devs), NULL, -				      ab8500->irq_base, ab8500->domain); +				      0, ab8500->domain);  		if (ret)  			dev_err(ab8500->dev, "error adding bm devices\n");  	}  | 
