[PATCH] pxa/hx4700: Set DS1WM clock_rate

Paul Parsons lost.distance at yahoo.com
Tue Aug 9 12:23:27 EDT 2011


The mfd/asic3 driver did not set the ds1wm_driver_data.clock_rate field before
passing the structure to the ds1wm cell driver. By chance, ds1wm_find_divisor()
returned the correct divisor when this zero clock_rate was passed in. However
a recent change to ds1wm_find_divisor() removed this unintended behaviour. This
patch explicitly sets the ds1wm_driver_data.clock_rate field.

Signed-off-by: Paul Parsons <lost.distance at yahoo.com>
---

diff -uprN clean-3.0.1/arch/arm/mach-pxa/hx4700.c linux-3.0.1/arch/arm/mach-pxa/hx4700.c
--- clean-3.0.1/arch/arm/mach-pxa/hx4700.c	2011-08-05 05:59:21.000000000 +0100
+++ linux-3.0.1/arch/arm/mach-pxa/hx4700.c	2011-08-07 23:02:18.653447085 +0100
@@ -310,6 +310,7 @@ static struct asic3_platform_data asic3_
 	.gpio_config_num = ARRAY_SIZE(asic3_gpio_config),
 	.irq_base        = IRQ_BOARD_START,
 	.gpio_base       = HX4700_ASIC3_GPIO_BASE,
+	.clock_rate      = 4000000,
 };
 
 static struct platform_device asic3 = {
diff -uprN clean-3.0.1/drivers/mfd/asic3.c linux-3.0.1/drivers/mfd/asic3.c
--- clean-3.0.1/drivers/mfd/asic3.c	2011-08-05 05:59:21.000000000 +0100
+++ linux-3.0.1/drivers/mfd/asic3.c	2011-08-07 23:02:18.653447085 +0100
@@ -867,10 +867,13 @@ static int __init asic3_mfd_probe(struct
 	asic3_mmc_resources[0].start >>= asic->bus_shift;
 	asic3_mmc_resources[0].end   >>= asic->bus_shift;
 
-	ret = mfd_add_devices(&pdev->dev, pdev->id,
+	if (pdata->clock_rate) {
+		ds1wm_pdata.clock_rate = pdata->clock_rate;
+		ret = mfd_add_devices(&pdev->dev, pdev->id,
 			&asic3_cell_ds1wm, 1, mem, asic->irq_base);
-	if (ret < 0)
-		goto out;
+		if (ret < 0)
+			goto out;
+	}
 
 	if (mem_sdio && (irq >= 0)) {
 		ret = mfd_add_devices(&pdev->dev, pdev->id,
diff -uprN clean-3.0.1/include/linux/mfd/asic3.h linux-3.0.1/include/linux/mfd/asic3.h
--- clean-3.0.1/include/linux/mfd/asic3.h	2011-08-05 05:59:21.000000000 +0100
+++ linux-3.0.1/include/linux/mfd/asic3.h	2011-08-07 23:02:18.653447085 +0100
@@ -31,6 +31,8 @@ struct asic3_platform_data {
 
 	unsigned int gpio_base;
 
+	unsigned int clock_rate;
+
 	struct asic3_led *leds;
 };
 




More information about the linux-arm-kernel mailing list