linux-stable/include/linux/mfd
Kuppuswamy Sathyanarayanan 57129044f5 mfd: intel_soc_pmic_bxtwc: Use chained IRQs for second level IRQ chips
Whishkey cove PMIC has support to mask/unmask interrupts at two levels.
At first level we can mask/unmask interrupt domains like TMU, GPIO, ADC,
CHGR, BCU THERMAL and PWRBTN and at second level, it provides facility
to mask/unmask individual interrupts belong each of this domain. For
example, in case of TMU, at first level we have TMU interrupt domain,
and at second level we have two interrupts, wake alarm, system alarm that
belong to the TMU interrupt domain.

Currently, in this driver all first level IRQs are registered as part of
IRQ chip(bxtwc_regmap_irq_chip). By default, after you register the IRQ
chip from your driver, all IRQs in that chip will masked and can only be
enabled if that IRQ is requested using request_irq() call. This is the
default Linux IRQ behavior model. And whenever a dependent device that
belongs to PMIC requests only the second level IRQ and not explicitly
unmask the first level IRQ, then in essence the second level IRQ will
still be disabled. For example, if TMU device driver request wake_alarm
IRQ and not explicitly unmask TMU level 1 IRQ then according to the default
Linux IRQ model,  wake_alarm IRQ will still be disabled. So the proper
solution to fix this issue is to use the chained IRQ chip concept. We
should chain all the second level chip IRQs to the corresponding first
level IRQ. To do this, we need to create separate IRQ chips for every
group of second level IRQs.

In case of TMU, when adding second level IRQ chip, instead of using PMIC
IRQ we should use the corresponding first level IRQ. So the following
code will change from

ret = regmap_add_irq_chip(pmic->regmap, pmic->irq, ...)

to,

virq = regmap_irq_get_virq(&pmic->irq_chip_data, BXTWC_TMU_LVL1_IRQ);

ret = regmap_add_irq_chip(pmic->regmap, virq, ...)

