- 05 9月, 2012 1 次提交
-
-
由 Paul Walmsley 提交于
After commit 26b88520 ("mmc: omap_hsmmc: remove private DMA API implementation"), the Nokia N800 here stopped booting: [ 2.086181] Waiting for root device /dev/mmcblk0p1... [ 2.324066] Unhandled fault: imprecise external abort (0x406) at 0x00000000 [ 2.331451] Internal error: : 406 [#1] ARM [ 2.335784] Modules linked in: [ 2.339050] CPU: 0 Not tainted (3.6.0-rc3 #60) [ 2.344146] PC is at default_idle+0x28/0x30 [ 2.348602] LR is at trace_hardirqs_on_caller+0x15c/0x1b0 ... This turned out to be due to memory corruption caused by long-broken PIO code in drivers/mmc/host/omap.c. (Previously, this driver had been using DMA; but the above commit caused the MMC driver to fall back to PIO mode with an unmodified Kconfig.) The PIO code, added with the rest of the driver in commit 730c9b7e ("[MMC] Add OMAP MMC host driver"), confused bytes with 16-bit words. This bug caused memory located after the PIO transfer buffer to be corrupted with transfers larger than 32 bytes. The driver also did not increment the buffer pointer after the transfer occurred. This bug resulted in data corruption during any transfer larger than 64 bytes. Signed-off-by: NPaul Walmsley <paul@pwsan.com> Reviewed-by: NFelipe Balbi <balbi@ti.com> Tested-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
- 31 7月, 2012 2 次提交
-
-
由 Russell King 提交于
Remove the private DMA API implementation from omap, making it use entirely the DMA engine API. Tested-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
Add DMA engine support to the OMAP driver. This supplements the private DMA API implementation contained within this driver, and the driver can be switched at build time between using DMA engine and the private DMA API. Tested-by: NTony Lindgren <tony@atomide.com> Acked-by: NLinus Walleij <linus.walleij@linaro.org> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 06 6月, 2012 3 次提交
-
-
由 Tony Lindgren 提交于
Commit fa550189 (mmc: core: Prevent eMMC VCC supply to be cut from late init) slightly affected timings for how things are done for the omap MMC driver causing the MMC cards not getting detected any longer. Turns out this was caused by buggy reg_shift initialization in the omap MMC driver that was happening after mmc_add_host() was being called. Fix this by initializing reg_shift before mmc_add_host() is called. Signed-off-by: NTony Lindgren <tony@atomide.com> Cc: <stable@vger.kernel.org> Signed-off-by: NChris Ball <cjb@laptop.org>
-
由 Tony Lindgren 提交于
Commit b01a4f1c (mmc: omap: convert to per instance workqueue) initializes the workqueue too late causing the following: Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c0004000 [00000000] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 Not tainted (3.4.0-08218-gb48b2c3e #158) PC is at __queue_work+0x8/0x46c LR is at queue_work_on+0x38/0x40 pc : [<c005bb4c>] lr : [<c005c00c>] psr: 60000193 sp : c0691e1c ip : 00000000 fp : c07374ac r10: c7aae400 r9 : c0395700 r8 : 00000100 r7 : c0691e70 r6 : 00000000 r5 : 00000000 r4 : c7aae440 r3 : 00000001 r2 : c7aae440 r1 : 00000000 r0 : 00000000 Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 00c5387d Table: 80004000 DAC: 00000017 Process swapper/0 (pid: 0, stack limit = 0xc06902f8) Stack: (0xc0691e1c to 0xc0692000) Fix this by initializing the workqueue before mmc_omap_remove_slot() get called. Tested on n770, looks like n800 at least still has some other issue with MMC. Signed-off-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
由 Tony Lindgren 提交于
Commit b6e0703b (mmc: omap: make it behave well as a module) made some __devinit changes but missed one function causing a section warning: WARNING: vmlinux.o(.devinit.text+0x8604): Section mismatch in reference from the function mmc_omap_probe) The function __devinit mmc_omap_probe() references a function __init mmc_omap_new_slot(). Signed-off-by: NTony Lindgren <tony@atomide.com> Acked-by: NFelipe Balbi <balbi@ti.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
- 17 5月, 2012 3 次提交
-
-
由 Venkatraman S 提交于
Get rid of boilerplate code by using module_platform_driver macro, no functional changes. Signed-off-by: NVenkatraman S <svenkatr@ti.com> Acked-by: NBalaji T K <balajitk@ti.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
由 Venkatraman S 提交于
Use proper __devinit and __devexit annotation for driver functions. Instantiate the probe function for driver_ops instead of a probe in the register function. Signed-off-by: NVenkatraman S <svenkatr@ti.com> Acked-by: NBalaji T K <balajitk@ti.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
由 Venkatraman S 提交于
Currently, a global mmc_omap_wq is created for all instances of omap hosts, which can lead to races and doesn't lend itself to unload the module cleanly. Instead, create per instance workqueue and remove the common workqueue. Signed-off-by: NVenkatraman S <svenkatr@ti.com> Acked-by: NBalaji T K <balajitk@ti.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
- 02 1月, 2012 1 次提交
-
-
由 Al Viro 提交于
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk> Signed-off-by: NJiri Kosina <jkosina@suse.cz>
-
- 08 8月, 2011 1 次提交
-
-
由 Russell King 提交于
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 28 4月, 2011 1 次提交
-
-
由 Michael Buesch 提交于
Either OMAP_MMC_STAT_CARD_ERR or OMAP_MMC_STAT_END_OF_CMD might fire if there is no host->cmd pointer. Check for a valid host->cmd pointer before calling mmc_omap_cmd_done(). Signed-off-by: NMichael Buesch <mb@bu3sch.de> Acked-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
- 23 3月, 2011 1 次提交
-
-
由 Chris Ball 提交于
Signed-off-by: NChris Ball <cjb@laptop.org> Cc: Jarkko Lavinen <jarkko.lavinen@nokia.com> Cc: Tony Lindgren <tony@atomide.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 24 12月, 2010 1 次提交
-
-
由 Tejun Heo 提交于
Workqueue creation API has been updated and flush_scheduled_work() is deprecated and scheduled to be removed. * core/core.c: Use alloc_ordered_workqueue() instead of create_singlethread_workqueue(). This removes an unnecessary rescuer. * host/omap.c: Create, use and flush mmc_omap_wq instead of the system_wq. * Flush host->mmc_carddetect_work directly on removal instead of using flush_scheduled_work(). Signed-off-by: NTejun Heo <tj@kernel.org> Cc: Chris Ball <cjb@laptop.org> Cc: linux-mmc@vger.kernel.org
-
- 23 10月, 2010 1 次提交
-
-
由 Martin K. Petersen 提交于
We have deprecated the distinction between hardware and physical segments in the block layer. Consolidate the two limits into one in drivers/mmc/. Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com> Signed-off-by: NChris Ball <cjb@laptop.org>
-
- 05 10月, 2010 1 次提交
-
-
由 Tony Lindgren 提交于
A patch from Sukumar Ghorai <s-ghorai@ti.com> changed the nwires to use caps instead. However, nwires is still needed for the earlier controller. Signed-off-by: NTony Lindgren <tony@atomide.com> Acked-by: NSukumar Ghorai <s-ghorai@ti.com> Signed-off-by: NMing Lei <tom.leiming@gmail.com>
-
- 28 9月, 2010 1 次提交
-
-
由 Sukumar Ghorai 提交于
wires variable is renamed, extended and this single variable to be used to pass the platform capabilities, e.g DDR mode. Also removed the hardcoded value was using as bus-width. Signed-off-by: NSukumar Ghorai <s-ghorai@ti.com> Signed-off-by: NTony Lindgren <tony@atomide.com>
-
- 05 6月, 2010 1 次提交
-
-
由 Cory Maccarrone 提交于
Remove a BUG_ON for when interrupts are disabled during an MMC request. During boot, interrupts can be disabled when a request is made, causing this bug to be triggered. In reality, there's no reason this should halt the kernel, as the driver has proved reliable in spite of disabled interrupts, and additionally, there's nothing in this code that would require interrupts to be enabled. The only setup I've managed to make it trigger on is on the HTC Herald during bootup when the driver is built into the kernel (mostly because that's all I have). I believe it's related to the fact that on bootup I get many timeout errors on "CMD5" while initializing the card. Each CMD5 timeout triggers that bug (I changed it to a WARN_ON to get it to boot in) due to the fact that part of the timeout code involves sending the request again. With interrupts turned off, that BUG would be triggered. Signed-off-by: NCory Maccarrone <darkstar6262@gmail.com> Acked-by: NTony Lindgren <tony@atomide.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 28 5月, 2010 2 次提交
-
-
由 Matt Fleming 提交于
Even though many mmc host drivers pass a pm_message_t argument to mmc_suspend_host() that argument isn't used the by MMC core. As host drivers are converted to dev_pm_ops they'll have to construct pm_message_t's (as they won't be passed by the PM subsystem any more) just to appease the mmc suspend interface. We might as well just delete the unused paramter. Signed-off-by: NMatt Fleming <matt@console-pimps.org> Acked-by: NAnton Vorontsov <cbouatmailru@gmail.com> Acked-by: Michal Miroslaw <mirq-linux@rere.qmqm.pl>ZZ Acked-by: NSascha Sommer <saschasommer@freenet.de> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
由 Marek Belisko 提交于
The omap850 and omap730 use 16-bit registers instead of 32-bit, requiring a modification of the register addresses in the mmc-omap driver. To resolve this, a bit shift is performed on base register addresses, either by 1 or 2 bits depending on the CPU in use. This yields the correct registers for each CPU. Signed-off-by: NMarek Belisko <marek.belisko@open-nandra.com> Signed-off-by: NCory Maccarrone <darkstar6262@gmail.com> Signed-off-by: NTony Lindgren <tony@atomide.com> Cc: Ladislav Michl <ladis@linux-mips.org> Cc: Ben Dooks <ben@fluff.org> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 30 3月, 2010 1 次提交
-
-
由 Tejun Heo 提交于
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h percpu.h is included by sched.h and module.h and thus ends up being included when building most .c files. percpu.h includes slab.h which in turn includes gfp.h making everything defined by the two files universally available and complicating inclusion dependencies. percpu.h -> slab.h dependency is about to be removed. Prepare for this change by updating users of gfp and slab facilities include those headers directly instead of assuming availability. As this conversion needs to touch large number of source files, the following script is used as the basis of conversion. http://userweb.kernel.org/~tj/misc/slabh-sweep.py The script does the followings. * Scan files for gfp and slab usages and update includes such that only the necessary includes are there. ie. if only gfp is used, gfp.h, if slab is used, slab.h. * When the script inserts a new include, it looks at the include blocks and try to put the new include such that its order conforms to its surrounding. It's put in the include block which contains core kernel includes, in the same order that the rest are ordered - alphabetical, Christmas tree, rev-Xmas-tree or at the end if there doesn't seem to be any matching order. * If the script can't find a place to put a new include (mostly because the file doesn't have fitting include block), it prints out an error message indicating which .h file needs to be added to the file. The conversion was done in the following steps. 1. The initial automatic conversion of all .c files updated slightly over 4000 files, deleting around 700 includes and adding ~480 gfp.h and ~3000 slab.h inclusions. The script emitted errors for ~400 files. 2. Each error was manually checked. Some didn't need the inclusion, some needed manual addition while adding it to implementation .h or embedding .c file was more appropriate for others. This step added inclusions to around 150 files. 3. The script was run again and the output was compared to the edits from #2 to make sure no file was left behind. 4. Several build tests were done and a couple of problems were fixed. e.g. lib/decompress_*.c used malloc/free() wrappers around slab APIs requiring slab.h to be added manually. 5. The script was run on all .h files but without automatically editing them as sprinkling gfp.h and slab.h inclusions around .h files could easily lead to inclusion dependency hell. Most gfp.h inclusion directives were ignored as stuff from gfp.h was usually wildly available and often used in preprocessor macros. Each slab.h inclusion directive was examined and added manually as necessary. 6. percpu.h was updated not to include slab.h. 7. Build test were done on the following configurations and failures were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my distributed build env didn't work with gcov compiles) and a few more options had to be turned off depending on archs to make things build (like ipr on powerpc/64 which failed due to missing writeq). * x86 and x86_64 UP and SMP allmodconfig and a custom test config. * powerpc and powerpc64 SMP allmodconfig * sparc and sparc64 SMP allmodconfig * ia64 SMP allmodconfig * s390 SMP allmodconfig * alpha SMP allmodconfig * um on x86_64 SMP allmodconfig 8. percpu.h modifications were reverted so that it could be applied as a separate patch and serve as bisection point. Given the fact that I had only a couple of failures from tests on step 6, I'm fairly confident about the coverage of this conversion patch. If there is a breakage, it's likely to be something in one of the arch headers which should be easily discoverable easily on most builds of the specific arch. Signed-off-by: NTejun Heo <tj@kernel.org> Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
-
- 16 12月, 2009 1 次提交
-
-
由 Ladislav Michl 提交于
Remove check for host->iclk being NULL from error path since we already know it is non-null and use return value from clk_get. Signed-off-by: NLadislav Michl <ladis@linux-mips.org> Acked-by: NTony Lindgren <tony@atomide.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 12 11月, 2009 1 次提交
-
-
由 Ladislav Michl 提交于
Free IRQ on remove. Signed-off-by: NLadislav Michl <ladis@linux-mips.org> Acked-by: NTony Lindgren <tony@atomide.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 21 10月, 2009 1 次提交
-
-
由 Tony Lindgren 提交于
Move the remaining headers under plat-omap/include/mach to plat-omap/include/plat. Also search and replace the files using these headers to include using the right path. This was done with: #!/bin/bash mach_dir_old="arch/arm/plat-omap/include/mach" plat_dir_new="arch/arm/plat-omap/include/plat" headers=$(cd $mach_dir_old && ls *.h) omap_dirs="arch/arm/*omap*/ \ drivers/video/omap \ sound/soc/omap" other_files="drivers/leds/leds-ams-delta.c \ drivers/mfd/menelaus.c \ drivers/mfd/twl4030-core.c \ drivers/mtd/nand/ams-delta.c" for header in $headers; do old="#include <mach\/$header" new="#include <plat\/$header" for dir in $omap_dirs; do find $dir -type f -name \*.[chS] | \ xargs sed -i "s/$old/$new/" done find drivers/ -type f -name \*omap*.[chS] | \ xargs sed -i "s/$old/$new/" for file in $other_files; do sed -i "s/$old/$new/" $file done done for header in $(ls $mach_dir_old/*.h); do git mv $header $plat_dir_new/ done Signed-off-by: NTony Lindgren <tony@atomide.com>
-
- 14 6月, 2009 1 次提交
-
-
由 Uwe Kleine-König 提交于
A pointer to mmc_omap_probe which lives in .init.text is passed to the core via platform_driver_register and so the kernel might oops if probe is called after the init code is discarded. As requested by David Brownell platform_driver_probe is used instead of moving the probe function to .devinit.text. This saves some memory, but might have the downside that a device being registered after the call to mmc_omap_init but before the init sections are discarded will not be bound anymore to the driver. Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de> Acked-by: NDavid Brownell <dbrownell@users.sourceforge.net> Signed-off-by: NPierre Ossman <pierre@ossman.eu>
-
- 04 6月, 2009 1 次提交
-
-
由 Ben Nizette 提交于
disable_irq() should wait for all running handlers to complete before returning. As such, if it's used to disable an interrupt from that interrupt's handler it will deadlock. This replaces the dangerous instances with the _nosync() variant which doesn't have this problem. Signed-off-by: NBen Nizette <bn@niasdigital.com> Acked-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NPierre Ossman <pierre@ossman.eu>
-
- 24 4月, 2009 1 次提交
-
-
由 Ladislav Michl 提交于
Remove unused power_pin Signed-off-by: NLadislav Michl <ladis@linux-mips.org> Signed-off-by: NTony Lindgren <tony@atomide.com>
-
- 09 2月, 2009 2 次提交
-
-
由 Russell King 提交于
Eliminate the OMAP1 vs OMAP2 clock knowledge in the MMC driver. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
Convert OMAP MMC driver to match clocks using the device ID and a connection ID rather than a clock name. This allows us to eliminate the OMAP1/OMAP2 differences for the function clock. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 11 12月, 2008 2 次提交
-
-
由 Tony Lindgren 提交于
Add low-level initialization for hsmmc controller. Merged into this patch patch are various improvments and board support by Grazvydas Ignotas and David Brownell. Also change wire4 to be wires, as some newer controllers support 8 data lines. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com> Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net> Signed-off-by: NTony Lindgren <tony@atomide.com>
-
由 Tony Lindgren 提交于
This will simplify the MMC low-level init, and make it more flexible to add support for a newer MMC controller in the following patches. The patch rearranges platform data and gets rid of slot vs controller confusion in the old data structures. Also fix device id numbering in the clock code. Some code snippets are based on an earlier patch by Russell King <linux@arm.linux.org.uk>. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: NTony Lindgren <tony@atomide.com>
-
- 06 9月, 2008 2 次提交
-
-
由 Russell King 提交于
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 07 8月, 2008 2 次提交
-
-
由 Russell King 提交于
This just leaves include/asm-arm/plat-* to deal with. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
There are 43 includes of asm/mach-types.h by files that don't reference anything from that file. Remove these unnecessary includes. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 15 7月, 2008 1 次提交
-
-
由 Pierre Ossman 提交于
Relax requirements on host controllers and only require that they do not report a transfer count than is larger than the actual one (i.e. a lower value is okay). This is how many other parts of the kernel behaves so upper layers should already be prepared to handle that scenario. This gives us a performance boost on MMC cards. Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
-
- 15 5月, 2008 1 次提交
-
-
由 Tony Lindgren 提交于
This patch fixes error: drivers/mmc/host/omap.c: In function 'mmc_omap_get_dma_channel': drivers/mmc/host/omap.c:1038: error: called object 'dev_name' is not a function Commit 06916639 adds a function called dev_name. This will cause a name conflict as dev_dbg calls dev_name(((host->mmc)->parent)). This same issue should not affect other drivers as they don't seem to use dev_name with dev_dbg. Thanks to Paul Walmsley <paul@pwsan.com> for figuring this one out. Cc: Paul Walmsley <paul@pwsan.com> Signed-off-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
-
- 19 4月, 2008 3 次提交
-
-
由 Jarkko Lavinen 提交于
The limit was a fixed 100k limit in the busy loop, which is not accurate. It would better to have time limit for the worst case which occurs when sending 80 cycles at 400 kHz and takes about 200 microseconds, so limit the max time spend in the busy loop for some 250 microseconds. Signed-off-by: NJarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
-
由 Jarkko Lavinen 提交于
Use work queues for starting new commands instead of starting them directly from irq handler. The command scheduling needs to be delayed a bit for some cards which should not be done from an interrupt. Signed-off-by: NJarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
-
由 Jarkko Lavinen 提交于
MMCA spec says the mmc clock should be kept running for at least 8 cycles after the last RW request. Ensure this with lazy clock disable after a request, or with an explicit delay before switching a slot. Signed-off-by: NJarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: NPierre Ossman <drzeus@drzeus.cx>
-