diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-11-16 12:09:00 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-11-16 12:09:00 -0500 |
commit | 116fc01f2ed7578e70ea85c67f6507ae50a5932e (patch) | |
tree | d77c7bb464e458b88e420ffa0b7ea84d36744ef1 | |
parent | 81bcfe5e48f9b8c42cf547f1c74c7f60c44c34c8 (diff) | |
parent | 722f191080de641f023feaa7d5648caf377844f5 (diff) |
Merge tag 'mfd-fixes-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD fixes from Lee Jones:
- Fix PCI properties in intel-lpss-pci
- Fix Resetting issue during suspend in intel-lpss-pci
- Seperate IRQs for USBC device and CHRG in intel_soc_pmic_bxtwc
- Add timeout to fix Resetting issue in stmpe
- Ensure we 'put' reference to device when done in mfd-core
* tag 'mfd-fixes-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd:
mfd: core: Fix device reference leak in mfd_clone_cell
mfd: stmpe: Fix RESET regression on STMPE2401
mfd: intel_soc_pmic_bxtwc: Fix usbc interrupt
mfd: intel-lpss: Do not put device in reset state on suspend
mfd: lpss: Fix Intel Kaby Lake PCH-H properties
-rw-r--r-- | drivers/mfd/intel-lpss-pci.c | 31 | ||||
-rw-r--r-- | drivers/mfd/intel-lpss.c | 3 | ||||
-rw-r--r-- | drivers/mfd/intel_soc_pmic_bxtwc.c | 6 | ||||
-rw-r--r-- | drivers/mfd/mfd-core.c | 2 | ||||
-rw-r--r-- | drivers/mfd/stmpe.c | 2 |
5 files changed, 17 insertions, 27 deletions
diff --git a/drivers/mfd/intel-lpss-pci.c b/drivers/mfd/intel-lpss-pci.c index 3228fd182a99..9ff243970e93 100644 --- a/drivers/mfd/intel-lpss-pci.c +++ b/drivers/mfd/intel-lpss-pci.c | |||
@@ -123,19 +123,6 @@ static const struct intel_lpss_platform_info apl_i2c_info = { | |||
123 | .properties = apl_i2c_properties, | 123 | .properties = apl_i2c_properties, |
124 | }; | 124 | }; |
125 | 125 | ||
126 | static const struct intel_lpss_platform_info kbl_info = { | ||
127 | .clk_rate = 120000000, | ||
128 | }; | ||
129 | |||
130 | static const struct intel_lpss_platform_info kbl_uart_info = { | ||
131 | .clk_rate = 120000000, | ||
132 | .clk_con_id = "baudclk", | ||
133 | }; | ||
134 | |||
135 | static const struct intel_lpss_platform_info kbl_i2c_info = { | ||
136 | .clk_rate = 133000000, | ||
137 | }; | ||
138 | |||
139 | static const struct pci_device_id intel_lpss_pci_ids[] = { | 126 | static const struct pci_device_id intel_lpss_pci_ids[] = { |
140 | /* BXT A-Step */ | 127 | /* BXT A-Step */ |
141 | { PCI_VDEVICE(INTEL, 0x0aac), (kernel_ulong_t)&bxt_i2c_info }, | 128 | { PCI_VDEVICE(INTEL, 0x0aac), (kernel_ulong_t)&bxt_i2c_info }, |
@@ -207,15 +194,15 @@ static const struct pci_device_id intel_lpss_pci_ids[] = { | |||
207 | { PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_i2c_info }, | 194 | { PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_i2c_info }, |
208 | { PCI_VDEVICE(INTEL, 0xa166), (kernel_ulong_t)&spt_uart_info }, | 195 | { PCI_VDEVICE(INTEL, 0xa166), (kernel_ulong_t)&spt_uart_info }, |
209 | /* KBL-H */ | 196 | /* KBL-H */ |
210 | { PCI_VDEVICE(INTEL, 0xa2a7), (kernel_ulong_t)&kbl_uart_info }, | 197 | { PCI_VDEVICE(INTEL, 0xa2a7), (kernel_ulong_t)&spt_uart_info }, |
211 | { PCI_VDEVICE(INTEL, 0xa2a8), (kernel_ulong_t)&kbl_uart_info }, | 198 | { PCI_VDEVICE(INTEL, 0xa2a8), (kernel_ulong_t)&spt_uart_info }, |
212 | { PCI_VDEVICE(INTEL, 0xa2a9), (kernel_ulong_t)&kbl_info }, | 199 | { PCI_VDEVICE(INTEL, 0xa2a9), (kernel_ulong_t)&spt_info }, |
213 | { PCI_VDEVICE(INTEL, 0xa2aa), (kernel_ulong_t)&kbl_info }, | 200 | { PCI_VDEVICE(INTEL, 0xa2aa), (kernel_ulong_t)&spt_info }, |
214 | { PCI_VDEVICE(INTEL, 0xa2e0), (kernel_ulong_t)&kbl_i2c_info }, | 201 | { PCI_VDEVICE(INTEL, 0xa2e0), (kernel_ulong_t)&spt_i2c_info }, |
215 | { PCI_VDEVICE(INTEL, 0xa2e1), (kernel_ulong_t)&kbl_i2c_info }, | 202 | { PCI_VDEVICE(INTEL, 0xa2e1), (kernel_ulong_t)&spt_i2c_info }, |
216 | { PCI_VDEVICE(INTEL, 0xa2e2), (kernel_ulong_t)&kbl_i2c_info }, | 203 | { PCI_VDEVICE(INTEL, 0xa2e2), (kernel_ulong_t)&spt_i2c_info }, |
217 | { PCI_VDEVICE(INTEL, 0xa2e3), (kernel_ulong_t)&kbl_i2c_info }, | 204 | { PCI_VDEVICE(INTEL, 0xa2e3), (kernel_ulong_t)&spt_i2c_info }, |
218 | { PCI_VDEVICE(INTEL, 0xa2e6), (kernel_ulong_t)&kbl_uart_info }, | 205 | { PCI_VDEVICE(INTEL, 0xa2e6), (kernel_ulong_t)&spt_uart_info }, |
219 | { } | 206 | { } |
220 | }; | 207 | }; |
221 | MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids); | 208 | MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids); |
diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c index 41b113875d64..70c646b0097d 100644 --- a/drivers/mfd/intel-lpss.c +++ b/drivers/mfd/intel-lpss.c | |||
@@ -502,9 +502,6 @@ int intel_lpss_suspend(struct device *dev) | |||
502 | for (i = 0; i < LPSS_PRIV_REG_COUNT; i++) | 502 | for (i = 0; i < LPSS_PRIV_REG_COUNT; i++) |
503 | lpss->priv_ctx[i] = readl(lpss->priv + i * 4); | 503 | lpss->priv_ctx[i] = readl(lpss->priv + i * 4); |
504 | 504 | ||
505 | /* Put the device into reset state */ | ||
506 | writel(0, lpss->priv + LPSS_PRIV_RESETS); | ||
507 | |||
508 | return 0; | 505 | return 0; |
509 | } | 506 | } |
510 | EXPORT_SYMBOL_GPL(intel_lpss_suspend); | 507 | EXPORT_SYMBOL_GPL(intel_lpss_suspend); |
diff --git a/drivers/mfd/intel_soc_pmic_bxtwc.c b/drivers/mfd/intel_soc_pmic_bxtwc.c index 43e54b7e908f..f9a8c5203873 100644 --- a/drivers/mfd/intel_soc_pmic_bxtwc.c +++ b/drivers/mfd/intel_soc_pmic_bxtwc.c | |||
@@ -86,6 +86,7 @@ enum bxtwc_irqs_level2 { | |||
86 | BXTWC_THRM2_IRQ, | 86 | BXTWC_THRM2_IRQ, |
87 | BXTWC_BCU_IRQ, | 87 | BXTWC_BCU_IRQ, |
88 | BXTWC_ADC_IRQ, | 88 | BXTWC_ADC_IRQ, |
89 | BXTWC_USBC_IRQ, | ||
89 | BXTWC_CHGR0_IRQ, | 90 | BXTWC_CHGR0_IRQ, |
90 | BXTWC_CHGR1_IRQ, | 91 | BXTWC_CHGR1_IRQ, |
91 | BXTWC_GPIO0_IRQ, | 92 | BXTWC_GPIO0_IRQ, |
@@ -111,7 +112,8 @@ static const struct regmap_irq bxtwc_regmap_irqs_level2[] = { | |||
111 | REGMAP_IRQ_REG(BXTWC_THRM2_IRQ, 2, 0xff), | 112 | REGMAP_IRQ_REG(BXTWC_THRM2_IRQ, 2, 0xff), |
112 | REGMAP_IRQ_REG(BXTWC_BCU_IRQ, 3, 0x1f), | 113 | REGMAP_IRQ_REG(BXTWC_BCU_IRQ, 3, 0x1f), |
113 | REGMAP_IRQ_REG(BXTWC_ADC_IRQ, 4, 0xff), | 114 | REGMAP_IRQ_REG(BXTWC_ADC_IRQ, 4, 0xff), |
114 | REGMAP_IRQ_REG(BXTWC_CHGR0_IRQ, 5, 0x3f), | 115 | REGMAP_IRQ_REG(BXTWC_USBC_IRQ, 5, BIT(5)), |
116 | REGMAP_IRQ_REG(BXTWC_CHGR0_IRQ, 5, 0x1f), | ||
115 | REGMAP_IRQ_REG(BXTWC_CHGR1_IRQ, 6, 0x1f), | 117 | REGMAP_IRQ_REG(BXTWC_CHGR1_IRQ, 6, 0x1f), |
116 | REGMAP_IRQ_REG(BXTWC_GPIO0_IRQ, 7, 0xff), | 118 | REGMAP_IRQ_REG(BXTWC_GPIO0_IRQ, 7, 0xff), |
117 | REGMAP_IRQ_REG(BXTWC_GPIO1_IRQ, 8, 0x3f), | 119 | REGMAP_IRQ_REG(BXTWC_GPIO1_IRQ, 8, 0x3f), |
@@ -146,7 +148,7 @@ static struct resource adc_resources[] = { | |||
146 | }; | 148 | }; |
147 | 149 | ||
148 | static struct resource usbc_resources[] = { | 150 | static struct resource usbc_resources[] = { |
149 | DEFINE_RES_IRQ_NAMED(BXTWC_CHGR0_IRQ, "USBC"), | 151 | DEFINE_RES_IRQ(BXTWC_USBC_IRQ), |
150 | }; | 152 | }; |
151 | 153 | ||
152 | static struct resource charger_resources[] = { | 154 | static struct resource charger_resources[] = { |
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index 3ac486a597f3..c57e407020f1 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c | |||
@@ -399,6 +399,8 @@ int mfd_clone_cell(const char *cell, const char **clones, size_t n_clones) | |||
399 | clones[i]); | 399 | clones[i]); |
400 | } | 400 | } |
401 | 401 | ||
402 | put_device(dev); | ||
403 | |||
402 | return 0; | 404 | return 0; |
403 | } | 405 | } |
404 | EXPORT_SYMBOL(mfd_clone_cell); | 406 | EXPORT_SYMBOL(mfd_clone_cell); |
diff --git a/drivers/mfd/stmpe.c b/drivers/mfd/stmpe.c index cfdae8a3d779..b0c7bcdaf5df 100644 --- a/drivers/mfd/stmpe.c +++ b/drivers/mfd/stmpe.c | |||
@@ -851,6 +851,8 @@ static int stmpe_reset(struct stmpe *stmpe) | |||
851 | if (ret < 0) | 851 | if (ret < 0) |
852 | return ret; | 852 | return ret; |
853 | 853 | ||
854 | msleep(10); | ||
855 | |||
854 | timeout = jiffies + msecs_to_jiffies(100); | 856 | timeout = jiffies + msecs_to_jiffies(100); |
855 | while (time_before(jiffies, timeout)) { | 857 | while (time_before(jiffies, timeout)) { |
856 | ret = __stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_SYS_CTRL]); | 858 | ret = __stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_SYS_CTRL]); |