diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2012-11-13 03:28:45 -0500 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2012-11-21 10:08:00 -0500 |
commit | 14591d888e35c12b15eccf54e490c7769eb6d6d2 (patch) | |
tree | 16631920135867d55fbdace5073cd89b61446c72 /drivers/mfd | |
parent | 2473d25a2f61985f8980c7c3d41cb85da1abea0f (diff) |
mfd/rtc/gpio: twl: No need to allocate bigger buffer for write
Since the twl-core has been converted to use regmap it is no longer needed
to allocate bigger buffer for data when writing to twl.
CC: Grant Likely <grant.likely@secretlab.ca>
CC: Alessandro Zummo <a.zummo@towertech.it>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/twl-core.c | 9 | ||||
-rw-r--r-- | drivers/mfd/twl4030-irq.c | 6 | ||||
-rw-r--r-- | drivers/mfd/twl6030-irq.c | 4 |
3 files changed, 7 insertions, 12 deletions
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c index 5043f505a230..a55ab15ecf1a 100644 --- a/drivers/mfd/twl-core.c +++ b/drivers/mfd/twl-core.c | |||
@@ -344,7 +344,7 @@ int twl_i2c_write(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes) | |||
344 | twl = &twl_modules[sid]; | 344 | twl = &twl_modules[sid]; |
345 | 345 | ||
346 | ret = regmap_bulk_write(twl->regmap, twl_map[mod_no].base + reg, | 346 | ret = regmap_bulk_write(twl->regmap, twl_map[mod_no].base + reg, |
347 | &value[1], num_bytes); | 347 | value, num_bytes); |
348 | 348 | ||
349 | if (ret) | 349 | if (ret) |
350 | pr_err("%s: Write failed (mod %d, reg 0x%02x count %d)\n", | 350 | pr_err("%s: Write failed (mod %d, reg 0x%02x count %d)\n", |
@@ -406,12 +406,7 @@ EXPORT_SYMBOL(twl_i2c_read); | |||
406 | */ | 406 | */ |
407 | int twl_i2c_write_u8(u8 mod_no, u8 value, u8 reg) | 407 | int twl_i2c_write_u8(u8 mod_no, u8 value, u8 reg) |
408 | { | 408 | { |
409 | 409 | return twl_i2c_write(mod_no, &value, reg, 1); | |
410 | /* 2 bytes offset 1 contains the data offset 0 is used by i2c_write */ | ||
411 | u8 temp_buffer[2] = { 0 }; | ||
412 | /* offset 1 contains the data */ | ||
413 | temp_buffer[1] = value; | ||
414 | return twl_i2c_write(mod_no, temp_buffer, reg, 1); | ||
415 | } | 410 | } |
416 | EXPORT_SYMBOL(twl_i2c_write_u8); | 411 | EXPORT_SYMBOL(twl_i2c_write_u8); |
417 | 412 | ||
diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c index ad733d76207a..e900402633f5 100644 --- a/drivers/mfd/twl4030-irq.c +++ b/drivers/mfd/twl4030-irq.c | |||
@@ -501,7 +501,7 @@ static void twl4030_sih_bus_sync_unlock(struct irq_data *data) | |||
501 | } imr; | 501 | } imr; |
502 | 502 | ||
503 | /* byte[0] gets overwritten as we write ... */ | 503 | /* byte[0] gets overwritten as we write ... */ |
504 | imr.word = cpu_to_le32(agent->imr << 8); | 504 | imr.word = cpu_to_le32(agent->imr); |
505 | agent->imr_change_pending = false; | 505 | agent->imr_change_pending = false; |
506 | 506 | ||
507 | /* write the whole mask ... simpler than subsetting it */ | 507 | /* write the whole mask ... simpler than subsetting it */ |
@@ -526,7 +526,7 @@ static void twl4030_sih_bus_sync_unlock(struct irq_data *data) | |||
526 | * any processor on the other IRQ line, EDR registers are | 526 | * any processor on the other IRQ line, EDR registers are |
527 | * shared. | 527 | * shared. |
528 | */ | 528 | */ |
529 | status = twl_i2c_read(sih->module, bytes + 1, | 529 | status = twl_i2c_read(sih->module, bytes, |
530 | sih->edr_offset, sih->bytes_edr); | 530 | sih->edr_offset, sih->bytes_edr); |
531 | if (status) { | 531 | if (status) { |
532 | pr_err("twl4030: %s, %s --> %d\n", __func__, | 532 | pr_err("twl4030: %s, %s --> %d\n", __func__, |
@@ -538,7 +538,7 @@ static void twl4030_sih_bus_sync_unlock(struct irq_data *data) | |||
538 | while (edge_change) { | 538 | while (edge_change) { |
539 | int i = fls(edge_change) - 1; | 539 | int i = fls(edge_change) - 1; |
540 | struct irq_data *idata; | 540 | struct irq_data *idata; |
541 | int byte = 1 + (i >> 2); | 541 | int byte = i >> 2; |
542 | int off = (i & 0x3) * 2; | 542 | int off = (i & 0x3) * 2; |
543 | unsigned int type; | 543 | unsigned int type; |
544 | 544 | ||
diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c index b76902f1e44a..277a8dba42d5 100644 --- a/drivers/mfd/twl6030-irq.c +++ b/drivers/mfd/twl6030-irq.c | |||
@@ -355,7 +355,7 @@ int twl6030_init_irq(struct device *dev, int irq_num) | |||
355 | static struct irq_chip twl6030_irq_chip; | 355 | static struct irq_chip twl6030_irq_chip; |
356 | int status = 0; | 356 | int status = 0; |
357 | int i; | 357 | int i; |
358 | u8 mask[4]; | 358 | u8 mask[3]; |
359 | 359 | ||
360 | nr_irqs = TWL6030_NR_IRQS; | 360 | nr_irqs = TWL6030_NR_IRQS; |
361 | 361 | ||
@@ -370,9 +370,9 @@ int twl6030_init_irq(struct device *dev, int irq_num) | |||
370 | 370 | ||
371 | irq_end = irq_base + nr_irqs; | 371 | irq_end = irq_base + nr_irqs; |
372 | 372 | ||
373 | mask[0] = 0xFF; | ||
373 | mask[1] = 0xFF; | 374 | mask[1] = 0xFF; |
374 | mask[2] = 0xFF; | 375 | mask[2] = 0xFF; |
375 | mask[3] = 0xFF; | ||
376 | 376 | ||
377 | /* mask all int lines */ | 377 | /* mask all int lines */ |
378 | twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); | 378 | twl_i2c_write(TWL_MODULE_PIH, &mask[0], REG_INT_MSK_LINE_A, 3); |