aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd
AgeCommit message (Collapse)AuthorFilesLines
2013-02-13mfd: omap-usb-host: clean up omap_usbhs_init()Roger Quadros1-46/+79
We split initializing revision 1 and revision 2 into different functions. Initialization is now done dynamically so that only the number of ports available on the system are initialized. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: Get rid of unnecessary spinlockRoger Quadros1-16/+0
The driver does not have an interrupt handler and we don't really need a spinlock, so get rid of it. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: Manage HSIC clocks for HSIC modeRoger Quadros1-13/+82
Enable the optional HSIC clocks (60MHz and 480MHz) for the ports that are configured in HSIC mode. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: cleanup clock management codeRoger Quadros1-80/+106
All ports have similarly named port clocks so we can bunch them into a port data structure and use for loop to enable/disable the clocks. Dynamically allocate and get clocks based on number of ports available on the platform Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: override number of ports from platform dataRoger Quadros1-13/+21
Both OMAP4 and 5 exhibit the same revision ID in the REVISION register but they have different number of ports i.e. 2 and 3 respectively. So we can't rely on REVISION register for number of ports on OMAP5 and depend on platform data (or device tree) instead. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: know about number of ports from revision registerRoger Quadros1-5/+28
The revision register should tell us how many ports are present. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: Use devm_kzalloc() and devm_request_and_ioremap()Roger Quadros1-27/+11
Use devm_ variants of kzalloc and ioremap. Also clean up error path. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap_usb_host: Avoid missing platform data checks in suspend/resumeRoger Quadros1-10/+0
Get rid of the unnecessary missing platform data checks in runtime_suspend/resume. We are already checking for missing platform data in probe. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: Add OMAP5 revision and HSIC supportRoger Quadros1-0/+14
The TLL module on OMAP5 has 3 channels. HSIC mode requires the TLL channel to be in Transparent UTMI mode. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: serialize access to TLL deviceRoger Quadros1-26/+27
Get rid of the unnecessary spin_lock_irqsave/restore() as there is no interrupt handler for this driver. Instead we serialize access to tll_dev using a global spinlock. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: Fix error messageRoger Quadros1-9/+12
omap_enable/disable_tll() can fail if TLL device is not initialized. It could be due to multiple reasons and not only due to missing platform data. Also make local variables static and use 'struct device *' instead of 'struct platform_device *' for global reference. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: Check for missing platform data in probeRoger Quadros1-10/+5
No need to check for missing platform data in runtime_suspend/resume as it makes more sense to do it in the probe function. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: introduce and use mode_needs_tll()Roger Quadros1-8/+12
This is a handy macro to check if the port requires the USB TLL module or not. Use it to Enable the TLL module and manage the clocks. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: Clean up clock handlingRoger Quadros1-33/+54
Every channel has a functional clock that is similarly named. It makes sense to use a for loop to manage these clocks as OMAPs can come with up to 3 channels. Dynamically allocate and get channel clocks depending on the number of clocks avaiable on the platform. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
2013-02-13mfd: omap-usb-tll: Use devm_kzalloc/ioremap and clean up error pathRoger Quadros1-26/+12
Use devm_ variants of kzalloc() and ioremap(). Simplify the error path. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-tll: Fix channel count detectionRoger Quadros1-9/+11
Fix channel count detecion for REV2. Also, don't give up if we don't recognize the IP Revision. We assume the default number of channels (i.e. 3) for unrecognized IPs. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com>
2013-02-13mfd: omap-usb-host: Consolidate OMAP USB-HS platform data (part 2/3)Roger Quadros2-43/+31
Let's have a single platform data structure for the OMAP's High-Speed USB host subsystem instead of having 3 separate ones i.e. one for board data, one for USB Host (UHH) module and one for USB-TLL module. This makes the code much simpler and avoids creating multiple copies of platform data. Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com> For the ehci-omap.c part: Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-02-12Merge branch 'fixes-for-3.9' into next/fixes-non-criticalOlof Johansson1-1/+1
This is a branch of fixes that originally were scheduled for 3.8 but due to the request from Linus to hold back on all but the most critical of fixes, we're re-queueing them for 3.9 here. * fixes-for-3.9: ARM: dts: imx6: fix fec ptp clock slow 10 time ARM: highbank: mask cluster id from cpu_logical_map ARM: scu: mask cluster id from cpu_logical_map ARM: scu: add empty scu_enable for !CONFIG_SMP ARM: at91/at91sam9x5.dtsi: fix usart3 TXD ARM: at91: at91sam9x5: fix usart3 pinctrl name ARM: EXYNOS: Fix crash on soft reset on EXYNOS5440 ARM: dts: fix tick and alarm irq numbers for exynos5440 ARM: dts: fix compatible value for exynos pinctrl ARM: dts: Fix compatible value of pinctrl module on EXYNOS5440 ARM: S3C24XX: fix uninitialized variable warning mfd/vexpress: vexpress_sysreg_setup must not be __init ARM: ux500: Fix u9540 booting issues arm: mvebu: i2c come back in defconfig arm: plat-orion: fix printing of "MPP config unavailable on this hardware" Dove: activate GPIO interrupts in DT ARM: ux500: add spin_unlock(&master_lock). ARM: ux500: Disable Power Supply and Battery Management by default Signed-off-by: Olof Johansson <olof@lixom.net>
2013-02-12Merge tag 'for-arm-soc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into next/cleanupOlof Johansson1-42/+78
From Linus Walleij: Two fixes for broken <mach/id.h> cleanup. * tag 'for-arm-soc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson: mfd: db8500-prcmu: update resource passing drivers/db8500-cpufreq: delete dangling include Signed-off-by: Olof Johansson <olof@lixom.net>
2013-02-12mfd: db8500-prcmu: update resource passingLinus Walleij1-42/+78
When trying to get rid of the cross-includes of <mach/id.h> from different drivers, so we can localize ASIC/CPU detection to the mach-ux500 folder, we run into the way the PRCMU handles base addresses and firmware detection. This patch updates the firmware version detection to pass the required information as platform data instead of relying on cpu_is_* macros. Now the PRCMU base address, the secondary TCDM area, the TCPM area and the IRQ are passed as resources instead of being grabbed from <mach/*> files. Incidentally this also removes part of the reliance on <mach/irqs.h>. Further it updates the firmware version detection, since the location of the firmware ID bytes in the designated memory are is now passed from the platform data instead. There is no reason not to include the nice split-off of a struct to hold the firmware information and a separate function to populate it. The patch actually rids the need to use the external db8500_prcmu_early_init call at all, but I'm keepin back that removal as I don't want the patch to be too big. Cc: arm@kernel.org Cc: Michel Jaoen <michel.jaouen@stericsson.com> Cc: Lee Jones <lee.jones@linaro.org> Acked-by: Samuel Ortiz <sameo@linux.intel.com> Acked-by: Loic Pallardy <loic.pallardy@stericsson.com> Acked-by: Fabio Baltieri <fabio.baltieri@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2013-02-09Merge tag 'v3.8-rc6' into next/cleanupOlof Johansson17-69/+216
Linux 3.8-rc6
2013-02-08mfd: ab8500: allow AB9540 based devices to use ABX500 pinctrlLee Jones1-1/+2
The old AB8500 GPIO driver has been un-BROKEN and converted into a multi-platform pinctrl driver. If any AB9540 based devices wish to request any GPIO pins that it offers, they can after this patch. Cc: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2013-02-08mfd: ab8500: ensure new AB8500 pinctrl driver is probed correctlyLee Jones1-1/+1
The old, BROKEN AB8500 GPIO driver has been revamped as a shiny new pinctrl driver and has been renamed as such. So, if we would like to make use of it, we need to register it via its new name. Cc: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2013-02-08mfd: ab8500: provide a irq_set_type() functionLee Jones1-0/+6
In the AB8500 IRQ mask and unmask functions, we rely on testing for IRQ_TYPE_EDGE_RISING and IRQ_TYPE_EDGE_FALLING interrupts to physically mask and unmask the correct interrupt lines. In order for us to do that, the trigger needs to be set in the associated flags. However, unless a irq_set_type() function pointer is passed when registering the IRQ chip, the IRQ subsystem will refuse to do it. For that reason, we're providing one. Cc: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2013-02-08mfd: ab8500: actually handle the AB8500 GPIO IRQs correctlyLinus Walleij1-3/+19
The patch: "mfd: ab8500: prepare to handle AB8500 GPIO's IRQs correctly" altered the AB8500 IRQ mask/unmask functions such that they would handle masking on/off the falling edge IRQ if this was requested by the consumer. However the bit mask for hwirqs 43 and 44 was shifting the bit mask incorrectly, resulting in the wrong IRQ being mased/unmasked. Further while the patch would mask/unmask the correct line, when the interrupt actually came in, it would still be treated as a valid hwirq. The offsetting applied when masking/unmasking was not applied when handling the IRQ, i.e. the falling edge lines were not routed back to the rising edge lines. This fixes both cases. The end result has been tested with the SIM detect IRQ, GPIO12, hwirq 46 and 62. Cc: Samuel Ortiz <sameo@linux.intel.com> Cc: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
2013-02-08mfd: ab8500: prepare to handle AB8500 GPIO's IRQs correctlyLee Jones1-1/+25
In an upcoming patch, the gpio-ab8500 driver will relinquish all IRQ handling capability and pass it back into the AB8500 core driver. This will aid in reducing massive code duplication within the kernel. Also, most of the functionality is already in the AB8500 core driver, as the GPIO IRQs are actually sandwiched between lots of other IRQs which the core driver already handles. All we're doing here is providing the core driver with knowledge that each GPIO has two IRQs assigned to it; one for rising and a separate one for falling. Cc: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2013-02-04regulator: s5m8767: Fix build in non-DT caseMark Brown1-1/+1
Fix drift in DT parsing function name in the stub code. Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2013-02-04regulator: add device tree support for s5m8767Amit Daniel Kachhap1-1/+72
This device tree support is added for PMIC block of S5m8767 multi function driver. The usage detail is added in the device tree documentation section. This change is tested on exynos5250 based arndale platform by regulator voltage set/get API's. Reviewed-by: Thomas Abraham <thomas.abraham@linaro.org> Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com> Tested-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2013-02-04mfd: ab8500-gpadc: Use new ab8500_gpadc_get() with name parameterPhilippe Langlais1-13/+13
The new format of ab8500_gpadc_get() accepts a device name as a parameter to specify which device to retrieve. This patch enforces the use of that new format. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org>
2013-02-04mfd: ab8500-gpadc: Remove unused 'struct ab8500_gpadc'Lee Jones1-2/+0
The ab8500_gpadc structure carries lots of important information which most functions make good use of. The initial expectation was that ab8500_gpadc_runtime_idle() would be no exception; however, this hasn't been the case to date. Let's remove it for now and add it back in only when we have a use for it. Signed-off-by: Lee Jones <lee.jones@linaro.org>
2013-02-04mfd: ab8500-gpadc: Reduce conversion timeoutLee Jones1-1/+4
Reduce the conversion timeout from 2s to 0.5s Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Reviewed-by: Karl KOMIEROWSKI <karl.komierowski@stericsson.com>
2013-02-04mfd: ab8500-debugfs: sizeof() mismatch bugfixAshok G1-1/+1
Simple pointer error fix to obtain the expected sizeof() result. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Ashok G <ashok.g@stericsson.com> Reviewed-by: Mattias WALLIN <mattias.wallin@stericsson.com>
2013-02-04mfd: ab8500-gpadc: Add runtime pm supportLee Jones1-6/+64
Add runtime pm support to speed up multiple ADC reads in a row. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Reviewed-by: Ulf HANSSON <ulf.hansson@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Add interrupt debugBengt Jonsson2-0/+50
This patch adds an entry in debugfs to check number of interrupts from the AB. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Bengt Jonsson <bengt.g.jonsson@stericsson.com> Reviewed-by: Rabin VINCENT <rabin.vincent@stericsson.com>
2013-02-04mfd ab8500-gpadc: Introduce new AB version detectionMichel JAOUEN1-11/+4
Add support for AB8505 and AB9540 Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Maxime Coquelin <maxime.coquelin@stericsson.com> Signed-off-by: Bengt Jonsson <bengt.g.jonsson@stericsson.com> Reviewed-by: Rabin VINCENT <rabin.vincent@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Allow number of IRQs to be provided more dynamicallyLinus Walleij1-10/+41
With the introduction of new AB* platforms, it's important to allow as much code reuse as possible. By allowing a system's number of IRQs to be dynamically passed, we can reuse almost all of the -debugfs driver. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
2013-02-04mfd: ab8500-core: Allow the possibility to dump all AB8500 registersMian Yousaf Kaukab2-0/+14
Implement an API so that a user may dump all AB8500 registers via debugfs file access. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Reviewed-by: Linus WALLEIJ <linus.walleij@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
2013-02-04mfd: ab8500-debugfs: add debugfs node to read all registersMian Yousaf Kaukab1-14/+81
Update the ab8500_registers_print() to reuse it from multiple places. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Reviewed-by: Linus WALLEIJ <linus.walleij@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Set the USB charging current to 300mA for ABV3Philippe Langlais1-2/+24
In case of AB-V3, the eye diagram related issues are resolved. So, set the device charging current to 300mA when connected to standard host. Also, add the USB PHY tuning values to improve the USB eye diagram Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: <thirupathi.chippakurthy@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Export all AB8500 ADCs as debugfs nodesJohn Beckett1-21/+465
Allow a user to take a glimpse into the inner workings of the AB8500 Analogue-to-Digital Converters, via debugfs. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: John Beckett <john.beckett@stericsson.com> Reviewed-by: Mattias WALLIN <mattias.wallin@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Formated access AB8500 registers from debugfs entrycarriere etienne1-50/+336
Add debugfs entry ab8500/hwreg to read/write bit-field in AB8500 registers. Check the debugfs entries usage from heading comments in ab8500-debugfs.c Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: carriere etienne <etienne.carriere@stericsson.com> Reviewed-by: Mattias WALLIN <mattias.wallin@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Use NULL to initialise remaining NULL pointerLee Jones1-1/+1
Partly for coding style reasons, but mostly because sparse warns on it. This patch is a completion of a previous patch by Mark Brown. Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
2013-02-04mfd: ab8500-debugfs: Keep count of IRQs in debugfsMattias Wallin1-24/+53
This patch adds a counter to the sysfs file dynamically created by debugfs. It also fixes an array index error. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Mattias Wallin <mattias.wallin@stericsson.com> Reviewed-by: Mattias NILSSON <mattias.i.nilsson@stericsson.com>
2013-02-04mfd: ab8500-debugfs: Provide a means for a user subscribe to IRQsLee Jones1-0/+198
Allow users to subscribe to and view IRQ events live from debugfs. Signed-off-by: Lee Jones <lee.jones@linaro.org>
2013-02-04mfd: abx500-core: Provide an API to dump all ABx500 registersMian Yousaf Kaukab1-0/+16
Some drivers can detect subsystem failures e.g. shared memory driver can detect modem sub system failures. It would be helpful in analyzing these failures if AB register dump is available at that point. This patch adds the API for the drivers to dump AB registers in the kernel log. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Reviewed-by: Linus WALLEIJ <linus.walleij@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
2013-02-04mfd: ab8500-sysctrl: export read/write symbolsJonas Aaberg1-0/+2
Export ab8500_sysctrl_read() and ab8500_sysctrl_write() symobols. They will be used by LTP test cases. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Reviewed-by: Bengt JONSSON <bengt.g.jonsson@stericsson.com>
2013-02-04mfd: ab8500-sysctrl: Provide configuration for SysClkReqRfClkBuf registersKennet Wallden1-0/+24
Add the possibility to pass configuration settings for SysCl1kReqRfClkBuf to SysClk8ReqRfClkBuf via platform data. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Kennet Wallden <kennet.wallden@stericsson.com> Reviewed-by: Karl-Johan PERNTZ <karl-johan.perntz@stericsson.com> Reviewed-by: Bengt JONSSON <bengt.g.jonsson@stericsson.com>
2013-02-04mfd: ab8500-gpadc: Change to usleep_range() for greater resolutionLee Jones1-1/+1
The resolution of msleep is related to HZ, so with HZ set to 100 any msleep of less than 10ms will become ~10ms. Signed-off-by: Lee Jones <lee.jones@linaro.org>
2013-02-04mfd: ab8500-sysctrl.c: Provide charging as reset reasonJonas Aaberg1-1/+1
It's possible to supply a string to provide a reason for triggering a restart. In this case our reason is to enter charging-only mode, as a charger was found to be present. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Reviewed-by: Karl KOMIEROWSKI <karl.komierowski@stericsson.com>
2013-02-04mfd: ab8500-sysctrl: Only reboot into charging mode if battery type is knownJonas Aaberg1-5/+22
When a charger is connected, we usually want AB8500 based systems to reboot into charging-only mode. However, if the battery type cannot be identified this would be futile, so we'll just shut the system down instead. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Reviewed-by: Karl KOMIEROWSKI <karl.komierowski@stericsson.com>