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>
Remove the followinig section mismatch warning
WARNING: vmlinux.o(.text+0x1bdf8): Section mismatch in
reference from the function gpmi_nand_platform_init() to
the (unknown reference) .init.data:(unknown)
The function gpmi_nand_platform_init() references
the (unknown reference) __initdata (unknown).
This is often because gpmi_nand_platform_init lacks a __initdata
annotation or the annotation of (unknown) is wrong.
Lily Zhang [Mon, 12 Mar 2012 12:58:54 +0000 (20:58 +0800)]
ENGR00176812-10 mx6solo sabreauto: change display for single IPU
mx6solo only supports single IPU, up to 2 display
by default. So (ARRAY_SIZE(sabr_fb_data) + 1 )/ 2
fb devices are registered. The board configuration
is:
HDMI: ipu-0, di-1
ldb: ipu-0, di-0, sec_ipu-0, sec_di-1, LDB_SEP0
Signed-off-by: Wayne Zou <b36644@freescale.com> Signed-off-by: Lily Zhang <r58066@freescale.com>
Adrian Alonso [Fri, 9 Mar 2012 21:52:02 +0000 (15:52 -0600)]
ENGR00176812-9 mx6 sabreauto: add revB board support
* mx6 sabreauto revB include a steering logic
circuit that enables the route path for i2c3_sda signal.
This patch enables i2c3_sda route to fix io-expander
read/write errors and additional devices connected to
the i2c3 bus.
* mx6 sabreauto revB board uses atheors fec phy.
* Set GPIO_16 as input for IEEE-1588 ts_clk and RMII
reference clk
Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Jason Liu [Thu, 8 Mar 2012 09:22:51 +0000 (17:22 +0800)]
ENGR00176812-3 i.mx6: sabreauto: move some declarations to common.h
Need move some declarations to common.h to avoid each user
individully declare it in their own .c file. This can make
the code clean and also avoid the duplication.
Jason Liu [Thu, 8 Mar 2012 09:11:31 +0000 (17:11 +0800)]
ENGR00176812-2 i.mx6: sabreauto: 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.
This patch also make the GPIO definion sorted by GPIO_NR
Wu Guoxing [Thu, 15 Mar 2012 02:54:26 +0000 (10:54 +0800)]
ENGR00176921:gpu-viv: set outstanding request number for all chips that using gc320
this needs by all the chips(6dl, 6dq) that using gc320
this is vivante's IP bug, that when set outstanding number bigger than
16, it will have a chance for gc320 to dead lock the axi bus, which will
lead to system hang.
also, as our chip can only support axi outstanding of 8(for 6dl) and 4(6dq),
this change have no performance impact.
Danny Nold [Wed, 29 Feb 2012 03:31:56 +0000 (21:31 -0600)]
ENGR00174923 - EPDC fb: Stress Test Failure Fixed
- Changed workqueues to use strict ordering and one process at a time
- Changed mutex ordering in IRQ handler to avoid race condition
- Updated 64-bit logic operation to ensure proper logic
- Fixed bug in how LUT cancellation case is handled. The wrong
index was being used to clear LUT IRQ and IRQ_MASK.
- Increased flush_updates timeout to 8s, since it may take several
seconds if a long queue of updates is waiting.
Signed-off-by: Danny Nold <dannynold@freescale.com>
Sandor Yu [Wed, 29 Feb 2012 10:09:00 +0000 (18:09 +0800)]
ENGR00175700 System hang when change HDMI from XGA to 1080P with display blank
Change the vide mode from XGA to 1080P when display blank,
the system will hang.
It is cause by overflow interrupt will trigger when the video mode change,
but clean the interrupt status bit depend on pixewl clock.
In blank state the pixel clock is gating so the HDMI PHY can't work.
Robin Gong [Tue, 13 Mar 2012 06:50:15 +0000 (14:50 +0800)]
ENGR00176649-3 regulator:Support regulator set in sysfs
By default, regulator set is disabled by kernel, but if enable the function
we can easily set regulator in sysfs, it's useful for unit test of pfuze
regulator. Signed-off-by: Robin Gong <b38343@freescale.com>
Danny Nold [Thu, 8 Mar 2012 21:12:43 +0000 (15:12 -0600)]
ENGR00176504 - EPDC fb: Reduce number of PxP output buffers to 2
- Changed from one-buffer-per-LUT (up to 16 for EPDCv1.0 and 64 for EPDCv2.0)
to using 2 static buffers for PxP output. This is facilitated by the switch
to using a single-threaded workqueue to process each update, which
guarantees that we can use just 2 buffers without clobbering concurrent
updates.
- One known limitation: This restricts the SNAPSHOT update scheme to only 2
concurrent updates. So if a user intends to use SNAPSHOT scheme, the
EPDC_MAX_NUM_BUFFERS #define should be increased based on the desired number
of allowable concurrent updates (with a corresponding penalty in static
memory allocation).
Signed-off-by: Danny Nold <dannynold@freescale.com>
Anson Huang [Tue, 6 Mar 2012 04:00:16 +0000 (12:00 +0800)]
ENGR00176160 [MX6]Correct PLL1 freq change flow
Previous PLL1 freq change is done by switching CPU clock
to 400M pfd or 24M OSC, then modifying
PLL1 div directly, and switch back CPU clock immediately,
it will result in CPU clock stop during PLL1 hardware lock
period, thus, DRAM FIFO may blocked by the data CPU
requested before PLL1 clock changed, and it will block other devices
accessing DRAM, such as IPU, VPU etc. It will cause
underrun or hang issue. We should wait PLL1 lock, then switch
back.
Peter Chen [Wed, 22 Feb 2012 03:14:01 +0000 (11:14 +0800)]
ENGR00176147-1: usb: fix some wakeup problems
- Do not call hcd core adjust wakeup flag code. It may change
wakeup flag, and cause port change detect(PCD) enable setting change.
- For ID wakeup, it should not call host's fsl_usb_recover_hcd at ID interrupt.
The coming ID switch event will resume host.
- Do not need enable wakeup interrupt for host at platform driver resume
routine, it may introduce unnessary wakeup interrupt during bus resume.
The wakeup will be enabled again when usb host goes to controller again
due to autosuspend.
- When there is no gadget enabled, the otg port is still at host mode with
interrupt enabled, so when male Micro-B to female A-type cable with
usb device plugs in, there will be PCD interrupt before hcd core leaves
suspend mode.
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Xinyu Chen [Mon, 5 Mar 2012 08:17:52 +0000 (16:17 +0800)]
ENGR00176068-2 smp_twd: reconfigure clockevents after cpufreq change
After a cpufreq transition, update the clockevent's frequency
by fetching the new clock rate from the clock framework and
reprogram the next clock event.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com> Signed-off-by: Colin Cross <ccross@android.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Rob Herring <rob.herring@calxeda.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Xinyu Chen [Mon, 5 Mar 2012 08:15:20 +0000 (16:15 +0800)]
ENGR00176068-1 mx6q: add smp_twd clock for localtimer
Add a smp_twd system clock which is simple clock
from parent of cpu_clk, and it's rate is half
of the cpu_clk.
This is used for reprograming the twd clock event
after cpu freq is changed.
Also disable local timer setup when wait mode enabled.
ENGR00176136- MX6: Added support for 1.2GHz ARM Frequency
Added the new 1.2GHz working point.
Currently 'arm_freq=1200" should be added to commandline
for the core to run at 1.2GHz. Also ensure that the appropriate
HW board mods have been done to set VDDARM_IN at 1.425V.
Zhang Jiejing [Tue, 6 Mar 2012 06:47:57 +0000 (14:47 +0800)]
ENGR00176159 video: ipuv3-fb: change to timeout semaphore to wait on irq.
change to timeout semaphore to wait on irq.
use no timeout semaphore have below issues:
1. since fbmem.c will hold the console_lock() before call PAN_DISPLAY ioictl,
if have wrong happens on IPU, IRQ not come, any log printk will not ouput,
it will become like a system hang, and developer don't know what's wrong.
2. semaphore don't have timeout, here we can't know irq not come,
so hang it infintly.
3. semaphore lock and unlock in different context is a dangous operation.
To fix these issue, use timedout version to wait on irq.
But for better coding stly to align Kernel Coding Style Doc,
better use complete to wait on irq, use semaphre little ugly.
Lionel Xu [Fri, 2 Mar 2012 05:18:17 +0000 (13:18 +0800)]
ENGR00170526-4 ESAI: To resolve the playback no sound issue occasionally happen
There is no sound output any longer sometimes after several times of playback,
this platch is trying to resolve this issue by:
1)move the global power control bit setting from function hw_params/shutdown to
DAPM, thererfor the PWN bit will not be set/unset each time playback;
2) Signed-off-by: Lionel Xu <Lionel.Xu@freescale.com>
Lionel Xu [Fri, 2 Mar 2012 05:12:26 +0000 (13:12 +0800)]
ENGR00170526-3 ESAI: Remove the workaround to reset codec before playbacking
Previously in order to avoid audio playback no sound issue, a hardware reset
was made to the codec chip each time when doing playback. now remove this
workaround.
Francisco Munoz [Thu, 1 Mar 2012 23:50:28 +0000 (17:50 -0600)]
ENGR00175551:Update sabreauto board file for handling spi and paralle nor
*Files affected: board-mx6q_sabreauto.c
*Added IOMUX settings for parallel nor
*Utilized physmap driver in order to probe the chip
*Implemented conditional compilation enabling either spi or parallel
nor.
Signed-off-by: Francisco Munoz <b37752@freescale.com>
Danny Nold [Wed, 29 Feb 2012 20:31:04 +0000 (14:31 -0600)]
ENGR00175261 - EPDC fb: Remove warning messages from EPDC init
- Remove screen update from probe function. This update is redundant.
The update in mxc_epdc_fb_fw_handler() will update and show the tux
logo if FB console is added, so this achieves the same effect as the
update invocation that was removed.
- Remove dmaengine_get(), because SDMA driver returns a failure when
cycling through DMA channels. Since it is not essential to register
with this call, it has been removed. dmaengine_put() also removed.
- Added hw_inialization variable to track whether HW is in process
of being initialized. In which case, we do not print an error
message when an update is received.
Signed-off-by: Danny Nold <dannynold@freescale.com>
Per Forlin [Fri, 1 Jul 2011 16:55:33 +0000 (18:55 +0200)]
mmc: block: add handling for two parallel block requests in issue_rw_rq
Change mmc_blk_issue_rw_rq() to become asynchronous.
The execution flow looks like this:
* The mmc-queue calls issue_rw_rq(), which sends the request
to the host and returns back to the mmc-queue.
* The mmc-queue calls issue_rw_rq() again with a new request.
* This new request is prepared in issue_rw_rq(), then it waits for
the active request to complete before pushing it to the host.
* When the mmc-queue is empty it will call issue_rw_rq() with a NULL
req to finish off the active request without starting a new request.
Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Per Forlin [Fri, 1 Jul 2011 16:55:31 +0000 (18:55 +0200)]
mmc: queue: add a second mmc queue request member
Add an additional mmc queue request instance to make way for two active
block requests. One request may be active while the other request is
being prepared.
Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Per Forlin [Fri, 1 Jul 2011 16:55:29 +0000 (18:55 +0200)]
mmc: block: add a block request prepare function
Break out code from mmc_blk_issue_rw_rq to create a block request prepare
function. This doesn't change any functionallity. This helps when handling
more than one active block request.
Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Per Forlin [Sat, 9 Jul 2011 21:12:36 +0000 (17:12 -0400)]
mmc: block: add member in mmc queue struct to hold request data
The way the request data is organized in the mmc queue struct, it only
allows processing of one request at a time. This patch adds a new struct
to hold mmc queue request data such as sg list, request, blk request and
bounce buffers, and updates any functions depending on the mmc queue
struct. This prepares for using multiple active requests in one mmc queue.
Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Adrian Hunter [Tue, 28 Jun 2011 14:16:02 +0000 (17:16 +0300)]
mmc: queue: let host controllers specify maximum discard timeout
Some host controllers will not operate without a hardware
timeout that is limited in value. However large discards
require large timeouts, so there needs to be a way to
specify the maximum discard size.
A host controller driver may now specify the maximum discard
timeout possible so that max_discard_sectors can be calculated.
However, for eMMC when the High Capacity Erase Group Size
is not in use, the timeout calculation depends on clock
rate which may change. For that case Preferred Erase Size
is used instead.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Chris Ball <cjb@laptop.org>
Check the status bits in the r/w command response for any errors.
If error bits are set, then we won't have seen any data transferred,
so it's pointless doing any further checking.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
mmc: block: improve error recovery from command channel errors
Command channel errors fall into four classes:
1. The command was issued with the card in the wrong state
2. The command failed to be received by the card correctly
3. The cards response failed to be received by the host (CRC error)
4. The card failed to respond to the card
For (1), in theory we should know that the card is in the correct state.
However, a failed stop command (or other failure) may result in the card
remaining in a data transfer state from the previous command. If we
detect this condition, we try to recover by sending a stop command.
For the initial commands (set block count and the read/write command)
no data will have been transferred. All that we need deal with is
retrying at this point. A failed stop command can be remedied as
above.
If we are unable to recover the card (eg, the card ignores our requests
for status, or we don't recognise the error code) then we immediately
fail the request.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>