Age | Commit message (Collapse) | Author |
|
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]
Signed-off-by: Jason Liu <r64343@freescale.com>
|
|
This patch fixes a typo in a kernel log.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
so that system can use 2 type of HDMI device driver sii902x and on chip one
Signed-off-by: Hake Huang <b20222@freescale.com>
|
|
- 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>
|
|
- 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>
|
|
ldb: avoid NULL pointer when ldb driver is probed but not inited.
It can lead to kernel crash when framebuffer on LVDS panel is not inited.
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
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.
Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
|
|
- 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>
|
|
This patch checks memory resource start address before
using the memory resource.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
(cherry picked from commit 2d16313abad65330cb03d365d307f2d0caafe955)
|
|
1. Add MIPI LCD ID detection.
2. Disable MIPI clock when no MIPI LCD panel deteced.
3. Add timeout feature for register read/write to improve error handle.
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
- Added new register definitions for EPDCv2.0
- Added support for 64 LUTs
- Conditionalized code for EPDC versions 1.0, 2.0, and 2.1
- Support for EPDC auto-waveform selection
- Support for collision test mode
- Support for PxP bypassing
- Support for LUT cancellation
- Support for new PxP limitations
- Support for collision minimization EPDC feature
- Added workaround for collision status bug (can't clear
IRQ before reading collision status for LUTs 16-63)
Signed-off-by: Danny Nold <dannynold@freescale.com>
|
|
MIPI_DSI: mipi dsi panel enable should be after IPU init,
due to ENGR00173962 change in the mxc_ipuv3_fb.c
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
Add functionality to parse Audio Data Blocks from EDID data to
find out what modes of LPCM are suppored by the HDMI sink device.
The parsed settings are saved in the hdmi mfd. The HDMI audio driver
will check the settings when the audio stream is opened and will
then apply appropriate constraints.
If we are unable to read from the EDID, then we default to supporting
Basic Audio as defined by the HDMI specification (stereo, 16 bit,
32KHz, 44.1KHz, 48KHz PCM).
Signed-off-by: Alan Tull <r80115@freescale.com>
|
|
mipi display blank and unblank fail on HW board: MX6Q_ARM2 1G SN 0112
The host processor sends PCLK, HS and VS information to display modules
two frames before sleep-out command is sent.
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
Whenever IPU clock change or gating, the HDMI PHY should reset or config again,
otherwise the HDMI PHY will not work.
It is the root cause for Ubuntu can't show GUI to HDMI device when bootup
and GPU application tutorial4_es20 no output to HDMI device.
Added enable function in mxcfb_set_par() to fix aboved two issue.
Added HDMI initialization check, only one HDMI instanse supported.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
This patch change is very trivial and simply just add
cpu_is_mx6dl() or using cpu_is_mx6 to replace cpu_is_mx6q
each driver owner will check it and adjust it accordingly later,
such as sdhc etc.
Signed-off-by: Jason Liu <r64343@freescale.com>
|
|
add error handler for mxcfb_blank.
Signed-off-by: Jason Chen <b02280@freescale.com>
(cherry picked from commit 1999793303187b4aa9ccbdfc53f9a4c6ab59e749)
|
|
1. During suspend, LVDS didn't enter low power status.
It needs to disable channel mode and mux control.
It can save ~8mA@3.2V.
2. Clean up the LDB route function for better readability.
3. Fix lvds clk_enable/disable bug,
clk_enable/disable should base on setting_idx variable.
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
This commit intends to implement the flowchart and details
documented in the HDMI Transmitter Controller User Guide
section entitled "Programming Model".
Some input is also from the Synopsys API code.
The HDMI specification requires HDMI to set itself to VGA DVI mode
before reading the EDID.
So follow this sequence when HDMI is hotplugged:
1. Hdmi connector is plugged in, HDMI video gets an interrupt.
2. Clear out video mode list. Add only VGA DVI mode to list.
3. Request VGA DVI mode (call fb_set_var())
4. HDMI video driver will get FB_EVENT_MODE_CHANGE callback and
call mxc_hdmi_setup() to set up HDMI.
5. Read the edid and add video modes from edid. Select the video
mode that is similar to the command line default.
6. Request VGA DVI mode (call fb_set_var())
7. HDMI video driver will get FB_EVENT_MODE_CHANGE callback and
do mxc_hdmi_setup().
Also included is a workaround for an overflow condition in the HDMI.
The frame composer has an arithmetic unit that gets updated every time
we write to one of the FC registers. But sometimes, depending on the
relation between the tmds and sfr clocks, it may happen that this unit
doesn't get updated, even though the registers are holding correct
values. The workaround for this is, after completing the controller
configuration, to rewrite one of the FC registers (i.e. FC_INVIDCONF)
three or four times with the same value, and then follow it up by a SW
reset to the TMDS clock domain (MC_SWRSTZ).
We clear the overflow condition as described above every time we
change video mode. Also an overflow interupt handler will clear the
overflow condition if it happens again. This overflow condition is
expected (and not a problem) when we are in DVI (non-HDMI) mode, so
we do not worry about it in that case.
Signed-off-by: Alan Tull <alan.tull@freescale.com>
|
|
when use pan display, the case could be:
1. a small window wrap in a big frame buffer
2. a frame switch in a serial buffers
the ipuv3 fb driver used to support case 1, and for case 2,
if the fb format is interleaved, there is no problem, but for
non-interleaved format (like I420), there will be a display bug.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
Reserve the overlay fb triple buffer when we have a valid
resource for start and end.
Clear the GB fb buffers when we reserve memory for it.
Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
|
|
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
Add aspect ratio setting into vmode for detailed timing block.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
mipi_dsi: Add blank/unblank support for mipi dsi display
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
remove FB_EVENT_PREMODE_CHANGE for mxc ldb/tve drivers
add dispdrv setup interface for ldb/tve drivers
re-structure the dispdrv framework for display devices
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
change wait for vsync ioctl irq from eof to nfack
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
fix fb offset base address under non-interleave format.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
support vertical flip for fb.
just set it by:
echo 1 > /sys/class/graphics/fb0/rotate
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
fix camera preview failure when using double buffer mode for frame
buffer
Signed-off-by: Yuxi Sun <b36102@freescale.com>
|
|
only check pos when fb is unblank
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
run test like:
/unit_tests//mxc_v4l2_output.out -iw 1280 -ih 720 -cr 1024 700 40 0 -ow 1024
-oh 700 /unit_tests/720p.yuv
Under IPU IC bypass mode, the output color is not correct.
And sometimes come out tearing issue.
Fix them by modify fb driver adding xpanstep support and set vb->state to DONE
after it finish show.
When previous videobuf finish show and next videobuf ready to show, set
VIDEOBUF_DONE state to avoid tearing issue, which make sure showing buffer will
not be dequeue to write new data. It also bring side-effect that the last buffer
can not be dequeue correctly, app need take care about it.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
- Added V3P3 regulator to max17135
- Added calls to enable/disable V3P3 regulator from EPDC driver
- Improved Kconfig detail for max17135 MFD and HWMON entries
Signed-off-by: Danny Nold <dannynold@freescale.com>
|
|
add i2c depends for mxc edid/dvi/hdmi driver.
add i2c depends for codec soc sgtl5000 and cs42888.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
Repeat play with below cmdline:
/unit_tests/mxc_v4l2_output.out -iw 1280 -ih 720 -ow 1280 -oh
720 -fr 10 -l 1 /unit_tests/720p.yuv
Found the ipu update offset function cause this issue, it can be
work-around by setting it only when value changed.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
This new v4l2 output driver is based on videobuf, using dma contig alloc method.
It creates video dev node for each display framebuffer begin from /dev/video16
by default.
If need post-processing, this driver will do it by ipu pp driver which support:
- resizing
- CSC
- rotate
- deinterlacing
If no need post-processing, the IPU IC will be bypassed as old driver, the
buf will be set to fb buffer directly by crack fb smem_start.
The user should do setting before streamon like below:
1. set output crop
2. set ctrl like rotate/vflip/hflip/deinterlacing motion
3. set fmt
4. reqbuf
The new features compare to old driver:
- support multi-instance
- support user point buffer
- runtime suspend/resume
For suspend/resume, still has chance to meet issue on mx6q, will fix later.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
MIPI DSI: Add MIPI DSI driver and support for TRULY WVGA LCD panel
Signed-off-by: Wayne Zou <b36644@freescale.com>
|
|
- Add support for 8-bit grayscale colormaps to be used
during EPDC update processing
- Add support in PxP for programming of colormaps
Signed-off-by: Danny Nold <dannynold@freescale.com>
|
|
Use vmode as aspect rate flag.
which is more easier to use.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
- Move the majority of code from the IRQ handler routine into a workqueue
routine. This should improve system interrupt latency.
- Change the spin_lock protecting EPDC queues into a mutex and change all
associated spin_lock calls into mutex calls.
Signed-off-by: Danny Nold <dannynold@freescale.com>
|
|
- Cleaned up video mode configuration in HDMI driver
- Add support for configurable ipu-to-hdmi mappings
- Add hotplug support.
- Adapt interrupt handling to account for sharing interrupt with HDMI audio
- Remove audio configuration
- Change code to only use CEA HDMI modes
- Add support for AVI InfoFrame
- Add aspect ratio to EDID mode data
- Add rounding support to IPU pix clk setup
- Add powerdown/powerup flow
- Support FB notifications
- Remove build warnings
Signed-off-by: Danny Nold <dannynold@freescale.com>
|
|
Add cea extend revision 1 and 2 support.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
- Fixed bug in how new waveform set is copied into EPDC driver internal
copy of waveform modes.
Signed-off-by: Danny Nold <dannynold@freescale.com>
|
|
make ldb support two ipu in separate mode
cmdline option changed:
"ldb=spl0/1" -- split mode on DI0/1
"ldb=dul0/1" -- dual mode on DI0/1
"ldb=sin0/1" -- single mode on LVDS0/1
"ldb=sep0/1" -- separate mode begin from LVDS0/1
there are two LVDS channels(LVDS0 and LVDS1) which can transfer video
datas, there two channels can be used as split/dual/single/separate mode.
split mode means display data from DI0 or DI1 will send to both channels
LVDS0+LVDS1.
dual mode means display data from DI0 or DI1 will be duplicated on LVDS0
and LVDS1, it said, LVDS0 and LVDS1 has the same content.
single mode means only work for DI0/DI1->LVDS0 or DI0/DI1->LVDS1.
separate mode means you can make DI0/DI1->LVDS0 and DI0/DI1->LVDS1 work
at the same time.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
sii902x hdmi can only support one display, so second time init
function should return -EBUSY.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
1. some display dev need unblank event to power up.
2. add EOF to disp dev string to avoid overflow error.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
set vga output gain to improve quality.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
Add sii902x display driver to mxc_dispdrv.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
change dvi display driver to mxc_dispdrv.
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
1.add AVI and AIF support.
2.add edid 4-block reading support.(not test)
For RGB input fmt support, pls input cmdline like:
video=mxcdixfb:RGB24,1024x768M@60
For YUV input fmt support, pls input cmdline like:
video=mxcdixfb:VYU444,1024x768M@60
Signed-off-by: Jason Chen <b02280@freescale.com>
|
|
add dispdrv support.
add dispdrv sub-driver ldb/lcdif/tve support.
change ipuv3 fb driver for new ipu and dispdrv framework.
Signed-off-by: Jason Chen <jason.chen@freescale.com>
|