The issue is hard to reproduce in normal envrionment. And
the reproduce rate is about 40% when doing VTE auto test.
while the driver did report being busy when the link is down
or no transmission buffers are available, it did not stop the
queue, causing instant retries. furthermore, transmission being
triggered with link down was caused by unconditional queue
wakes, especially on timeouts.
Now, wake queue only if link is up and transmission buffers
are available, and dont forget to wake queue when link has
been adjusted. next, add stop queue notification upon driver
induced transmission problems, so network stack has a chance
to handle the situation.
Chen Liangjun [Sat, 31 Mar 2012 06:25:23 +0000 (14:25 +0800)]
ENGR00177235-2 SDMA: add p2p dma mode
Add code to support p2p dma mode.Add membership in imx_dma_data
struct to support P2P dma script. Because the P2P dma script
need 2 dma request to trigger DMA burst.
Chen Liangjun [Tue, 20 Mar 2012 05:18:25 +0000 (13:18 +0800)]
ENGR00177235-1 SDMA: add p2p dma mode
Add support for p2p(peripheral to peripheral) dma mode in SDMA
module.
1 Add p2p script membership in struct sdma_channel to support
device to device tranfer.
2 P2P dma script need more configure information then memory to
peripheral or peripheral to memory script. we configure these
information into watermark_level.
Dave Martin [Thu, 23 Jun 2011 16:10:05 +0000 (17:10 +0100)]
ARM: assembler.h: Add string declaration macro
Declaring strings in assembler source involves a certain amount of
tedious boilerplate code in order to annotate the resulting symbol
correctly.
Encapsulating this boilerplate in a macro should help to avoid some
duplication and the occasional mistake.
Signed-off-by: Dave Martin <dave.martin@linaro.org> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Huang Shijie <b32955@freescale.com>
Adrian Alonso [Tue, 3 Apr 2012 21:01:23 +0000 (16:01 -0500)]
ENGR00178915: imx6 clock fix build warnings
* Fix build warnings
* clock.c: In function '_clk_pll1_enable':
warning: no return statement in function returning non-void
* clock.c: In function 'mx6_clocks_init':
warning: unused variable 'reg'
Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Hui Wang [Wed, 24 Aug 2011 09:41:47 +0000 (17:41 +0800)]
serial/imx: support to handle break character
The imx UART hardware controller can identify BREAK character and the
imx_set_termios() can accept BRKINT set by users, but current existing
imx_rxint() can't pass BREAK character and TTY_BREAK to the tty layer
as other serial drivers do (8250.c omap_serial.c).
Here add code to handle BREAK character and pass it to tty layer.
To detect error occurrence, i use URXD_ERR to replace (URXD_OVRRUN |
URXD_FRMERR | ...) because any kind of error occurs, URXD_ERR will
always be set to 1.
I put the URXD_BRK to the first place to check since when BREAK error
occurs, not only URXD_BRK is set to 1, but also URXD_PRERR and
URXD_FRMERR are all set to 1. This arrangement can filter out fake
parity and frame errors when BREAK error occurs.
Signed-off-by: Hui Wang <jason77.wang@gmail.com> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Acked-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
(cherry picked from commit 019dc9ea8d528eb3640bbba604e1e5a2f6994b1f)
make shi [Thu, 5 Apr 2012 05:09:18 +0000 (13:09 +0800)]
ENGR00178932 USB: fix two USB otg common bug for i.MX6
- Built in gadget device driver, plug in USB cable with no response,
the reason is USB VBUS wakeup is not enable after OTG switch,make
sure pdata->port_enables is 1 even if the pdata is otg device pdata.
-Without modprobe or built in gadget device driver,after plug out
the USB otg cable,will output "wait otg vbus change timeout!".The
reason is we get error otgsc data after USB enter low power mode.
ENGR00160472 - MX6: add Ethernet ANSI/IEEE 802.2 LLC support in defconfig.
- Add Ethernet ANSI/IEEE 802.2 LLC support. And the packet with
IP head "ETH_P_802_2" will be processed in Ethernet stack L3 layer.
- If disable the feature, ethernet stack will drop the LLC packets.
1. When system not boot up all cores, interactive governor
will not work;
2. Adjust the default timer_rate to 50ms instead of 20ms to
avoid too many freq up/down change.
TO1.0 parts donot boot properly after the following commit: 88d3af87222b37e454acd6a8de3b0cf18180da32
MX6-Switch ARM_CLK to PLL2_400MHz when ARM freq
is below 400MHz.
Correct gpt_clk was not getting enabled. Fix by adding the
appropriate gpt_clk.
Uart 3 and NFC pins are shared.
Uart 3 enablement is done by passing an early parameter
called "uart3" from uboot. Both interfaces (Uart3 and NFC)
can NOT coexist on the same configuration at the same time.
Signed-off-by: Alejandro Sierra <b18039@freescale.com>
Robin Gong [Sun, 1 Apr 2012 04:38:22 +0000 (12:38 +0800)]
ENGR00178629 i.MX6 sabresd:support software power off by SNVS setting
On sabresd board, PMIC_ON_REQ control pmic power on/off, we can set TOP and
DP_EN of SNVS_LPCR to implement power off by software. On this way,SNVS RTC
alarm can work after power off. The description of register can be found on
other SNVS block document which provided by IC team, not i.MX6 RM.
Danny Nold [Fri, 30 Mar 2012 20:25:33 +0000 (15:25 -0500)]
ENGR00178581 - EPDC fb: Fix regulator-related EPDC failure on SabreSD
Remove call to regulator_has_full_constraints() from Max17135 EPD PMIC
initialization code, since leaving it enabled results in a failure of
system to load properly - key regulators are disabled when 'epdc' is added
to the kernel command line.
Signed-off-by: Danny Nold <dannynold@freescale.com>
Liu Ying [Fri, 30 Mar 2012 01:22:00 +0000 (09:22 +0800)]
ENGR00178456 IPUv3 fb:Unblank primary fb only by default
This patch changes IPUv3 fb probe function logic to
unblank the primary fb only by default so that the
secondary fb using IPU DP BG channel won't be unblanked
when system boot-ups. This avoids the HDMI fb(as the
secondary fb using IPU DP BG channel) is unblanked
accidentally without plugging in HDMI cable.
Danny Nold [Fri, 30 Mar 2012 02:28:14 +0000 (21:28 -0500)]
ENGR00178458 - WM8962 regulator constraint fix to prevent unwanted disable
SPKVDD regulator was being disabled whenever EPDC was included in the
image, because the EPD PMIC initialization code includes an invocation
of regulator_has_full_constraints(). This causes all regulators with
zero ref count to be disabled as part of a late_initcall. To prevent
this disable (which breaks ethernet and DHCP), set regulator to
have boot_on attribute, so that it will not be disabled at end of
driver loading sequence.
Signed-off-by: Danny Nold <dannynold@freescale.com>
what're done:
* PCIE topology, RC should be on bus 0, EP should be on bus 1.
Root Cause: The CLASS_REV of RC CFG header, specified
by SPEC to be RO, should be set to PCI_CLASS_BRIDGE_PCIclass
* Added PCIE PWR EN and RESET
* iATU wrong configurations.
Root Cause: The outbounds excepted the CFG region0
should be removed. Otherwise, the memory ATU wouldn't
work correctly.
* CT DHCP hang
Root Cause: PLL8 is set to bypass mode when linux close fec,
and the PCIe ref clk would be broken by PLL8 bypass mode.
The parent clk of pcie ref clk is disabled by FEC, since
linux would try to disable the none-addressed NIC after DHCP.
Dong Aisheng [Wed, 28 Mar 2012 07:58:48 +0000 (15:58 +0800)]
ENGR00178290-2 mmc: sdhci: introduce QUIRK_BROKEN_AUTO_CMD23 for mx6
We observed a few commands timeout when using auto cmd23.
The root cause is still unkonwn.
This patch is a workaround to not use auto cmd23 temporarily.
Chen Liangjun [Fri, 23 Mar 2012 12:22:01 +0000 (20:22 +0800)]
ENGR00177302 ASRC: change clock management
1 close clock when asrc is not working.
2 enable the asrc core clock when user sucessfully request an
ASRC pair and disable it when the pair is release.So the call
from ESAI using the p2p DMA mode can be support.
Peter Chen [Fri, 23 Mar 2012 07:20:09 +0000 (15:20 +0800)]
ENGR00177756 usb-host: quit system suspend after usb remote wakeup occurs
If the usb remote wakeup occurs before bus(roothub) suspend, it can
stop the system suspend process, the patch adds handle error message
process for roothub.
If the remote wakeup occurs after bus(roothub) suspend, then
the suspend will go on suspending, and usb phy will fail to respond
wakeup signal.
This patch is suggested by: Alan Stern <stern@rowland.harvard.edu>
see: http://www.spinics.net/lists/linux-usb/msg58774.html
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Jason Liu [Tue, 27 Mar 2012 13:20:58 +0000 (21:20 +0800)]
ENGR00178118-2 fix some build warnings when using GCC 4.6.2
fix some build warnings when using GCC 4.6.2:
arch/arm/mach-mx6/board-mx6q_sabresd.c:1588:20:
warning: function declaration isn't a prototype [-Wstrict-prototypes]
This patch also fix the following section mismatch warnings:
The function imx6q_init_audio() references
the variable __initconst imx6_imx_ssi_data.
This is often because imx6q_init_audio lacks a __initconst
annotation or the annotation of imx6_imx_ssi_data is wrong.
Jason Liu [Tue, 27 Mar 2012 13:20:27 +0000 (21:20 +0800)]
ENGR00178118-1 fix some build warnings when using GCC 4.6.2
fix some build warnings when using GCC 4.6.2:
drivers/cpufreq/cpufreq_interactive.c:127:6:
warning:'irq_count' may be used uninitialized in this function [-Wuninitialized]
drivers/media/video/mxc/output/mxc_vout.c:1346:5:
warning: 'ret' may be used uninitialized in this function [-Wuninitialized]
drivers/video/mxc/mxc_ipuv3_fb.c:1329:23:
warning: operation on 'mxc_fbi->cur_ipu_buf' may be undefined [-Wsequence-point]
drivers/video/mxc/mxc_ipuv3_fb.c:1376:24:
warning: operation on 'mxc_fbi->cur_ipu_buf' may be undefined [-Wsequence-point]
drivers/video/mxc/mxc_ipuv3_fb.c:1377:24:
warning: operation on 'mxc_fbi->cur_ipu_buf' may be undefined [-Wsequence-point]
make shi [Mon, 26 Mar 2012 06:04:36 +0000 (14:04 +0800)]
ENGR00177884-1 mx6q sabresd: config USB pin according to board
- Configure USB pin and power control for mx6q sd board
- keep USB host1 VBUS always on for mx6q sd board
- set default USB OTG VBUS off for solo ARD board
Peter Chen [Wed, 14 Mar 2012 05:54:17 +0000 (13:54 +0800)]
ENGR00177589 USB: fix two USB common bug for i.MX6
- Without host wakeup enable, after doing system suspend/resume,
plug in usb cable(both host/device) with no response, the reason is
usb wakeup is not enable after suspend resume.
- clock refcount will not be 0 after usb enters low power mode,the
reason is OTG ID wake up not do recover hcd.
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Anson Huang [Mon, 19 Mar 2012 03:26:19 +0000 (11:26 +0800)]
ENGR00176177-2 Add irq count mechanism to interactive governor
Add irq count to CPUFreq as a freq change condition.
Because some devices' working mode is unable to issue
CPUFreq change because of low CPU loading, but the cpu
freq will impact these devices' performace significantly.
Interactive govervor will sample the cpu loading as well
as the irq count which is registered. If the
loading or the irq count exceed the threshold we set,
governor will issue an CPUFreq change request.
These devices' irq threshold and enable/disable can be modified
via /sys/devices/system/cpu/cpufreq/interactive/irq_scaling
echo 0xAABBBC to change the default setting as below
AA : irq number
BBB: threshold
C :enable or disable
Currently only enable USDHC3, USDHC4, GPU, SATA and
USB by default, we can add device to the init struct which is
located in arch/arm/mach-mx6/irq.c.
Anson Huang [Mon, 19 Mar 2012 02:41:10 +0000 (10:41 +0800)]
ENGR00176177-1 Add irq count mechanism to interactive governor
Add irq count to CPUFreq as a freq change condition.
Because some devices' working mode is unable to issue
CPUFreq change because of low CPU loading, but the cpu
freq will impact these devices' performace significantly.
Interactive govervor will sample the cpu loading as well
as the irq count which is registered. If the
loading or the irq count exceed the threshold we set,
governor will issue an CPUFreq change request.
These devices' irq threshold and enable/disable can be modified
via /sys/devices/system/cpu/cpufreq/interactive/irq_scaling
echo 0xAABBBC to change the default setting as below
AA : irq number
BBB: threshold
C :enable or disable
Currently only enable USDHC3, USDHC4, GPU, SATA and
USB by default, we can add device to the init struct which is
located in arch/arm/mach-mx6/irq.c.
Anson Huang [Fri, 23 Mar 2012 03:21:30 +0000 (11:21 +0800)]
ENGR00177745-2 Add interactive cpufreq governor
cpufreq: interactive: New 'interactive' governor
This governor is designed for latency-sensitive workloads, such as
interactive user interfaces. The interactive governor aims to be
significantly more responsive to ramp CPU quickly up when CPU-intensive
activity begins.
Existing governors sample CPU load at a particular rate, typically
every X ms. This can lead to under-powering UI threads for the period of
time during which the user begins interacting with a previously-idle system
until the next sample period happens.
The 'interactive' governor uses a different approach. Instead of sampling
the CPU at a specified rate, the governor will check whether to scale the
CPU frequency up soon after coming out of idle. When the CPU comes out of
idle, a timer is configured to fire within 1-2 ticks. If the CPU is very
busy from exiting idle to when the timer fires then we assume the CPU is
underpowered and ramp to MAX speed.
If the CPU was not sufficiently busy to immediately ramp to MAX speed, then
the governor evaluates the CPU load since the last speed adjustment,
choosing the highest value between that longer-term load or the short-term
load since idle exit to determine the CPU speed to ramp to.
A realtime thread is used for scaling up, giving the remaining tasks the
CPU performance benefit, unlike existing governors which are more likely to
schedule rampup work to occur after your performance starved tasks have
completed.
The tuneables for this governor are:
/sys/devices/system/cpu/cpufreq/interactive/min_sample_time:
The minimum amount of time to spend at the current frequency before
ramping down. This is to ensure that the governor has seen enough
historic CPU load data to determine the appropriate workload.
/sys/devices/system/cpu/cpufreq/interactive/go_maxspeed_load
The CPU load at which to ramp to max speed.
Anson Huang [Mon, 19 Mar 2012 01:55:46 +0000 (09:55 +0800)]
ENGR00177745-1 Add interactive cpufreq governor
cpufreq: interactive: New 'interactive' governor
This governor is designed for latency-sensitive workloads, such as
interactive user interfaces. The interactive governor aims to be
significantly more responsive to ramp CPU quickly up when CPU-intensive
activity begins.
Existing governors sample CPU load at a particular rate, typically
every X ms. This can lead to under-powering UI threads for the period of
time during which the user begins interacting with a previously-idle system
until the next sample period happens.
The 'interactive' governor uses a different approach. Instead of sampling
the CPU at a specified rate, the governor will check whether to scale the
CPU frequency up soon after coming out of idle. When the CPU comes out of
idle, a timer is configured to fire within 1-2 ticks. If the CPU is very
busy from exiting idle to when the timer fires then we assume the CPU is
underpowered and ramp to MAX speed.
If the CPU was not sufficiently busy to immediately ramp to MAX speed, then
the governor evaluates the CPU load since the last speed adjustment,
choosing the highest value between that longer-term load or the short-term
load since idle exit to determine the CPU speed to ramp to.
A realtime thread is used for scaling up, giving the remaining tasks the
CPU performance benefit, unlike existing governors which are more likely to
schedule rampup work to occur after your performance starved tasks have
completed.
The tuneables for this governor are:
/sys/devices/system/cpu/cpufreq/interactive/min_sample_time:
The minimum amount of time to spend at the current frequency before
ramping down. This is to ensure that the governor has seen enough
historic CPU load data to determine the appropriate workload.
/sys/devices/system/cpu/cpufreq/interactive/go_maxspeed_load
The CPU load at which to ramp to max speed.
Robin Gong [Fri, 23 Mar 2012 05:59:10 +0000 (13:59 +0800)]
ENGR00177748 pfuze100 mx6q_sabreSD: keep VGEN4 and VGEN5 always on
To enable regulator_has_full_constraints when kernel boot, some regulator
be kept on always, from SabreSD schematic, VGEN4 and VGEN5 of pfuze100 should
be on forever.
Lily Zhang [Fri, 23 Mar 2012 10:02:40 +0000 (18:02 +0800)]
ENGR00177780 mx6dl sabresd: add USB support for RevB board
- Configure USB_OTG_PWR_EN PIN as GPIO
- Configure GPR1 bit 13 to select "usb_otg_id" as
ENET_RX_ER
- To make USBOTG work on RevB board, HW rework is required.
Signed-off-by: Lily Zhang <r58066@freescale.com> Signed-off-by: Tony LIU <junjie.liu@freescale.com>
Hake Huang [Fri, 23 Mar 2012 02:57:37 +0000 (10:57 +0800)]
ENGR00177737-2: add HDMI sii902x support in mx6q-arm2
test with
video=mxcfb0:dev=sii902x_hdmi,1024x768M@60,if=RGB24 disable_mipi_dsi
Note:
1. currently we use the same ipu setting port with on chip HDMI,
if we need coexist need change the on chip HDMI ipu settings.
2. need remove MIPI DSI initial with 'disable_mipi_dsi' in kernel command line,
as mipi dsi reset will reset on board sii902x as well.
3. change the I2C2 work at 100K not 400K, to be compatible with EDID spec.
4. the side effect is that Sii902x will have to use "sii902x_hdmi",
instead of "hdmi" as before
Lily Zhang [Tue, 13 Mar 2012 10:47:50 +0000 (18:47 +0800)]
ENGR00177310-3 v4l2 capture: enable mclk when open function
Enable mclk when opening v4l2 capture device and disable
mclk when closing v4l2 capture device.
If mclk is disabled when operating MIPI camera, the test
is failed.
Danny Nold [Wed, 21 Mar 2012 04:01:53 +0000 (23:01 -0500)]
ENGR00177359 - EPDC fb: Add EPDC support to SabreSD board
- Change EPDC pad groups to have one for EPDC enable and one
for EPDC disable.
- Add EPDC and Maxim 17135 structures and functions to SabreSD
board file. Code pulled in with minimal change from ARM2 board
file.
One exception: Had to remove regulator_has_full_constraints()
from max17135_regulator_init() to prevent PFUZE from disabling
regulators and removing power from the board at the end of
kernel initialization.
Signed-off-by: Danny Nold <dannynold@freescale.com>
Tony LIU [Wed, 7 Mar 2012 07:53:56 +0000 (15:53 +0800)]
ENGR00176299-1 usb host suspend/resume can't work randomly
MSL part
- after suspend bit is set, we need to set PWD bit and
clear it right now to let PHY know the state change
- after suspend bit is set, disconnect detection should be
clear
- after set resume bit, disconnect detection should be set
after 30 ms
- IC issue PDM refer to
TKT092876
TKT092872
Signed-off-by: Tony LIU <junjie.liu@freescale.com>
Lily Zhang [Tue, 13 Mar 2012 08:42:34 +0000 (16:42 +0800)]
ENGR00177083-1 i.mx6: sabresd: remove the prefix MX6Q from gpio definition
Since i.mx6q and i.mx6sdl share the same sabreauto board, the
gpio is the same. Remove the MX6Q_ prefix from gpio defintion to
avoid the confusion which may think it is MX6Q specific.
Robby Cai [Fri, 16 Mar 2012 03:40:02 +0000 (11:40 +0800)]
ENGR00177046: Add the platform dependency for PXP in Kconfig
If there's no dependency, build will be broken when do
`make ARCH=arm CROSS_COMPILE=<cross-compiler path> allmodconfig'
`make'
because PXP module will be turned on. This patch fixed it.
Lin Fuzhen [Thu, 1 Mar 2012 10:52:09 +0000 (18:52 +0800)]
ENGR00175884 System resume failed when the power key was pressed shortly
Some platform like Android needs to get the power key event to
reume the other devcies such as FB, TS. System resume failed when
the gpio power key was pressed shortly sometime, but can resume the
by long press the power key.
The root cause of this issue is that the GPIO IRQ is registered as device
IRQ, but device IRQs will just be enabled after early resume finished,
so when the power key press shortly, the gpio-irq may still disabled in that
time, and the ISR will be ignored and could not detect the key down event.
To fix this bug, add the IRQF_EARLY_RESUME flag to the irq if platform
has specified that the button can wake up the system , in this way, this
irq will be enabled during syscore resume, so that the power key press
can be handled and reported as early as possible.
Signed-off-by: Lin Fuzhen <fuzhen.lin@freescale.com>