summaryrefslogtreecommitdiffstats
path: root/drivers (follow)
Commit message (Collapse)AuthorAgeFilesLines
* mfd: rtsx: Add support for card reader rtl8402Micky Ching2014-01-213-4/+46
| | | | | | | | rtl8402 is much like rtl8411, so just add it to rtl8411.c Signed-off-by: Micky Ching <micky_ching@realsil.com.cn> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: rtsx: Add set pull control macro and simplify rtl8411Micky Ching2014-01-212-40/+21
| | | | | | | | | | Add set pull control macro to reduce code for setting pull control, and use a common init function to reduce code for rtl8411.c. So this patch is used to just simplify code. Signed-off-by: Micky Ching <micky_ching@realsil.com.cn> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: max8997: Enforce mfd_add_devices() return value checkLaszlo Papp2014-01-211-4/+5
| | | | | | | | | | | The original author provided a random return value check which is redundant and seemingly floating. This patch not only relocates the check so it is more clearly associated with the invokation of mfd_add_devices(), but provides a store for the error value. We also print a meaningful message on error before returning. Signed-off-by: Laszlo Papp <lpapp@kde.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: mc13xxx: Simplify probe() & remove()Alexander Shiyan2014-01-214-50/+29
| | | | | | | | | This patch simplifies probe() and remove() functions by moving some initialisation code out from the I2C/SPI init() and exit() functions and into the core driver. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: mc13xxx: Remove useless symbol MFD_MC13783Alexander Shiyan2014-01-214-7/+3
| | | | | | | | Symbol MFD_MC13783 always selected by MFD_MC13XXX, so no need to keep additional symbol. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: ssbi: Mark match table constStephen Boyd2014-01-211-1/+1
| | | | | | | This is a read-only data structure. Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: ssbi: Constify buffer in ssbi_writeStephen Boyd2014-01-211-4/+4
| | | | | | | | In preparation for passing a const pointer directly to ssbi_write() from the regmap APIs. Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: ssbi: Remove platform data structs and hide ssbi type enumStephen Boyd2014-01-211-0/+6
| | | | | | | | | The ssbi driver assumes that the device is DT based. Remove the platform data structs that will never be used and hide the enum in the only C file that uses it. Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: Always assign of_node in mfd_add_device()Stephen Warren2014-01-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | mfd_add_device() assigns .of_node in the device objects it creates only if the mfd_cell for the device has the .of_compatible field set and the DT node for the top-level MFD device contains a child whose compatible property matches the cell's .of_compatible field. This leaves .of_node unset in many cases. When this happens, entries in the DT /aliases property which refer to the top-level MFD DT node will never match the MFD child devices, hence causing the requested alias not to be honored. Solve this by setting each MFD child device's .of_node equal to the top- level MFD device's .of_node field in the cases where it would otherwise remain unset. The first use-case for this will be aliases for the TPS6586x's RTC device. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: cros ec: spi: Add delay for raising CSRhyland Klein2014-01-211-0/+29
| | | | | | | | | | | | | | | | | The EC has specific timing it requires. Add support for an optional delay after raising CS to fix timing issues. This is configurable based on a DT property "google,cros-ec-spi-msg-delay". If this property isn't set, then no delay will be added. However, if set it will cause a delay equal to the value passed to it to be inserted at the end of a transaction. Signed-off-by: Rhyland Klein <rklein@nvidia.com> Reviewed-by: Bernie Thompson <bhthompson@chromium.org> Reviewed-by: Andrew Bresticker <abrestic@chromium.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: cros ec: spi: Use 0 instead of '\0' consistentlyThierry Reding2014-01-211-3/+3
| | | | | | | | | memset() was being called with the second parameter set to '\0', which is equivalent but longer than the more canonical 0. Update the code to use the latter variant consistently across the driver. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: cros ec: spi: Depend on OFThierry Reding2014-01-211-1/+1
| | | | | | | | | | The driver is not used on any non-DT platform, so it can depend on the OF Kconfig symbol to make that explicit. This is in preparation of a subsequent patch which parses some parameters from the device tree and would otherwise have to conditionalize that code. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: cros ec: spi: Use correct module licenseThierry Reding2014-01-211-1/+1
| | | | | | | | According to the header comment in the source file the driver is licensed under GPL v2, so update MODULE_LICENSE() to match that. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: sec-core: Fix sparse NULL pointer warningWei Yongjun2014-01-211-1/+1
| | | | | | | | | Fixes the following sparse warning: drivers/mfd/sec-core.c:202:16: warning: Using plain integer as NULL pointer Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: sta2x11-mfd: Fix return value check in sta2x11_mfd_platform_probe()Wei Yongjun2014-01-211-1/+1
| | | | | | | | | In case of error, the function devm_regmap_init_mmio() returns ERR_PTR() and never returns NULL. The NULL test in the return value check should be replaced with IS_ERR(). Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: mc13xxx: Remove redundant checksAlexander Shiyan2014-01-211-4/+1
| | | | | | | | Checking for maximal register is already provided by regmap API, so remove redundant checks. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* regulator: tps6586x: Add and use correct voltage tableStefan Agner2014-01-211-19/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on the regulator version, the voltage table might be different. Use version specific regulator tables in order to select correct voltage table. For the following regulator versions different voltage tables are now used: * TPS658623: Use correct voltage table for SM2 * TPS658643: New voltage table for SM2 Both versions are in use on the Colibri T20 module. Make use of the correct tables by requesting the correct SM2 voltage of 1.8V. This change is not backward compatible since an old driver is not able to correctly set that value. The value 1.8V is out of range for the old driver and will refuse to probe the device. The regulator starts with default settings and the driver shows appropriate error messages. On Colibri T20, the old value used to work with TPS658623 since the driver applied a wrong voltage table too. However, the TPS658643 used on V1.2 devices uses yet another voltage table and those broke that pseudo-compatibility. The regulator driver now has the correct voltage table for both regulator versions and those the correct voltage can be used in the device tree. Signed-off-by: Stefan Agner <stefan@agner.ch> Reviewed-by: Thierry Reding <treding@nvidia.com> Acked-by: Mark Brown <broonie@linaro.org> Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: tps6586x: Add version detectionStefan Agner2014-01-211-8/+42
| | | | | | | | | | | | Use the VERSIONCRC to determine the exact device version. According to the datasheet this register can be used as device identifier. The identification is needed since some tps6586x regulators use a different voltage table. Signed-off-by: Stefan Agner <stefan@agner.ch> Reviewed-by: Thierry Reding <treding@nvidia.com> Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* pwm: Add LP3943 PWM driverMilo Kim2014-01-213-0/+325
| | | | | | | | | | | | | | | | | | | | | | This is the other of the LP3943 MFD driver. LP3943 can be used as a PWM generator, up to 2 channels. * Two PWM generators supported * Supported PWM operations request, free, config, enable and disable * Pin assignment A driver data, 'pin_used' is checked when a PWM is requested. If the output pin is already assigned, then returns as failure. If the pin is available, 'pin_used' is set. When the PWM is not used anymore, then it is cleared. It is defined as unsigned long type for atomic bit operation APIs, but only LSB 16bits are used because LP3943 has 16 outputs. Signed-off-by: Milo Kim <milo.kim@ti.com> Acked-by: Thierry Reding <thierry.reding@gmail.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: Add LP3943 MFD driverMilo Kim2014-01-213-0/+179
| | | | | | | | | | | | | | | | | | | | | LP3943 has 16 output pins which can be used as GPIO expander and PWM generator. * Regmap I2C interface for R/W LP3943 registers * Atomic operations for output pin assignment The driver should check whether requested pin is available or not. If the pin is already used, pin request returns as a failure. A driver data, 'pin_used' is checked when gpio_request() and pwm_request() are called. If the pin is available, then pin_used is set. And it is cleared when gpio_free() and pwm_free(). * Device tree support Compatible strings for GPIO and PWM driver. LP3943 platform data is PWM related, so parsing the device tree is implemented in the PWM driver. Signed-off-by: Milo Kim <milo.kim@ti.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* gpio: add LP3943 I2C GPIO expander driverMilo Kim2014-01-213-0/+251
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is one of LP3943 MFD driver. LP3943 is configurable as a GPIO expander, up to 16 GPIOs. * Application note: how to configure LP3943 as a GPIO expander http://www.ti.com/lit/an/snva287a/snva287a.pdf * Supported GPIO controller operations request, free, direction_input, direction_output, get and set * GPIO direction register not supported LP3943 doesn't have the GPIO direction register. It only provides input and output status registers. So, private data for the direction should be handled manually. This variable is updated whenever the direction is changed and used in 'get' operation. * Pin assignment A driver data, 'pin_used' is checked when a GPIO is requested. If the GPIO is already assigned, then returns as failure. If the GPIO is available, 'pin_used' is set. When the GPIO is not used anymore, then it is cleared. It is defined as unsigned long type for atomic bit operation APIs, but only LSB 16bits are used because LP3943 has 16 outputs. Signed-off-by: Milo Kim <milo.kim@ti.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: max14577: Cleanup an error messageDan Carpenter2014-01-211-2/+1
| | | | | | | "pdata" is a NULL not an ERR_PTR so there is no use printing it. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: wm831x: Use PM ops for shutdownMark Brown2014-01-212-6/+10
| | | | | | | | This helps move us towards removing the bus custom operations. Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: ab8500: Use irqdomain to map interruptsLinus Walleij2014-01-211-1/+1
| | | | | | | | | | All subdrivers use the irqdomain to demux AB8500 IRQs but here in the hierarchical path we find a leftover instance using the hard-coded IRQ base. Convert it to use irqdomain with a oneliner. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: rtsx: Prevent 'used uninitialised' warningsLee Jones2014-01-211-3/+3
| | | | | | | | | | | | drivers/mfd/rtl8411.c: In function 'rtl8411_fetch_vendor_settings': drivers/mfd/rtl8411.c:58:7: warning: 'reg1' is used uninitialized in this function [-Wuninitialized] drivers/mfd/rtl8411.c: In function 'rtl8411b_fetch_vendor_settings': drivers/mfd/rtl8411.c:79:7: warning: 'reg' is used uninitialized in this function [-Wuninitialized] drivers/mfd/rtl8411.c: In function 'rtl8411_fetch_vendor_settings': drivers/mfd/rtl8411.c:69:26: warning: 'reg3' may be used uninitialized in this function [-Wuninitialized] Tested-by: Micky Ching <micky_ching@realsil.com.cn> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd: Remove DEFINE_PCI_DEVICE_TABLE macroJingoo Han2014-01-2110-10/+10
| | | | | | | | Don't use DEFINE_PCI_DEVICE_TABLE macro, because this macro is not preferred. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* mfd/pinctrl: Delete platform data headerLinus Walleij2014-01-212-1/+12
| | | | | | | | | This deletes the special AB8500 GPIO platform data passing header and merges the few remaining contents down into the abx500 pinctrl driver which handles the abx500 GPIO device. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* Merge tag 'ib-iio-input-3.13-1' into for-mfd-nextLee Jones2014-01-213-32/+111
|\ | | | | | | Immutable branch for IIO and Input
| * mfd: input: iio: ti_amm335x: Rework TSC/ADC synchronizationSebastian Andrzej Siewior2014-01-072-28/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ADC driver always programs all possible ADC values and discards them except for the value IIO asked for. On the am335x-evm the driver programs four values and it takes 500us to gather them. Reducing the number of conversations down to the (required) one also reduces the busy loop down to 125us. This leads to another error, namely the FIFOCOUNT register is sometimes (like one out of 10 attempts) not updated in time leading to EBUSY. The next read has the FIFOCOUNT register updated. Checking for the ADCSTAT register for being idle isn't a good choice either. The problem is that if TSC is used at the same time, the HW completes the conversation for ADC *and* before the driver noticed it, the HW begins to perform a TSC conversation and so the driver never seen the HW idle. The next time we would have two values in the FIFO but since the driver reads everything we always see the current one. So instead of polling for the IDLE bit in ADCStatus register, we should check the FIFOCOUNT register. It should be one instead of zero because we request one value. This change in turn leads to another error. Sometimes if TSC & ADC are used together the TSC starts generating interrupts even if nobody actually touched the touchscreen. The interrupts seem valid because TSC's FIFO is filled with values for each channel of the TSC. This condition stops after a few ADC reads but will occur again. Not good. On top of this (even without the changes I just mentioned) there is a ADC & TSC lockup condition which was reported to me by Jeff Lance including the following test case: A busy loop of "cat /sys/bus/iio/devices/iio\:device0/in_voltage4_raw" and a mug on touch screen. With this setup, the hardware will lockup after something between 20 minutes and it could take up to a couple of hours. During that lockup, the ADCSTAT register says 0x30 (or 0x70) which means STEP_ID = IDLE and FSM_BUSY = yes. That means the hardware says that it is idle and busy at the same time which is an invalid condition. For all this reasons I decided to rework this TSC/ADC part and add a handshake / synchronization here: First the ADC signals that it needs the HW and writes a 0 mask into the SE register. The HW (if active) will complete the current conversation and become idle. The TSC driver will gather the values from the FIFO (woken up by an interrupt) and won't "enable" another conversation. Instead it will wake up the ADC driver which is already waiting. The ADC driver will start "its" conversation and once it is done, it will enable the TSC steps so the TSC will work again. After this rework I haven't observed the lockup so far. Plus the busy loop has been reduced from 500us to 125us. The continues-read mode remains unchanged. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * mfd: ti_am335x: Drop am335x_tsc_se_update() from resume pathSebastian Andrzej Siewior2014-01-072-1/+2
| | | | | | | | | | | | | | | | | | | | | | The update of the SE register in MFD doesn't look right as it has nothing to do with it. The better place to do it is in TSC driver (which is already doing it) and in the ADC driver which needs this only in the continues mode. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * mfd: ti_am335x_tscadc: Don't read back REG_SESebastian Andrzej Siewior2014-01-073-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The purpose of reg_se_cache has been defeated. It should avoid the read-back of the register to avoid the latency and the fact that the bits are reset to 0 after the individual conversation took place. The reason why this is required like this to work, is that read-back of the register removes the bits of the ADC so they do not start another conversation after the register is re-written from the TSC side for the update. To avoid the not required read-back I introduce a "set once" variant which does not update the cache mask. After the conversation completes, the bit is removed from the SE register anyway and we don't plan a new conversation "any time soon". The current set function is renamed to set_cache to distinguish the two operations. This is a small preparation for a larger sync-rework. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * mfd: ti_am335x_tscadc: Make am335x_tsc_se_update() localSebastian Andrzej Siewior2014-01-071-2/+1
| | | | | | | | | | | | | | | | Since the "recent" changes, am335x_tsc_se_update() has no longer any users outside of this file so make it local. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * iio: ti_am335x_adc: Adjust the closing bracket in tiadc_read_raw()Sebastian Andrzej Siewior2014-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | It somehow looks like the ending bracket belongs to the if statement but it does belong to the while loop. This patch moves the bracket where it belongs. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | Merge tag 'ib-asoc-3.14.2' into for-mfd-nextLee Jones2014-01-212-30/+252
|\ \ | | | | | | | | | Immutable branch between MFD and ASoC due for the v3.14 merge window
| * | mfd: twl-core: Enable regcache for audio registersPeter Ujfalusi2014-01-081-0/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enable regmap's regcache for the audio registers: i2c address 0x49, register range 0x01 - 0x49 Mark all other registers as volatile to avoid any side effect for the non audio functions behind 0x49 i2c address. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * | mfd: twl-core: API to set the regcache bypass for a given regmap in twlPeter Ujfalusi2014-01-081-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the regcache is enabled on the regmap module drivers might need to access to HW register(s) in certain cases in cache bypass mode. As an example of this is the audio block's ANAMICL register. In normal operation the content can be cached but during initialization one bit from the register need to be monitored. With the twl_set_regcache_bypass() the client driver can switch regcache bypass on and off when it is needed so we can utilize the regcache for more registers. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * | mfd: twl-core: Simplify IO wrapper functions by moving common code outPeter Ujfalusi2014-01-081-27/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new twl_get_regmap() function will return a pointer to the regmap needed for the given module. Since both read and write function were using the same code to do the lookup we can reuse this in both places to simplify the code. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * | mfd: twl6040: reg_defaults support for regmapPeter Ujfalusi2013-12-191-3/+89
| |/ | | | | | | | | | | | | | | | | | | | | | | | | Add reg_defaults to regmap and at the same time implement proper power state handling with using regcache_cache_only(), regcache_sync() and regcache_mark_dirty(). This will make sure that we do not need to do restore operations in child drivers anymore. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | Merge tag 'tags/ib-asoc-1' into for-mfd-nextLee Jones2014-01-211-4/+69
|\ \ | | | | | | | | | Immutable branch for ASoC, as requested by Mark Brown
| * | ASoC: wm5110: Expose input high pass filter controlsCharles Keepax2013-11-211-0/+4
| | | | | | | | | | | | | | | | | | Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
| * | mfd: wm5110: Make DSP memories readableCharles Keepax2013-11-211-4/+65
| | | | | | | | | | | | | | | | | | | | | | | | Expose the memory regions used by the DSP cores on WM5110 as readable and volatile. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | pinctrl: abx500: Delete non-devicetree probe pathLinus Walleij2014-01-211-27/+9
| | | | | | | | | | | | | | | | | | | | | | | | All instances of this device are now coming from device tree- enabled platforms probing without using platform data. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: twl-core: Fix passing of platform data in the device tree caseTony Lindgren2014-01-211-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we still need to rely on a mix of device tree initialized drivers and legacy platform data initialize drivers, let's fix the passing of platform data to twl4030-gpio. As the twl4030 GPIO is initialized by twl-core.c, we need to register the auxdata for twl4030 GPIO in twl-core.c. Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: twl-core: Clean up module by removing twl603x pdata handlingRuslan Ruslichenko2014-01-211-198/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since currently nobody uses TWL603x platform data and all new users will supply it through device tree, handling of these data within twl-core will never be used, so remove it. Signed-off-by: Ruslan Ruslichenko <ruslan.ruslichenko@globallogic.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: sec: Constify regmap configs and regmap irqsKrzysztof Kozlowski2014-01-212-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add "const" to "static struct regmap_irq" and "static struct regmap_config". Acked-by: Sangbeom Kim <sbkim73@samsung.com> Reviewed-by: Mark Brown <broonie@linaro.org> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: max14577: Match regulator by of_compatible stringKrzysztof Kozlowski2014-01-211-1/+4
| | | | | | | | | | | | | | | | | | | | | Match max14577 regulator driver by of_compatible specified in mfd_cell. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: max14577: Add max14577 MFD driver coreChanwoo Choi2014-01-213-0/+257
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds max14577 core/irq driver to support MUIC(Micro USB IC) device and charger device and support irq domain method to control internal interrupt of max14577 device. Also, this patch supports DT binding with max14577_i2c_parse_dt(). The MAXIM 14577 chip contains Micro-USB Interface Circuit and Li+ Battery Charger. It contains accessory and USB charger detection logic. It supports USB 2.0 Hi-Speed, UART and stereo audio signals over Micro-USB connector. The battery charger is compliant with the USB Battery Charging Specification Revision 1.1. It has also SFOUT LDO output for powering USB devices. Reviewed-by: Mark Brown <broonie@linaro.org> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: sec: Add PM ops and make it a wake up sourceKrzysztof Kozlowski2014-01-211-0/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add PM suspend/resume ops to the sec MFD core driver and make it a wake up source. This allows proper waking from suspend to RAM and also fixes broken interrupts after resuming: [ 42.705703] sec_pmic 7-0066: Failed to read IRQ status: -5 Interrupts stop working after first resume initiated by them (e.g. by RTC Alarm interrupt) because interrupt registers were not cleared properly. When device is woken up from suspend by RTC Alarm, an interrupt occurs before resuming I2C bus controller. The interrupt is handled by regmap_irq_thread which tries to read RTC registers. This read fails (I2C is still suspended) and RTC Alarm interrupt is disabled. Disable the S5M8767 interrupts during suspend (disable_irq()) and enable them during resume so the device will be still woken up but the interrupt won't happen before resuming I2C bus. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: cros ec: i2c: Use consistent function namesThierry Reding2014-01-211-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Rename cros_ec_{probe,remove}_i2c() to cros_ec_i2c_{probe,remove}() for consistency. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
* | | mfd: cros ec: spi: Use consistent function namesThierry Reding2014-01-211-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Rename cros_ec_{probe,remove}_spi() to cros_ec_spi_{probe,remove}() for consistency. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>