aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-01-21 01:29:44 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-01-21 01:29:44 -0500
commit7c4bb81c28eadf8c1abd9969eda9662cdcf15ced (patch)
tree72ebf8394633dcf33c46ea70dbe16289ab834579
parentb97f880c8342fd6e49a02c9ef7507a678722b2b3 (diff)
parentb166010f6afbadb896efa37ff85eb681a8f89392 (diff)
Merge tag 'mfd-fixes-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD fixes from Lee Jones: - Avoid platform ID collision in da9052 - Skip caching volatile registers in tps65218 - Use correct address base in tps65218 - Repair deadlock on suspend in rtsx_usb * tag 'mfd-fixes-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: mfd: rtsx_usb: Fix runtime PM deadlock mfd: tps65218: Make INT1 our status_base register mfd: tps65218: Make INT[12] and STATUS registers volatile mfd: da9052-core: Fix platform-device id collision
-rw-r--r--drivers/mfd/da9052-core.c3
-rw-r--r--drivers/mfd/rtsx_usb.c12
-rw-r--r--drivers/mfd/tps65218.c12
3 files changed, 14 insertions, 13 deletions
diff --git a/drivers/mfd/da9052-core.c b/drivers/mfd/da9052-core.c
index 52a0c2f6264f..ae498b53ee40 100644
--- a/drivers/mfd/da9052-core.c
+++ b/drivers/mfd/da9052-core.c
@@ -554,7 +554,8 @@ int da9052_device_init(struct da9052 *da9052, u8 chip_id)
554 return ret; 554 return ret;
555 } 555 }
556 556
557 ret = mfd_add_devices(da9052->dev, -1, da9052_subdev_info, 557 ret = mfd_add_devices(da9052->dev, PLATFORM_DEVID_AUTO,
558 da9052_subdev_info,
558 ARRAY_SIZE(da9052_subdev_info), NULL, 0, NULL); 559 ARRAY_SIZE(da9052_subdev_info), NULL, 0, NULL);
559 if (ret) { 560 if (ret) {
560 dev_err(da9052->dev, "mfd_add_devices failed: %d\n", ret); 561 dev_err(da9052->dev, "mfd_add_devices failed: %d\n", ret);
diff --git a/drivers/mfd/rtsx_usb.c b/drivers/mfd/rtsx_usb.c
index dbdd0faeb6ce..210d1f85679e 100644
--- a/drivers/mfd/rtsx_usb.c
+++ b/drivers/mfd/rtsx_usb.c
@@ -681,21 +681,9 @@ static void rtsx_usb_disconnect(struct usb_interface *intf)
681#ifdef CONFIG_PM 681#ifdef CONFIG_PM
682static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message) 682static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message)
683{ 683{
684 struct rtsx_ucr *ucr =
685 (struct rtsx_ucr *)usb_get_intfdata(intf);
686
687 dev_dbg(&intf->dev, "%s called with pm message 0x%04x\n", 684 dev_dbg(&intf->dev, "%s called with pm message 0x%04x\n",
688 __func__, message.event); 685 __func__, message.event);
689 686
690 /*
691 * Call to make sure LED is off during suspend to save more power.
692 * It is NOT a permanent state and could be turned on anytime later.
693 * Thus no need to call turn_on when resunming.
694 */
695 mutex_lock(&ucr->dev_mutex);
696 rtsx_usb_turn_off_led(ucr);
697 mutex_unlock(&ucr->dev_mutex);
698
699 return 0; 687 return 0;
700} 688}
701 689
diff --git a/drivers/mfd/tps65218.c b/drivers/mfd/tps65218.c
index 0d256cb002eb..d6b764349f9d 100644
--- a/drivers/mfd/tps65218.c
+++ b/drivers/mfd/tps65218.c
@@ -125,10 +125,21 @@ int tps65218_clear_bits(struct tps65218 *tps, unsigned int reg,
125} 125}
126EXPORT_SYMBOL_GPL(tps65218_clear_bits); 126EXPORT_SYMBOL_GPL(tps65218_clear_bits);
127 127
128static const struct regmap_range tps65218_yes_ranges[] = {
129 regmap_reg_range(TPS65218_REG_INT1, TPS65218_REG_INT2),
130 regmap_reg_range(TPS65218_REG_STATUS, TPS65218_REG_STATUS),
131};
132
133static const struct regmap_access_table tps65218_volatile_table = {
134 .yes_ranges = tps65218_yes_ranges,
135 .n_yes_ranges = ARRAY_SIZE(tps65218_yes_ranges),
136};
137
128static struct regmap_config tps65218_regmap_config = { 138static struct regmap_config tps65218_regmap_config = {
129 .reg_bits = 8, 139 .reg_bits = 8,
130 .val_bits = 8, 140 .val_bits = 8,
131 .cache_type = REGCACHE_RBTREE, 141 .cache_type = REGCACHE_RBTREE,
142 .volatile_table = &tps65218_volatile_table,
132}; 143};
133 144
134static const struct regmap_irq tps65218_irqs[] = { 145static const struct regmap_irq tps65218_irqs[] = {
@@ -193,6 +204,7 @@ static struct regmap_irq_chip tps65218_irq_chip = {
193 204
194 .num_regs = 2, 205 .num_regs = 2,
195 .mask_base = TPS65218_REG_INT_MASK1, 206 .mask_base = TPS65218_REG_INT_MASK1,
207 .status_base = TPS65218_REG_INT1,
196}; 208};
197 209
198static const struct of_device_id of_tps65218_match_table[] = { 210static const struct of_device_id of_tps65218_match_table[] = {