diff options
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/pcf50633-core.c | 2 | ||||
-rw-r--r-- | drivers/mfd/t7l66xb.c | 5 | ||||
-rw-r--r-- | drivers/mfd/tc6387xb.c | 5 | ||||
-rw-r--r-- | drivers/mfd/tc6393xb.c | 5 | ||||
-rw-r--r-- | drivers/mfd/wm8350-core.c | 8 |
5 files changed, 16 insertions, 9 deletions
diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c index 7793932a513..11a6248cc1c 100644 --- a/drivers/mfd/pcf50633-core.c +++ b/drivers/mfd/pcf50633-core.c | |||
@@ -443,7 +443,7 @@ static irqreturn_t pcf50633_irq(int irq, void *data) | |||
443 | dev_dbg(pcf->dev, "pcf50633_irq\n"); | 443 | dev_dbg(pcf->dev, "pcf50633_irq\n"); |
444 | 444 | ||
445 | get_device(pcf->dev); | 445 | get_device(pcf->dev); |
446 | disable_irq(pcf->irq); | 446 | disable_irq_nosync(pcf->irq); |
447 | schedule_work(&pcf->irq_work); | 447 | schedule_work(&pcf->irq_work); |
448 | 448 | ||
449 | return IRQ_HANDLED; | 449 | return IRQ_HANDLED; |
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c index e9f4323dd2c..875f7a87573 100644 --- a/drivers/mfd/t7l66xb.c +++ b/drivers/mfd/t7l66xb.c | |||
@@ -108,6 +108,10 @@ static int t7l66xb_mmc_disable(struct platform_device *mmc) | |||
108 | 108 | ||
109 | /*--------------------------------------------------------------------------*/ | 109 | /*--------------------------------------------------------------------------*/ |
110 | 110 | ||
111 | static const struct tmio_mmc_data t7166xb_mmc_data = { | ||
112 | .hclk = 24000000, | ||
113 | }; | ||
114 | |||
111 | static const struct resource t7l66xb_mmc_resources[] = { | 115 | static const struct resource t7l66xb_mmc_resources[] = { |
112 | { | 116 | { |
113 | .start = 0x800, | 117 | .start = 0x800, |
@@ -149,6 +153,7 @@ static struct mfd_cell t7l66xb_cells[] = { | |||
149 | .name = "tmio-mmc", | 153 | .name = "tmio-mmc", |
150 | .enable = t7l66xb_mmc_enable, | 154 | .enable = t7l66xb_mmc_enable, |
151 | .disable = t7l66xb_mmc_disable, | 155 | .disable = t7l66xb_mmc_disable, |
156 | .driver_data = &t7166xb_mmc_data, | ||
152 | .num_resources = ARRAY_SIZE(t7l66xb_mmc_resources), | 157 | .num_resources = ARRAY_SIZE(t7l66xb_mmc_resources), |
153 | .resources = t7l66xb_mmc_resources, | 158 | .resources = t7l66xb_mmc_resources, |
154 | }, | 159 | }, |
diff --git a/drivers/mfd/tc6387xb.c b/drivers/mfd/tc6387xb.c index 43222c12fec..c3993ac2054 100644 --- a/drivers/mfd/tc6387xb.c +++ b/drivers/mfd/tc6387xb.c | |||
@@ -75,6 +75,10 @@ static int tc6387xb_mmc_disable(struct platform_device *mmc) | |||
75 | 75 | ||
76 | /*--------------------------------------------------------------------------*/ | 76 | /*--------------------------------------------------------------------------*/ |
77 | 77 | ||
78 | const static struct tmio_mmc_data tc6387xb_mmc_data = { | ||
79 | .hclk = 24000000, | ||
80 | }; | ||
81 | |||
78 | static struct resource tc6387xb_mmc_resources[] = { | 82 | static struct resource tc6387xb_mmc_resources[] = { |
79 | { | 83 | { |
80 | .start = 0x800, | 84 | .start = 0x800, |
@@ -98,6 +102,7 @@ static struct mfd_cell tc6387xb_cells[] = { | |||
98 | .name = "tmio-mmc", | 102 | .name = "tmio-mmc", |
99 | .enable = tc6387xb_mmc_enable, | 103 | .enable = tc6387xb_mmc_enable, |
100 | .disable = tc6387xb_mmc_disable, | 104 | .disable = tc6387xb_mmc_disable, |
105 | .driver_data = &tc6387xb_mmc_data, | ||
101 | .num_resources = ARRAY_SIZE(tc6387xb_mmc_resources), | 106 | .num_resources = ARRAY_SIZE(tc6387xb_mmc_resources), |
102 | .resources = tc6387xb_mmc_resources, | 107 | .resources = tc6387xb_mmc_resources, |
103 | }, | 108 | }, |
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c index 77a12fc8045..9d2abb5d6e2 100644 --- a/drivers/mfd/tc6393xb.c +++ b/drivers/mfd/tc6393xb.c | |||
@@ -136,6 +136,10 @@ static int tc6393xb_nand_enable(struct platform_device *nand) | |||
136 | return 0; | 136 | return 0; |
137 | } | 137 | } |
138 | 138 | ||
139 | const static struct tmio_mmc_data tc6393xb_mmc_data = { | ||
140 | .hclk = 24000000, | ||
141 | }; | ||
142 | |||
139 | static struct resource __devinitdata tc6393xb_nand_resources[] = { | 143 | static struct resource __devinitdata tc6393xb_nand_resources[] = { |
140 | { | 144 | { |
141 | .start = 0x1000, | 145 | .start = 0x1000, |
@@ -351,6 +355,7 @@ static struct mfd_cell __devinitdata tc6393xb_cells[] = { | |||
351 | }, | 355 | }, |
352 | [TC6393XB_CELL_MMC] = { | 356 | [TC6393XB_CELL_MMC] = { |
353 | .name = "tmio-mmc", | 357 | .name = "tmio-mmc", |
358 | .driver_data = &tc6393xb_mmc_data, | ||
354 | .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources), | 359 | .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources), |
355 | .resources = tc6393xb_mmc_resources, | 360 | .resources = tc6393xb_mmc_resources, |
356 | }, | 361 | }, |
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index c2be3088e2e..fe24079387c 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
@@ -79,10 +79,6 @@ static int wm8350_phys_read(struct wm8350 *wm8350, u8 reg, int num_regs, | |||
79 | /* Cache is CPU endian */ | 79 | /* Cache is CPU endian */ |
80 | dest[i - reg] = be16_to_cpu(dest[i - reg]); | 80 | dest[i - reg] = be16_to_cpu(dest[i - reg]); |
81 | 81 | ||
82 | /* Satisfy non-volatile bits from cache */ | ||
83 | dest[i - reg] &= wm8350_reg_io_map[i].vol; | ||
84 | dest[i - reg] |= wm8350->reg_cache[i]; | ||
85 | |||
86 | /* Mask out non-readable bits */ | 82 | /* Mask out non-readable bits */ |
87 | dest[i - reg] &= wm8350_reg_io_map[i].readable; | 83 | dest[i - reg] &= wm8350_reg_io_map[i].readable; |
88 | } | 84 | } |
@@ -182,9 +178,6 @@ static int wm8350_write(struct wm8350 *wm8350, u8 reg, int num_regs, u16 *src) | |||
182 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) | 178 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) |
183 | | src[i - reg]; | 179 | | src[i - reg]; |
184 | 180 | ||
185 | /* Don't store volatile bits */ | ||
186 | wm8350->reg_cache[i] &= ~wm8350_reg_io_map[i].vol; | ||
187 | |||
188 | src[i - reg] = cpu_to_be16(src[i - reg]); | 181 | src[i - reg] = cpu_to_be16(src[i - reg]); |
189 | } | 182 | } |
190 | 183 | ||
@@ -1261,7 +1254,6 @@ static int wm8350_create_cache(struct wm8350 *wm8350, int type, int mode) | |||
1261 | (i < WM8350_CLOCK_CONTROL_1 || i > WM8350_AIF_TEST)) { | 1254 | (i < WM8350_CLOCK_CONTROL_1 || i > WM8350_AIF_TEST)) { |
1262 | value = be16_to_cpu(wm8350->reg_cache[i]); | 1255 | value = be16_to_cpu(wm8350->reg_cache[i]); |
1263 | value &= wm8350_reg_io_map[i].readable; | 1256 | value &= wm8350_reg_io_map[i].readable; |
1264 | value &= ~wm8350_reg_io_map[i].vol; | ||
1265 | wm8350->reg_cache[i] = value; | 1257 | wm8350->reg_cache[i] = value; |
1266 | } else | 1258 | } else |
1267 | wm8350->reg_cache[i] = reg_map[i]; | 1259 | wm8350->reg_cache[i] = reg_map[i]; |