summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-07-20ENGR00141217-9 iim: add iim driver supportFrank Li
add iim driver for 2.6.38 Signed-off-by: Frank Li <Frank.Li@freescale.com>
2012-07-20ENGR00141217-8 ASoC: SGTL5000: Add DAP support for sgtl5000 codecFrank Li
upgrade to 2.6.38 kernel Add Digital Audio Process(DAP) for sgtl5000 codec Audio: imx53,loco,audio: make Loco sgtl5000 codec work config audmux when ssi probed, and fix sdma watermark settings Signed-off-by: Zeng Zhaoming <b32542@freescale.com>
2012-07-20ENGR00141217-7 touch: p1003 touch screen driver for 2.6.38Frank Li
add p1003 Signed-off-by: Frank Li <Frank.Li@freescale.com>
2012-07-20ENGR00141217-6 srtc: add rtc driver for 2.6.38Frank Li
Add srtc support Signed-off-by: Frank Li <Frank.Li@freescale.com>
2012-07-20ENGR00141217-5 IPU\VPU\GPU: upgrade to 2.6.38Jason Chen
Add drivers/mxc Add drivers/video/mxc Add drivers/media/mxc fb device: change acquire_console_sem to console_lock And release_console_sem to console_unlock Add DMA Zone support Add TVE driver, add regulator Add hdmi support Add VPU Fix build error ioctl --> unlocked_ioctl DECLARE_MUTEX --> DEFINE_SEMAPHORE Signed-off-by: Jason Chen <b02280@freescale.com> Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
2012-07-20ENGR00141217-4 USB: Add USB Host/device/otg drivers supportZhang Yan
Add usb support for 2.6.38 Signed-off-by: Zhang Yan <b34916@freescale.com>
2012-07-20ENGR00141217-3 MX53 MSL part upgrade to 2.6.38Frank Li
imx51_babbage: imx53_smd: add i2c device imx53_smd: add i2c board device info imx53_smd: add esdhc device support imx53_smd: Add SRTC devices imx53_smd: enable the AHCI SATA imx53_smd: Add GPIO Keypad support imx53_ard: enable ARD board bootup imx53_ard: add ethernet pin mux imx53_ard: add smsc911x device imx53_loco: add i2c device imx53_loco: change sii902x i2c device imx53_loco: register v4l2 output device imx53_loco: add srtc device imx53_loco: enable the AHCI SATA imx53_loco: Add GPIO Keypad support imx53_evk: add evk and arm2 boards io setting and set up display imx5: add ipu\vpu imx5: clock.c: remove RATE_PROPAGATES imx5: Add clock, dvfs, busfreq, sdram_autogating support. imx5: fix warnings on boot imx5: add v4l2 device imx5: add board_is_rev support imx5: Add sdma support for i.Mx53 and i.Mx51 imx5: add p1003 imx5: add ipuv3 imx5: add sata imx5: add pmic board files imx5: add pm function imx5: add iram config imx5: add gpu imx5: fix clock debug enable_count error imx53: add gpio irq support for mx53 imx53: change PWM backlight device register method to dynamic imx53: change v4l2 device register method to dynamic imx53: add vpu devices support imx53: add dvfs-core and busfreq devices register method imx53: Add usb devices imx53: add i2c pad settings imx53: add ssi support Signed-off-by: Richard Zhao <richard.zhao@freescale.com> Signed-off-by: Frank Li <Frank.Li@freescale.com> Signed-off-by: Jason Chen <b02280@freescale.com> Signed-off-by: Zeng Zhaoming <b32542@freescale.com> Signed-off-by: Richard Zhu <r65037@freescale.com> Signed-off-by: Zhou Jingyu <Jingyu.Zhou@freescale.com> Signed-off-by: Zhang Yan <b34916@freescale.com>
2012-07-20ENGR00141217-2 include file upgrade to 2.6.38Frank Li
Add ipu tve header file Signed-off-by: Frank Li <Frank.Li@freescale.com>
2012-07-20ENGR00141217-1 Add imx5_defconfig for 2.6.38Frank Li
add config files for imx5 Signed-off-by: Frank Li <Frank.Li@freescale.com>
2012-07-20ENGR00133978 PM: add time sensitive debug function to suspend & resumeZhang Jiejing
There was some driver is slow on suspend/resume, but some embeded system like eReader,Cellphone are time sensitive,this commit will report the slow driver on suspend/resume, the default value is 500us(0.5ms) Also, the threshold can be change by modify '/sys/power/device_suspend_time_threshold' to change the threshold, it is in microsecond. The output is like: PM: device platform:soc-audio.2 suspend too slow, takes 606.696 msecs PM: device platform:mxc_sdc_fb.1 suspend too slow, takes 7.708 msecs the default state of suspend driver is default off, if you want to debug the suspend time, echo time in microsecond(u Second) to /sys/powe/device_suspend_time_threshold eg: I want to know which driver suspend & resume takes more that 0.5 ms (500 us), you can just : ehco 500 > /sys/power/device_suspend_time_threshold Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
2012-07-20ENGR00137546-1 MMA8450: Add mma8450 accelerometer driverSammy He
Add mma8450 accelerometer driver. Signed-off-by: Sammy He <r62914@freescale.com>
2012-07-20ENGR00137485-1 MMA8451: Add mma8451 accelerometer driverSammy He
Add mma8451 accelerometer driver. Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com> Signed-off-by: Sammy He <r62914@freescale.com>
2012-07-20ENGR00137602-1 input: FSL MPR121 capacitive touch button.Zhang Jiejing
This button driver is based on Freescale MPR121 capacitive touch sensor controller. It can support 12 elements maximal. The chip is use i2c interface. You can find all the data sheet reference in code by google the name. Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
2012-07-20ENGR00132493 RAMDISK: doing write barrier will return -EIOHu hui
when doing write barrier, the data of the bio is NULL, it's OK for ramdisk doing nothing, So the result of the bio must be success. Signed-off-by: Hu Hui <b29976@freescale.com>
2012-07-20ENGR00126349-2 Change gfp flag in dma_alloc_coherent in common codesRobby Cai
Changed gfp flag directly in dma_alloc_coherent in drivers/media/video/videobuf-dma-contig.c Signed-off-by: Robby Cai <R63905@freescale.com> (cherry picked from commit b5cfb266e2e2d40568d060b0426e6c4239a34a78)
2012-07-20ENGR00125800 UIO: clean uioinfo when uninstall uio driverJie Zhou
The uioinfo should be cleaned up when uninstall, otherwise re-install failure of uio_pdrv_genirq.ko will happen. Signed-off-by: Jie Zhou <b30303@freescale.com>
2012-07-20imx: change timer clock to perclkRob Herring
Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20w1: imx: add byte transfer and interrupt supportRob Herring
Signed-off-by: Rob Herring <r.herring@freescale.com> Signed-off-by: Lily Zhang <r58066@freescale.com>
2012-07-20ENGR00122691-1 Add atheros driver ath6klRichard Zhao
Integrate atheros driver package from atheros company. It's mainly for AR6003. NGR00132491-1 ath6kl upgrade: change Kconfig This series of patches are for upgrading Atheros AR6003(ath6kl) in 31 kernel to 35 kernel. The WLAN_80211 config option has been changed to WLAN in 35 kernel. ENGR00132491-2 ath6kl upgrade: add missed semaphore.h headfile ENGR00132491-3 ath6kl upgrade: enable WEXT implicitely Atheros ath6kl driver is based on WEXT subsystem and therefore needs to select CONFIG_WIRELESS_EXT for compiling. However in the latest kernel such as 2.6.35, this option can no longer be configured using menuconfig. So we select it when the user selects ath6kl driver to compile. Signed-off-by: Nathan Cheng <Nathan.Cheng@Atheros.com> Signed-off-by: Richard Zhao <richard.zhao@freescale.com> Signed-off-by: Aisheng.Dong <b29396@freescale.com>
2012-07-20ENGR00122206 MX53-EVK pwm-backlight: PWM backlight enhancementWilliam Lai
Don't trun off the pwm backlight when blanking the fore-ground. Signed-off-by: William Lai <b04597@freescale.com>
2012-07-20gadget: add stmp uut support to file storageFrank Li
This is gadget file storage changes needed for FSL universal updater tool (manufacturing flashing tool). ENGR00131456 mfg-tool: Add get cpu id ioctl at utp driver The watchdog operation is differ with SoC's for rom code, so the utp app needs to add or not add watchdog operation according to different SoCs. Signed-off-by: Frank Li <Frank.Li@freescale.com> Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-07-20usb: Add arc ehci driver to ehci core driverRob Herring
Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20usb: imx usb buffers in iram work-aroundDinh Nguyen
Some i.MX parts (MX31, MX37) need to have usb host queue descriptors and/or buffers in on-chip IRAM in cases of heavily loaded memory system (i.e. large LCDs). Signed-off-by: Dinh Nguyen <r00091@freescale.com>
2012-07-20usb: add ehci otg supportDinh Nguyen
Add OTG support to ehci host controllers Signed-off-by: Dinh Nguyen <r00091@freescale.com>
2012-07-20gadget: gadgetfs changes for MTP supportRob Herring
MTP protocol support using gadgetfs requires the ability to cancel I/O transactions. Signed-off-by: Jun Li <r65092@freescale.com>
2012-07-20nand: add more nand devicesRob Herring
Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20nand: export symbols needed for stmp3xxx nand nand: increase max nand page ↵Rob Herring
and oob sizes Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20cache-l2x0: add enable/disable functionsRob Herring
Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20ENGR00114911 make video buffer cacheable to improve video performanceRobby Cai
use pgprot_writethru instead Signed-off-by: Robby Cai <r63905@freescale.com>
2012-07-20ENGR00112200 Add cryptodev deviceMichal Ludvig
Linux driver for /dev/crypto (aka CryptoDev) See http://www.logix.cz/michal/devel/cryptodev for details. Signed-off-by: Michal Ludvig <mludvig@suse.cz> Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20tsc2007: fail registration on i2c errorRob Herring
Return an error on probe if i2c errors occur indicating the device is not present. Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-07-20Enable partial low interrupt latency mode for ARM1136Catalin Marinas
Enable partial low interrupt latency mode for ARM1136 This patch is a workaround for the 364296 ARM1136 r0pX errata (possible cache data corruption with hit-under-miss enabled). It sets the undocumented bit 31 in the auxiliary control register and the FI bit in the control register, thus disabling hit-under-miss without putting the processor into full low interrupt latency mode. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2012-07-20ENGR00069937 Community patch for Fix mount error in case of MLC flashJason Liu
Even though we don't use the OOB for MLC nand flash, we should use the bad block information to skip the bad block. Patch url: http://patchwork.ozlabs.org/linux-mtd/patch?q=mlc&filter=none&id=15477 Author:Kyungmin Park Signed-off-by: Jason Liu <r64343@freescale.com>
2012-07-20ENGR00068619 JFFS2 community fix with not use OOBJason Liu
JFFS2 community fix with not use OOB at MLC NAND, this patch is coming from the MTD community Signed-off-by: Jason Liu <r64343@freescale.com>
2012-07-20ENGR00133884 eMMC: improve boot_info message outputFrank Li
Output bit means of important esd_csd register Read esd_csd info each time when cat boot_info becasue user may change config affect esd_csd value. boot_info:0x07; ALT_BOOT_MODE:1 - Supports alternate boot method DDR_BOOT_MODE:1 - Supports alternate dual data rate during boot HS_BOOTMODE:1 - Supports high speed timing during boot boot_size:0512KB boot_partition:0x48; BOOT_ACK:1 - Boot acknowledge sent during boot operation BOOT_PARTITION-ENABLE: 1 - Boot partition 1 enabled PARTITION_ACCESS:0 - No access to boot partition boot_bus:0x01 BOOT_MODE:0 - Use single data rate + backward compatible timings in boot operation RESET_BOOT_BUS_WIDTH:0 - Reset bus width to x1, single data rate and backward compatible timings after boot operation BOOT_BUS_WIDTH:1 - x4 (sdr/ddr) bus width in boot operation mode Signed-off-by: Frank Li <Frank.Li@freescale.com>
2012-07-20ENGR00126228 eMMC: Configure boot_partition_enableRichard Zhu
Enable the configurations of the boot enable on the eMMC cards. Add the interface that used to configure the boot_bus_width In order to make sure that the re-read the ext-csd of card can be completed successfully, add the method to wait for the finish of the busy state. NOTE: The following are the valid inputs when configure the boot bus width of the eMMC cards. +--------------------------------------------------------------------+ | Bit7 Bit6 Bit5 | Bit4 Bit3 | Bit2 | Bit1 Bit0 | |----------------|----------------------------------|----------------| | X | BOOT_MODE | RESET_BOOT_BUS_WIDTH | BOOT_BUS_WIDTH | +--------------------------------------------------------------------+ Bit [4:3] : BOOT_MODE (non-volatile) 0x0 : Use single data rate + backward compatible timings in boot operation (default) 0x1 : Use single data rate + high speed timings in boot operation mode 0x2 : Use dual data rate in boot operation 0x3 : Reserved Bit [2]: RESET_BOOT_BUS_WIDTH (non-volatile) 0x0 : Reset bus width to x1, single data rate and backward compatible timings after boot operation (default) 0x1 : Retain boot bus width and boot mode after boot operation Bit[1:0] : BOOT_BUS_WIDTH (non-volatile) 0x0 : x1 (sdr) or x4 (ddr) bus width in boot operation mode (default) 0x1 : x4 (sdr/ddr) bus width in boot operation mode 0x2 : x8 (sdr/ddr) bus width in boot operation mode 0x3 : Reserved The following are the valid inputs when configure the boot partitions of the eMMC cards. +------------------------------------------------------------+ | Bit7 | Bit6 | Bit5 Bit4 Bit3 | Bit2 Bit1 Bit0 | |------|----------|-----------------------|------------------| | X | BOOT_ACK | BOOT_PARTITION_ENABLE | PARTITION_ACCESS | +------------------------------------------------------------+ Bit7: Reserved Bit6: always set to vaule '1' when boot_part is enabled Bit[5:3]: 0x0 : Device not boot enabled (default) 0x1 : Boot partition 1 enabled for boot 0x2 : Boot partition 2 enabled for boot 0x7 : User area enabled for boot Bit[2:0]: 0x0 : No access to boot partition (default) 0x1 : R/W boot partition 1 0x2 : R/W boot partition 2 So only the '0, 1, 2; 8, 9, 10; 16, 17, 18; 56, 57, 58' are valid parameters when configure the boot_partiton. Signed-off-by: Richard Zhu <r65037@freescale.com>
2012-07-20ENGR00125411 eMMC: Boot Partition switch func used in MFG toolRichard Zhu
User can get eMMC partitions info from user space layer in linux OS enviroment. User can do switch operations between the eMMC boot partitions and the user partition. User can access the eMMC boot partitions from user space layer in linux OS enviroment. NOTE:This func had been verified on TOSHIBA eMMC44 card only. Signed-off-by: Richard Zhu <r65037@freescale.com> Signed-off-by: Rob Herring <r.herring@freescale.com>
2012-06-17Linux 3.0.35v3.0.35Greg Kroah-Hartman
2012-06-17hugetlb: fix resv_map leak in error pathDave Hansen
commit c50ac050811d6485616a193eb0f37bfbd191cc89 and 4523e1458566a0e8ecfaff90f380dd23acc44d27 upstream. When called for anonymous (non-shared) mappings, hugetlb_reserve_pages() does a resv_map_alloc(). It depends on code in hugetlbfs's vm_ops->close() to release that allocation. However, in the mmap() failure path, we do a plain unmap_region() without the remove_vma() which actually calls vm_ops->close(). This is a decent fix. This leak could get reintroduced if new code (say, after hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return an error. But, I think it would have to unroll the reservation anyway. Christoph's test case: http://marc.info/?l=linux-mm&m=133728900729735 This patch applies to 3.4 and later. A version for earlier kernels is at https://lkml.org/lkml/2012/5/22/418. Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Reported-by: Christoph Lameter <cl@linux.com> Tested-by: Christoph Lameter <cl@linux.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17mm: fix faulty initialization in vmalloc_init()KyongHo
commit dbda591d920b4c7692725b13e3f68ecb251e9080 upstream. The transfer of ->flags causes some of the static mapping virtual addresses to be prematurely freed (before the mapping is removed) because VM_LAZY_FREE gets "set" if tmp->flags has VM_IOREMAP set. This might cause subsequent vmalloc/ioremap calls to fail because it might allocate one of the freed virtual address ranges that aren't unmapped. va->flags has different types of flags from tmp->flags. If a region with VM_IOREMAP set is registered with vm_area_add_early(), it will be removed by __purge_vmap_area_lazy(). Fix vmalloc_init() to correctly initialize vmap_area for the given vm_struct. Also initialise va->vm. If it is not set, find_vm_area() for the early vm regions will always fail. Signed-off-by: KyongHo Cho <pullip.cho@samsung.com> Cc: "Olav Haugan" <ohaugan@codeaurora.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17mm/vmalloc.c: change void* into explict vm_struct*Minchan Kim
commit db1aecafef58b5dda39c4228debe2c845e4a27ab upstream. vmap_area->private is void* but we don't use the field for various purpose but use only for vm_struct. So change it to a vm_struct* with naming to improve for readability and type checking. Signed-off-by: Minchan Kim <minchan@kernel.org> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17e1000: save skb counts in TX to avoid cache missesDean Nelson
commit 31c15a2f24ebdab14333d9bf5df49757842ae2ec upstream. Virtual Machines with emulated e1000 network adapter running on Parallels' server were seeing kernel panics due to the e1000 driver dereferencing an unexpected NULL pointer retrieved from buffer_info->skb. The problem has been addressed for the e1000e driver, but not for the e1000. Since the two drivers share similar code in the affected area, a port of the following e1000e driver commit solves the issue for the e1000 driver: commit 9ed318d546a29d7a591dbe648fd1a2efe3be1180 Author: Tom Herbert <therbert@google.com> Date: Wed May 5 14:02:27 2010 +0000 e1000e: save skb counts in TX to avoid cache misses In e1000_tx_map, precompute number of segements and bytecounts which are derived from fields in skb; these are stored in buffer_info. When cleaning tx in e1000_clean_tx_irq use the values in the associated buffer_info for statistics counting, this eliminates cache misses on skb fields. Signed-off-by: Dean Nelson <dnelson@redhat.com> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Roman Kagan <rkagan@parallels.com>
2012-06-17fuse: fix stat call on 32 bit platformsPavel Shilovsky
commit 45c72cd73c788dd18c8113d4a404d6b4a01decf1 upstream. Now we store attr->ino at inode->i_ino, return attr->ino at the first time and then return inode->i_ino if the attribute timeout isn't expired. That's wrong on 32 bit platforms because attr->ino is 64 bit and inode->i_ino is 32 bit in this case. Fix this by saving 64 bit ino in fuse_inode structure and returning it every time we call getattr. Also squash attr->ino into inode->i_ino explicitly. Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17x86, MCE, AMD: Make APIC LVT thresholding interrupt optionalBorislav Petkov
commit f227d4306cf30e1d5b6f231e8ef9006c34f3d186 upstream. Currently, the APIC LVT interrupt for error thresholding is implicitly enabled. However, there are models in the F15h range which do not enable it. Make the code machinery which sets up the APIC interrupt support an optional setting and add an ->interrupt_capable member to the bank representation mirroring that capability and enable the interrupt offset programming only if it is true. Simplify code and fixup comment style while at it. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Signed-off-by: Robert Richter <robert.richter@amd.com>
2012-06-17iwlwifi: don't mess up the SCD when removing a keyEmmanuel Grumbach
commit d6ee27eb13beab94056e0de52d81220058ca2297 upstream. When we remove a key, we put a key index which was supposed to tell the fw that we are actually removing the key. But instead the fw took that index as a valid index and messed up the SRAM of the device. This memory corruption on the device mangled the data of the SCD. The impact on the user is that SCD queue 2 got stuck after having removed keys. The message is the log that was printed is: Queue 2 stuck for 10000ms This doesn't seem to fix the higher queues that get stuck from time to time. Reviewed-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17sched: Fix the relax_domain_level boot parameterDimitri Sivanich
commit a841f8cef4bb124f0f5563314d0beaf2e1249d72 upstream. It does not get processed because sched_domain_level_max is 0 at the time that setup_relax_domain_level() is run. Simply accept the value as it is, as we don't know the value of sched_domain_level_max until sched domain construction is completed. Fix sched_relax_domain_level in cpuset. The build_sched_domain() routine calls the set_domain_attribute() routine prior to setting the sd->level, however, the set_domain_attribute() routine relies on the sd->level to decide whether idle load balancing will be off/on. Signed-off-by: Dimitri Sivanich <sivanich@sgi.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/20120605184436.GA15668@sgi.com Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17acpi_video: fix leaking PCI referencesAlan Cox
commit cfb46f433a4da97c31780e08a259fac2cb6bd61f upstream. Signed-off-by: Alan Cox <alan@linux.intel.com> Acked-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Len Brown <len.brown@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17hwmon: (fam15h_power) Increase output resolutionAndre Przywara
commit 941a956b0e387b21f385f486c34ef67576775cfc upstream. On high CPU load the accumulating values in the running_avg_cap register are very low (below 10), so averaging them too early leads to unnecessary poor output resolution. Since we pretend to output micro-Watt we better keep all the bits we have as long as possible. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17can: c_can: fix race condition in c_can_open()AnilKumar Ch
commit f461f27a4436dbe691908fe08b867ef888848cc3 upstream. Fix the issue of C_CAN interrupts getting disabled forever when canconfig utility is used multiple times. According to NAPI usage we disable all the hardware interrupts in ISR and re-enable them in poll(). Current implementation calls napi_enable() after hardware interrupts are enabled. If we get any interrupts between these two steps then we do not process those interrupts because napi is not enabled. Mostly these interrupts come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable() happens before HW interrupts enabled then c_can_poll() function will be called eventual re-enabling. This patch moves the napi_enable() call before interrupts enabled. Signed-off-by: AnilKumar Ch <anilkumar@ti.com> Acked-by: Wolfgang Grandegger <wg@grandegger.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-17can: c_can: fix an interrupt thrash issue with c_can driverAnilKumar Ch
commit 148c87c89e1a8863d3d965179f3ab1a06490569e upstream. This patch fixes an interrupt thrash issue with c_can driver. In c_can_isr() function interrupts are disabled and enabled only in c_can_poll() function. c_can_isr() & c_can_poll() both read the irqstatus flag. However, irqstatus is always read as 0 in c_can_poll() because all C_CAN interrupts are disabled in c_can_isr(). This causes all interrupts to be re-enabled in c_can_poll() which in turn causes another interrupt since the event is not really handled. This keeps happening causing a flood of interrupts. To fix this, read the irqstatus register in isr and use the same cached value in the poll function. Signed-off-by: AnilKumar Ch <anilkumar@ti.com> Acked-by: Wolfgang Grandegger <wg@grandegger.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>