In case of Whiskey Cove Type-C driver, Since USBC IRQ is moved under
charger level2 IRQ chip. We should use charger IRQ chip(irq_chip_data_chgr)
to get the USBC virtual IRQ number.

Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Revieved-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
2017-06-19 15:45:01 +01:00
..
abx500 mfd: abx500: Fix spelling mistake: "Celcius" -> "Celsius" 2017-02-13 09:29:41 +00:00
arizona regulator: arizona-ldo1: Move pdata into a separate structure 2017-04-25 16:36:32 +01:00
da9052 mfd: da9053: Fix compiler warning message for uninitialised variable 2016-06-30 07:44:23 +01:00
da9055 mfd: Constify regmap and irq configuration data 2015-06-22 12:25:01 +01:00
da9062 mfd: Add support for DA9061 2017-04-27 09:25:07 +01:00
da9063 mfd: da9063: Update author information to remove incorrect e-mail addresses 2016-10-04 15:48:01 +01:00
da9150 mfd: da9150: Add support for Fuel-Gauge 2015-10-13 11:27:54 +01:00
mt6323 mfd: mt6397: Add MT6323 support to MT6397 driver 2016-03-16 08:50:30 +00:00
mt6397 mfd: mt6397: int_con and int_status may vary in location 2016-03-16 08:50:28 +00:00
pcf50633
samsung Merge remote-tracking branches 'regulator/topic/pwm', 'regulator/topic/qcom-spmi', 'regulator/topic/rk808' and 'regulator/topic/s2mps11' into regulator-next 2016-05-13 14:23:46 +01:00
syscon pci-v4.12-changes 2017-05-08 19:03:25 -07:00
wm831x mfd: wm831x: Add basic device tree binding 2017-03-23 11:45:50 +00:00
wm8350 leds: wm8350: Remove work queue 2016-01-04 09:57:35 +01:00
wm8994
88pm80x.h mfd: 88pm80x: Double shifting bug in suspend/resume 2016-10-04 15:48:02 +01:00
88pm860x.h
aat2870.h
ab3100.h
abx500.h mfd: abx500: Fix spelling mistake: "Celcius" -> "Celsius" 2017-02-13 09:29:41 +00:00
ac100.h mfd: ac100: Add driver for X-Powers AC100 audio codec / RTC combo IC 2016-08-08 12:53:26 +01:00
adp5520.h
altera-a10sr.h mfd: altr_a10sr: Add Altera Arria10 DevKit System Resource Chip 2016-06-29 10:14:37 +01:00
as3711.h mfd: as3711: Set regmap config reg counts properly 2016-03-16 08:50:34 +00:00
as3722.h regulator: as3722: Add bypass support for LDO6 2016-04-11 15:15:36 +01:00
asic3.h
atmel-hlcdc.h mfd: Add atmel-hlcdc driver 2014-11-25 16:18:43 +00:00
axp20x.h mfd: axp20x: Support AXP803 variant 2017-04-27 11:54:49 +01:00
bcm590xx.h
core.h - New Drivers 2016-05-20 11:10:24 -07:00
cros_ec.h - New Drivers 2017-05-03 12:16:25 -07:00
cros_ec_commands.h Linux 4.11-rc5 2017-04-03 12:01:20 -07:00
da8xx-cfgchip.h mfd: da8xx-cfgchip: New header file for CFGCHIP registers 2016-08-12 14:59:10 +05:30
da903x.h
davinci_voicecodec.h mfd: davinci_voicecodec: Tidyup header difinitions 2016-11-29 08:21:27 +00:00
db8500-prcmu.h mfd: db8500-prcmu: Remove unused *prcmu_set_ddr_opp() calls 2016-10-04 15:48:05 +01:00
dbx500-prcmu.h mfd: db8500-prcmu: Remove unused *prcmu_set_ddr_opp() calls 2016-10-04 15:48:05 +01:00
dln2.h mfd: Add support for Diolan DLN-2 devices 2014-11-10 16:30:05 +00:00
ds1wm.h
ezx-pcap.h
hi655x-pmic.h mfd: hi655x-pmic: Rename some interrupt macro names 2016-06-29 10:14:41 +01:00
hi6421-pmic.h
htc-pasic3.h
imx25-tsadc.h mfd: fsl-imx25-tsadc: Register touchscreen ADC driver 2016-02-11 15:40:41 +00:00
intel_msic.h
intel_soc_pmic.h mfd: intel_soc_pmic_bxtwc: Use chained IRQs for second level IRQ chips 2017-06-19 15:45:01 +01:00
intel_soc_pmic_bxtwc.h mfd: intel_soc_pmic_bxtwc: Rename header to follow c-file 2017-04-27 09:25:05 +01:00
ipaq-micro.h
janz.h
kempld.h
lm3533.h
lp873x.h mfd: lp873x: Remove unused mutex lock from struct lp873x 2016-10-04 15:48:04 +01:00
lp3943.h Revert "gpio: lp3943: Drop pin_used and lp3943_gpio_request/lp3943_gpio_free" 2016-03-09 22:00:27 +07:00
lp8788-isink.h
lp8788.h
lpc_ich.h mfd: lpc_ich: Add support for SPI serial flash host controller 2017-01-03 17:34:15 +00:00
max8907.h
max8925.h
max8997-private.h
max8997.h
max8998-private.h
max8998.h
max14577-private.h mfd: max14577: Change Krzysztof Kozlowski's email to kernel.org 2016-10-04 15:48:02 +01:00
max14577.h mfd: max14577: Change Krzysztof Kozlowski's email to kernel.org 2016-10-04 15:48:02 +01:00
max77620.h regulator: max77620: add support to configure MPOK 2016-11-23 16:27:24 +00:00
max77686-private.h rtc: max77686: move initialisation of rtc regmap, irq chip locally 2016-03-14 17:08:13 +01:00
max77686.h mfd: max77686: Remove unused struct max77686_opmode_data 2015-06-22 12:25:05 +01:00
max77693-common.h drivers: max77843: Switch to common max77693 state container 2015-07-16 21:39:30 +01:00
max77693-private.h mfd/extcon: max77693: Rename defines to allow inclusion with max77843 2015-07-16 21:39:30 +01:00
max77693.h == Changes to existing drivers == 2015-04-14 17:29:55 -07:00
max77843-private.h mfd/extcon: max77843: Rename defines to allow inclusion with max77693 2015-07-16 21:39:30 +01:00
mc13xxx.h
mc13783.h
mc13892.h
mcp.h
menelaus.h mfd: menelaus: Drop support for SW controller VCORE 2015-03-30 10:06:50 +01:00
motorola-cpcap.h Merge branches 'ib-mfd-gpio-4.12', 'ib-mfd-iio-input-4.12', 'ib-mfd-input-4.12', 'ib-mfd-leds-4.12', 'ib-mfd-phy-4.12' and 'ib-mfd-pinctrl-samsung-4.12' into ibs-for-mfd-merged 2017-04-27 09:24:41 +01:00
mxs-lradc.h mfd: mxs-lradc: Add support for mxs-lradc 2017-03-23 12:28:28 +00:00
palmas.h extcon: palmas: Add the support for VBUS detection by using GPIO 2016-02-05 14:15:31 +09:00
qcom_rpm.h mfd: qcom-rpm: Driver for the Qualcomm RPM 2015-01-22 16:04:00 +00:00
rc5t583.h mfd: rc5t583: Set regmap config reg counts properly 2016-03-16 08:50:34 +00:00
rdc321x.h
retu.h
rk808.h mfd: rk808: RK818 uses DEV_OFF to power off supplies 2016-11-29 08:21:24 +00:00
rn5t618.h mfd: rn5t618: Add Ricoh RC5T619 PMIC support 2016-11-29 08:21:35 +00:00
rt5033-private.h mfd: rt5033: Add Richtek RT5033 driver core. 2015-01-22 15:55:47 +00:00
rt5033.h power_supply: Change ownership from driver to core 2015-03-13 23:15:51 +01:00
rtsx_common.h
rtsx_pci.h mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rtsx_usb.h
si476x-core.h
si476x-platform.h
si476x-reports.h
sky81452.h mfd: Add support for Skyworks SKY81452 driver 2015-03-12 09:08:12 +00:00
smsc.h
sta2x11-mfd.h
stm32-timers.h iio: stm32 trigger: Add quadrature encoder device 2017-04-14 15:08:31 +01:00
stmpe.h mfd: Add STMPE1600 support 2016-08-10 09:25:18 +01:00
stw481x.h regulator: stw481x: Remove unused fields from struct stw481x 2015-03-21 01:05:56 +00:00
sun4i-gpadc.h iio: adc: sun4i-gpadc-iio: add support for A33 thermal sensor 2017-04-08 17:35:47 +01:00
syscon.h mfd: syscon: Include errno.h from header 2016-04-11 13:31:40 +01:00
t7l66xb.h
tc3589x.h Input: tc3589x - localize platform data 2015-04-03 17:08:59 -07:00
tc6387xb.h
tc6393xb.h
ti-lmu-register.h mfd: Add TI LMU driver 2017-04-27 09:25:04 +01:00
ti-lmu.h mfd: Add TI LMU driver 2017-04-27 09:25:04 +01:00
ti_am335x_tscadc.h drivers: iio: ti_am335x_adc: add dma support 2016-11-05 17:32:05 +00:00
tmio.h mmc: host: tmio: SDIO_STATUS_QUIRK is rather SDIO_STATUS_SETBITS 2017-02-13 13:20:34 +01:00
tps6105x.h mfd: tps6105x: Use i2c regmap to access registers 2015-10-05 10:38:22 +01:00
tps6507x.h
tps6586x.h
tps65086.h mfd: tps65086: Add driver for the TPS65086 PMIC 2016-03-16 08:50:15 +00:00
tps65090.h mfd: tps65090: Set regmap config reg counts properly 2016-03-16 08:50:36 +00:00
tps65217.h - New Device Support 2016-12-19 08:16:26 -08:00
tps65218.h regulator: tps65218: Remove all the compatibles 2016-10-26 10:30:39 +01:00
tps65910.h rtc: tps65910: Add RTC calibration support 2017-01-10 01:32:33 +01:00
tps65912.h mfd: tps65912: Move regmap config into core driver 2016-11-29 08:21:21 +00:00
tps80031.h
twl4030-audio.h
twl6040.h mfd: twl6040: Register child device for twl6040-pdmclk 2016-10-04 15:48:05 +01:00
ucb1x00.h
viperboard.h
wl1273-core.h
wm8400-audio.h
wm8400-private.h mfd: wm8400-core: Delete wm8400_reg_read() 2016-05-09 08:20:45 +01:00
wm8400.h