summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* arm: mvebu: add pin muxing options for the SDIO interface on Armada 370Thomas Petazzoni2013-02-281-0/+12
| | | | | | | | | | | | | The SDIO interface is available either on pins MPP9/11/12/13/14/15 or MPP47/48/49/50/51/52 on the Armada 370. Even though all combinations are potentially possible, those two muxing options are the most probable ones, so we provide those at the SoC level .dtsi file. In practice, in turns out the Armada 370 DB board uses the former, while the Armada 370 Mirabox uses the latter. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: add DT information for the SDIO interface of Armada 370/XPThomas Petazzoni2013-02-281-0/+8
| | | | | | | | | Now that the mvsdio MMC driver has a Device Tree binding, we add the Device Tree informations to describe the SDIO interface available in the Armada 370/XP SoCs. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: Add RTC support for Armada 370 and Armada XPGregory CLEMENT2013-02-281-0/+6
| | | | | | | | | | | | The Armada 370 and Armada XP Socs have the same controller that the one used in the orion platforms. This patch updates the device tree for these SoCs. Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Acked-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Florian Fainelli <florian@openwrt.org> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: update defconfig with ATAG support when using DTGregory CLEMENT2013-02-281-0/+1
| | | | | | | | | | Some of the mvebu boards (mainly the development board) come with plug-in RAM modules. This patch allows to let the bootloaders which have no support for DTS to give the real amount of memory available on the board. Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: mvebu: Update defconfig to select SPI flash and MTD supportEzequiel Garcia2013-02-281-0/+3
| | | | | | | | The Armada XP DB-MV784MP-GP board has an SPI flash device. These options allow to access that device over MTD. Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: mvebu: Update defconfig to select SPI supportEzequiel Garcia2013-02-281-0/+2
| | | | | | | | Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Lior Amsalem <alior@marvell.com> Acked-by: Gregory Clement <gregory.clement@free-electrons.com> Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: support for the new Armada XP development board(DB-MV784MP-GP)Gregory CLEMENT2013-02-282-0/+102
| | | | | | | | | | | | | | | This is the new Armada XP evaluation board from Marvell. It comes with a RS232 port over USB, a SATA link, an internal SSD, 4 Ethernet Gigabit links. Support for USB (Host and device), SDIO, PCIe will be added as drivers when they become available for Armada XP in mainline. Tested-by: Simon Guinot <simon.guinot@sequanux.org> Tested-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Tested-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: update defconfig with local timer supportGregory CLEMENT2013-02-281-1/+0
| | | | | | | Now that we have support for local timers, enable it by default Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* clocksource: time-armada-370-xp: add local timer supportGregory CLEMENT2013-02-281-38/+112
| | | | | | | | | | On the SOCs Armada 370 and Armada XP, each CPU comes with two private timers. This patch use the timer 0 of each CPU as local timer for the clockevent if CONFIG_LOCAL_TIMER is selected. In the other case, use only the private Timer 0 of CPU 0. Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: Add support for local interruptGregory CLEMENT2013-02-281-4/+11
| | | | | | | | MPIC allows the use of private interrupt for each CPUs. The 28th first interrupts are per-cpu. This patch adds support to use them. Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: Update defconfig to select USB supportEzequiel Garcia2013-02-281-1/+4
| | | | | | | | | | Cc: Lior Amsalem <alior@marvell.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Gregory CLEMENT <gregory.clement@free-electrons.com> Tested-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> Tested-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: kirkwood: convert Guruplug Server Plus to use the device treeWilly Tarreau2013-02-287-0/+151
| | | | | | | | | | Add a device tree entry for the Guruplug Server Plus board. This port was based both on the work done on the dreamplug and the dockstar. It builds, boots and works on my Guruplug Server Plus. Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: add DTS file for Marvell RD-A370-A1 boardFlorian Fainelli2013-02-282-0/+62
| | | | | | | | | | This patch adds the DTS file to support the Marvell RD-A370-A1 (Reference Design board) also known as RD-88F6710 board. It is almost entirely similar to the DB-A370 board except that the first Ethernet PHY is SGMII-wired and the second is a switch which is RGMII-wired. Signed-off-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: Improve the SMP support of the interrupt controllerGregory CLEMENT2013-02-282-1/+73
| | | | | | | | | | | | | This patch makes the interrupt controller driver more SMP aware for the Armada XP SoCs. It adds the support for the per-CPU irq. It also adds the implementation for the set_affinity hook. Patch initialy wrote by Yehuda Yitschak and reworked by Gregory CLEMENT. Signed-off-by: Yehuda Yitschak <yehuday@marvell.com> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: Dove: split legacy and DT setupArnd Bergmann2013-02-284-86/+110
| | | | | | | | | | | | In the beginning of DT for Dove it was reasonable to have it close to non-DT code. With improved DT support, it became more and more difficult to not break non-DT while changing DT code. This patch splits up DT board setup and introduces a DOVE_LEGACY config to allow to remove legacy code for DT-only kernels. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: dove: update dove_defconfig with a few useful optionsOlof Johansson2013-02-281-20/+8
| | | | | | | | | | | | | | | | | This refreshes the dove_defconfig, and adds: PRINTK_TIME DEVTMPFS EXT4 They're quite useful, and allows booting a cubox ubuntu rootfs on SD card, since that by default uses ext4. The rest of the churn is due to options and defaults moving around, no functional difference. Signed-off-by: Olof Johansson <olof@lixom.net> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: Kirkwood: Remove redundent SDIO clock aliasAndrew Lunn2013-02-281-5/+0
| | | | | | | | Now that SDIO is instantiated via DT, and the SDIO DT node has a clocks property, we no longer need a C coded clock alias. Remove it. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* ARM: Kirkwood: Remove redundent USB clock aliasAndrew Lunn2013-02-281-4/+0
| | | | | | | | Now that USB is instantiated via DT, and the USB DT node has a clocks property, we no longer need a C coded clock alias. Remove it. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: add LEDs support to defconfig fileThomas Petazzoni2013-02-281-0/+5
| | | | | | | | | The OpenBlocks AX3-4 platform has several LEDs, so it sounds wise to enable LED support in mvebu_defconfig. We anticipate that more platforms using Marvell EBU SoCs will have LEDs in the future. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: enable btmrvl driver in mvebu_defconfigThomas Petazzoni2013-02-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | The Globalscale Mirabox platform, based on the Armada 370 from Marvell, has a SD8787 Wireless/Bluetooth chip connected on the SDIO interface. Now that the mvsdio has a Device Tree binding, and the necessary Device Tree informations have been added at the SoC and board level, let's enable the btmrvl driver for the Bluetooth part of the SD8787 chip. For now, the driver gets probed correctly, detects the device but apparently fails to push the firmware to the device: Bluetooth: vendor=0x2df, device=0x911a, class=255, fn=2 Bluetooth: FW failed to be active in time! Bluetooth: Downloading firmware failed! Bluetooth: vendor=0x2df, device=0x911b, class=255, fn=3 Bluetooth: FW failed to be active in time! Bluetooth: Downloading firmware failed! This will have to be investigated separately. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: enable mwifiex driver in mvebu_defconfigThomas Petazzoni2013-02-281-0/+3
| | | | | | | | | | | | | | | | | The Globalscale Mirabox platform, based on the Armada 370 from Marvell, has a SD8787 Wireless chip connected on the SDIO interface. Now that the mvsdio has a Device Tree binding, and the necessary Device Tree informations have been added at the SoC and board level, let's enable the mwifiex driver for the Wireless part of the SD8787 chip. For now, the driver gets probed correctly, detects a device and shows the network interfaces. However, scanning Wifi networks doesn't work for now, with a 'CMD_RESP: cmd 0x6 error, result=0x1' message. This will have to be investigated separately. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: enable SDIO support in mvebu_defconfigThomas Petazzoni2013-02-281-0/+2
| | | | | | | | | | Now that the mvsdio driver has gained Device Tree support and the necessary Device Tree informations has been added for Armada 370 and Armada XP platforms, we enable the MMC subsystem and the mvsdio driver in mvebu_defconfig. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* arm: mvebu: Update defconfig with Marvell RTC supportGregory CLEMENT2013-02-281-0/+1
| | | | | | | | | | | The RTC class driver is already part of the mvebu_defconfig but the Marvell internal RTC not yet. Now that its support is added for mvebu let's update the config file. Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Tested-by: Florian Fainelli <florian@openwrt.org> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
* Merge branch 'timer/cleanup' into late/mvebu2Arnd Bergmann2013-02-28531-1510/+939
|\ | | | | | | | | | | | | Basing the mvebu patches on top of the timer cleanup avoids some nasty merges. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
| * ARM: at91: fix board-rm9200-dt after sys_timer conversionJoachim Eastwood2013-01-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After "ARM: delete struct sys_timer" board-rm9200-dt fails compilation with the following error: CC arch/arm/mach-at91/board-rm9200-dt.o arch/arm/mach-at91/board-rm9200-dt.c:50:2: error: unknown field 'timer' specified in initializer arch/arm/mach-at91/board-rm9200-dt.c:50:13: error: 'at91rm9200_timer' undeclared here (not in a function) make[1]: *** [arch/arm/mach-at91/board-rm9200-dt.o] Error 1 make: *** [arch/arm/mach-at91] Error 2 This is a fall out from the timer conversion. Fix it by converting board-rm9200-dt to use new timer init function as well. Signed-off-by: Joachim Eastwood <manabian@gmail.com> Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Olof Johansson <olof@lixom.net>
| * ARM: sunxi: fix struct sys_timer removalStephen Warren2013-01-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Commit 6bb27d7 "ARM: delete struct sys_timer" removed struct sys_timer, but didn't update mach-sunxi/sunxi.c for this change, even though the sunxi timer implementation itself was updated. This caused a build break: arch/arm/mach-sunxi/sunxi.c:94:2: error: unknown field 'timer' specified in initializer arch/arm/mach-sunxi/sunxi.c:94:12: error: 'sunxi_timer' undeclared here (not in a function) Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Olof Johansson <olof@lixom.net>
| * clocksource: add common of_clksrc_init() functionStephen Warren2013-01-025-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | It is desirable to move all clocksource drivers to drivers/clocksource, yet each requires its own initialization function. We'd rather not pollute <linux/> with a header for each function. Instead, create a single of_clksrc_init() function which will determine which clocksource driver to initialize based on device tree. Based on a similar patch for drivers/irqchip by Thomas Petazzoni. Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: delete struct sys_timerStephen Warren2012-12-24495-1224/+629
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that the only field in struct sys_timer is .init, delete the struct, and replace the machine descriptor .timer field with the initialization function itself. This will enable moving timer drivers into drivers/clocksource without having to place a public prototype of each struct sys_timer object into include/linux; the intent is to create a single of_clocksource_init() function that determines which timer driver to initialize by scanning the device dtree, much like the proposed irqchip_init() at: http://www.spinics.net/lists/arm-kernel/msg203686.html Includes mach-omap2 fixes from Igor Grinberg. Tested-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: remove struct sys_timer suspend and resume fieldsStephen Warren2012-12-242-45/+0
| | | | | | | | | | | | | | | | | | | | | | These fields duplicate e.g. struct clock_event_device's suspend and resume fields, so remove them now that nothing is using them. The aim is to remove all fields from struct sys_timer except .init, then replace the ARM machine descriptor's .timer field with a .init_time function instead, and delete struct sys_timer. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: samsung: register syscore_ops for timer resume directlyStephen Warren2012-12-241-1/+6
| | | | | | | | | | | | | | | | | | | | | | Instead of using struct sys_timer's resume function, register syscore_ops directly in s3c2410_timer_init(). This will allow the sys_timer suspend/ resume fields to be removed, and eventually lead to a complete removal of struct sys_timer. Cc: Ben Dooks <ben-linux@fluff.org> Cc: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: ux500: convert timer suspend/resume to clock_event_deviceStephen Warren2012-12-242-20/+20
| | | | | | | | | | | | | | | | | | | | | | Move ux500's timer suspend/resume functions from struct sys_timer ux500_timer into struct clock_event_device nmdk_clkevt. This will allow the sys_timer suspend/resume fields to be removed, and eventually lead to a complete removal of struct sys_timer. Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: sa1100: convert timer suspend/resume to clock_event_deviceStephen Warren2012-12-241-33/+33
| | | | | | | | | | | | | | | | | | Move sa1100's timer suspend/resume functions from struct sys_timer sa1100_timer into struct clock_event_device ckevt_sa1100_osmr0. This will allow the sys_timer suspend/resume fields to be removed, and eventually lead to a complete removal of struct sys_timer. Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: pxa: convert timer suspend/resume to clock_event_deviceStephen Warren2012-12-241-38/+38
| | | | | | | | | | | | | | | | | | | | | | | | Move PXA's timer suspend/resume functions from struct sys_timer pxa_timer into struct clock_event_device ckevt_pxa_osmr0. This will allow the sys_timer suspend/resume fields to be removed, and eventually lead to a complete removal of struct sys_timer. Cc: Russell King <linux@arm.linux.org.uk> Cc: Haojian Zhuang <haojian.zhuang@gmail.com> Acked-by: Eric Miao <eric.y.miao@gmail.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: at91: convert timer suspend/resume to clock_event_deviceStephen Warren2012-12-241-21/+26
| | | | | | | | | | | | | | | | | | | | | | | | Move at91's timer suspend/resume functions from struct sys_timer at91sam926x_timer into struct clock_event_device pit_clkevt. This will allow the sys_timer suspend/resume fields to be removed, and eventually lead to a complete removal of struct sys_timer. Cc: Andrew Victor <linux@maxim.org.za> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * ARM: set arch_gettimeoffset directlyStephen Warren2012-12-2411-46/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | remove ARM's struct sys_timer .offset function pointer, and instead directly set the arch_gettimeoffset function pointer when the timer driver is initialized. This requires multiplying all function results by 1000, since the removed arm_gettimeoffset() did this. Also, s/unsigned long/u32/ just to make the function prototypes exactly match that of arch_gettimeoffset. Cc: Russell King <linux@arm.linux.org.uk> Cc: Andrew Victor <linux@maxim.org.za> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com> Cc: Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ryan Mallon <rmallon@gmail.com> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * m68k: set arch_gettimeoffset directlyStephen Warren2012-12-2421-58/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | remove m68k's mach_gettimeoffset function pointer, and instead directly set the arch_gettimeoffset function pointer. This requires multiplying all function results by 1000, since the removed m68k_gettimeoffset() did this. Also, s/unsigned long/u32/ just to make the function prototypes exactly match that of arch_gettimeoffset. Cc: Joshua Thompson <funaho@jurai.org> Cc: Sam Creasey <sammy@sammy.net> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Phil Blundell <philb@gnu.org> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * time: convert arch_gettimeoffset to a pointerStephen Warren2012-12-248-31/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, whenever CONFIG_ARCH_USES_GETTIMEOFFSET is enabled, each arch core provides a single implementation of arch_gettimeoffset(). In many cases, different sub-architectures, different machines, or different timer providers exist, and so the arch ends up implementing arch_gettimeoffset() as a call-through-pointer anyway. Examples are ARM, Cris, M68K, and it's arguable that the remaining architectures, M32R and Blackfin, should be doing this anyway. Modify arch_gettimeoffset so that it itself is a function pointer, which the arch initializes. This will allow later changes to move the initialization of this function into individual machine support or timer drivers. This is particularly useful for code in drivers/clocksource which should rely on an arch-independant mechanism to register their implementation of arch_gettimeoffset(). This patch also converts the Cris architecture to set arch_gettimeoffset directly to the final implementation in time_init(), because Cris already had separate time_init() functions per sub-architecture. M68K and ARM are converted to set arch_gettimeoffset to the final implementation in later patches, because they already have function pointers in place for this purpose. Cc: Russell King <linux@arm.linux.org.uk> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Mikael Starvik <starvik@axis.com> Cc: Hirokazu Takata <takata@linux-m32r.org> Cc: Thomas Gleixner <tglx@linutronix.de> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> Acked-by: John Stultz <johnstul@us.ibm.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * cris: move usec/nsec conversion to do_slow_gettimeoffsetStephen Warren2012-12-242-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Move usec to nsec conversion from arch_gettimeoffset() to do_slow_gettimeoffset(); in a future patch, do_slow_gettimeoffset() will be used directly as the implementation of arch_gettimeoffset(), so needs to perform all required calculations. Cc: Mikael Starvik <starvik@axis.com> Cc: linux-cris-kernel@axis.com Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
* | Merge 'mmc/upstream' into late/mvebu2Arnd Bergmann2013-02-28250-1180/+2095
|\ \ | | | | | | | | | | | | | | | | | | These patches from the mmc tree were merged into v3.9 already and the later mvebu patches depend on them. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
| * | mmc: mvsdio: add pinctrl integrationThomas Petazzoni2013-02-241-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On many Marvell SoCs, the pins used for the SDIO interface are part of the MPP pins, that are muxable pins. In order to get the muxing of those pins correct, this commit integrates the mvsdio driver with the pinctrl infrastructure by calling devm_pinctrl_get_select_default() during ->probe(). Note that we permit this function to fail because not all Marvell platforms have yet been fully converted to using the pinctrl infrastructure. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Stefan Peter <s.peter@mpl.ch> Tested-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: mvsdio: implement a Device Tree bindingThomas Petazzoni2013-02-112-15/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a simple Device Tree binding for the mvsdio driver, as well as the necessary documentation for it. Compatibility with non-DT platforms is preserved, by keeping the platform_data based initialization. We introduce a small difference between non-DT and DT platforms: DT platforms are required to provide a clocks = <...> property, which the driver uses to get the frequency of the clock that goes to the SDIO IP. The behaviour on non-DT platforms is kept unchanged: a clock reference is not mandatory, but the clock frequency must be passed in the "clock" field of the mvsdio_platform_data structure. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Stefan Peter <s.peter@mpl.ch> Tested-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: mvsdio: use slot-gpio for card detect gpioThomas Petazzoni2013-02-111-30/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The MMC core subsystem provides in drivers/mmc/core/slot-gpio.c a nice set of helper functions to simplify the management of the card detect GPIO in MMC host drivers. This patch migrates the mvsdio driver to using those helpers, which will make the ->probe() code simpler, and therefore ease the process of adding a Device Tree binding for this driver. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Stefan Peter <s.peter@mpl.ch> Tested-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: mvsdio: use slot-gpio infrastructure for write protect gpioThomas Petazzoni2013-02-111-25/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The MMC core subsystem provides in drivers/mmc/core/slot-gpio.c a nice set of helper functions to simplify the management of the write protect GPIO in MMC host drivers. This patch migrates the mvsdio driver to using those helpers, which will make the ->probe() code simpler, and therefore ease the process of adding a Device Tree binding for this driver. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Stefan Peter <s.peter@mpl.ch> Tested-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: sdhci-esdhc-imx: remove ESDHC_CD_GPIO handling from IO accessoryShawn Guo2013-02-111-17/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | With commit 9444e07 (mmc: remove unncessary mmc_gpio_free_cd() call from slot-gpio users) in place, the ESDHC_CD_GPIO handling in IO accessories becomes unnecessary. Remove it. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: sdhci: introduce sdhci_update_clock helper to re-enable clockAndy Shevchenko2013-02-111-14/+13
| | | | | | | | | | | | | | | | | | | | | | | | There are three places where same piece of code is used. Let's split it to a separate function. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: sdhci-pxav3: add IRQ wake up supportKevin Liu2013-02-111-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | [cjb: The MMP3 architecture requires a registered interrupt to retire wfi when waking from suspend.] Signed-off-by: Jialing Fu <jlfu@marvell.com> Signed-off-by: Kevin Liu <kliu5@marvell.com> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: sdhci: add IRQ wake up supportKevin Liu2013-02-111-18/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | Don't disable SD Host IRQ during suspend if it is wake up source. Enable wakeup event during suspend. Signed-off-by: Jialing Fu <jlfu@marvell.com> Signed-off-by: Kevin Liu <kliu5@marvell.com> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: sdhci: disable interrupt before free_irqKevin Liu2013-02-111-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current code missed disabling interrupts before free irq which is shared. Notice below comments for function free_irq (kernel/irq/manage.c): On a shared IRQ the caller must ensure the interrupt is disabled on the card it drives before calling this function. Original code has below issue during suspend/resume when multiple SD hosts share the same IRQ: 1. Assume there are two hosts (host1 for emmc while host2 for sd) share the same mmc irq. 2. When system suspend, host2 will be suspended before host1. So the sequence is below: step1: irq handler for host2 removed -> step2: irq handler for host1 removed and irq disabled -> ... system suspended ... ... system resumed ... step3: irq enabled and the irq handler for host1 restored -> step4: irq handler for host2 restored 3. So there is the buggy time slot that the irq is enabled but the irq handler for host2 is removed. Then host2 interrupt can be triggered but can't be handled at that moment. Signed-off-by: Jialing Fu <jlfu@marvell.com> Signed-off-by: Kevin Liu <kliu5@marvell.com> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: add BCM2835 driverStephen Warren2013-02-114-0/+257
| | | | | | | | | | | | | | | | | | | | | | | | Add a very simple driver for the BCM2835 SoC, which is used in the Raspberry Pi board. Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> Signed-off-by: Chris Ball <cjb@laptop.org>
| * | mmc: fix async request mechanism for sequential read scenariosKonstantin Dorfman2013-02-119-19/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When current request is running on the bus and if next request fetched by mmcqd is NULL, mmc context (mmcqd thread) gets blocked until the current request completes. This means that if new request comes in while the mmcqd thread is blocked, this new request can not be prepared in parallel to current ongoing request. This may result in delaying the new request execution and increase it's latency. This change allows to wake up the MMC thread on new request arrival. Now once the MMC thread is woken up, a new request can be fetched and prepared in parallel to the current running request which means this new request can be started immediately after the current running request completes. With this change read throughput is improved by 16%. Signed-off-by: Konstantin Dorfman <kdorfman@codeaurora.org> Reviewed-by: Seungwon Jeon <tgih.jun@samsung.com> Signed-off-by: Chris Ball <cjb@laptop.org>