| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
| |
Just as what the V4L2 PXP does, we should pass the drect
w/h and output w/h accroding to the rotation angle.
Signed-off-by: Fancy Fang <chen.fang@freescale.com>
(cherry picked from commit bf95e3ee4131ce3ee78050f098704588766e8b07)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Issue reproduce steps:
1. Boot up without HDMI cable plugin
2. Insert the HDMI cable.
3. echo mem > /sys/power/state , enter suspend,
4. resume it,
System can resume from suspend but display is blank.
Error log:
mxc_sdc_fb fb.31: Unable to allocate framebuffer memory
detected fb_set_par error, error code: -12
In mxc hdmi driver, if system bootup without hdmi cable plugin,
driver will create a default modelist.
In fbcon driver, array fb_display[] initialized when system bootup
and save current mode pointer that point to default modelist.
When hdmi cable is plugin the modelist will rebuild according edid
data, but the pointer of video mode in fb_display[] is not updated.
When system resume, fbcon will use the invalidate pointer to
configured framebuffer, framebuffer will crash.
Add function fb_new_modelist() after modelist is rebuild to fix the
issue.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since commit 0bec46131d88 (ENGR00318063-8: ARM: imx6q: hide buggy
ldb_di_sel from clk API), the mux clock ldb_di_sel becomes unavailable
from the clock tree. The LDB driver sets up its pixel clock rate with
the help of ldb_di_sel knowledge, and thus causes problem. The net
result is the LDB pixel clock rate slows down to 50 MHz (50285714) from
the original 64 MHz (64653061) on imx6q.
The patch fixes the problem by removing the ldb_di_sel knowledge from
the clock configuration path and just setting the rate on div_sel[chno]
clock. The bonus point is that we can use chan.vm.pixelclock directly
instead of calculating the required rate we need to set on
ldb_di_sel_parent.
Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
|
|
|
|
|
|
|
|
| |
Add dcic driver source code.
Support two instance dcic1 and dcic2.
Signed-off-by: Sandor Yu <R01008@freescale.com>
(cherry picked from commit 5dd90299f33e93252bd1cc7a9704adb9f469fa66)
|
|
|
|
|
|
|
|
| |
Add a missing 'break' in the MXCFB_CSC_UPDATE case in mxcfb_ioctl(),
to prevent it to always return EINVAL (Invalid argument).
Acked-by: Liu Ying <Ying.Liu@freescale.com>
Signed-off-by: Julien Olivain <julien.olivain@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During hdmi hotplug test, there's a possibility that X-server unblanks
the frame buffer while HDMI-audio just gets the signal to start playback.
Then audio would get an unblanked state right before the playback and
bypassed the DMA enabling code. So this issue is caused by the race
between unblank and set_cable_state().
This patch sets the hdmi cable state a bit earilier so as to let audio
play first. If unblank happens later, the hdmi core and hdmi audio would
be robust enough to handle that case as long as it's not racing with the
other parts.
Acked-by: Sandor Yu <R01008@freescale.com>
Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
(cherry picked from commit 2917061c498a97e3c3b99ac616b6f3202f8a0499)
|
|
|
|
|
|
|
|
|
|
| |
In order to avoid any pixelation issue, we should disable a LVDS
channel before its relevant display controlled is enabled. This
patch adds logics to disable the LVDS channel in the setup()
callback which is invoked before the IPUv3 display controller is
disabled and re-enabled.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
| |
Set the correct permissions of the fsl_disp_property sysfs entry.
Acked-by: Liu Ying <Ying.Liu@freescale.com>
Signed-off-by: Julien Olivain <julien.olivain@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
xserver will read default video mode in command line by sysfs node
/sys/class/graphics/fb0/mode, but the sysfs node is not initialized
when system bootup without hdmi cable plugin
or frame buffer register in blank state.
Fixed:
- Remove unused previous_mode
- Add default_mode, initialize in disp_init function.
- Initialize fbi->mode in disp_init function and hdmi_setup function.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
|
| |
The mxc ipuv3 fb driver would report any display driver name that
it is trying to register. To suppress the report, this patch has
the driver provide the registered display driver name after register
finishes.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
| |
Since LCDIF may drive LDB, let's add FB_MXS to LDB Kconfig
dependency.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
| |
Since there is no encoder driver using the post_init
callback, let's drop it.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch almost reworks the LDB driver to make the
implementation simpler and clearer. The new version
should support all the LDB modules embedded in imx53,
imx6qdl and imx6sx. The lvds-channel subsidiary DT
node is introduced to represent each LVDS channel.
People may specify a channel's CRTC, working mode(dual
mode or split mode), data width, data mapping, display
timing and if it is a primary channel in the node.
Change logs:
* Use CTRC concept so that the driver may support both
IPU and LCDIF as the display engines.
* Add mxc dispdrv enable() callback.
* Cache LDB ctrl register value at probe()/setup()/
enable() stages and finally write to the register at
enable() stage.
* Simplify logics for setting ctrl/bus muxing/clocks.
* Use regmap to write crtl and bus muxing registers.
* Remove LDB description in DT binding doc fsl_ipuv3_fb.txt.
Instead, add a new one in fsl,ldb.txt.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds framebuffer info structure to the mxc display driver
enable/disable callback parameters so that the encoder drivers may
know the framebuffer information. In this way, the encoder drivers
which may deal with more than one framebuffer are able to figure out
the one it is handling. A real example is the LDB encoder, which may
deal with two standalone framebuffers at most.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
| |
The encoder drivers should decide if they need mode string for
initialization or not. So, we don't have to provide mode string
in the device tree node.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
| |
As the mxc display system is getting more and more complex, various
CRTCs(CRT controllers), such as IPUx DIy and LCDIFz, may drive
various encoders. For example, imx6sx/imx6dl LCDIF may drive LDB
while imx6dl IPU0 DI0/1 may drive LDB as well. This patch introduces
CRTC concept to the display framework so that the core logic could be
less IPU specific.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For i.MX6 ARD board, the board not support read EDID from TV,
so HDMI driver will create a default support mode list when system
bootup.
Because yocto xserver can not get video mode information from
framebuffer now, and xserver will set default video mode XGA
to framebuffer, but XGA mode is not support by hdmi.
Remove XGA and SXGA from default support list.
HDMI driver will find a nearest match video mode in support list.
It is VGA mode. HDMI support VGA mode well.
Issue is fixed.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
|
| |
This patch adds Hannstar CABC driver support. The CABC
function turns the backlight density of a display panel
automatically according to the content shown on the panel.
It is controlled(enabled/disabled) by a GPIO.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
| |
The IPUv3 IDMAC has a bug to read 32bpp pixels from a
graphics plane whose alpha component is at the most
significant 8 bits. The bug only impacts on cases in which
the relevant separate alpha channel is enabled.
This patch adds check for the errata so that the bad
cases won't be triggered.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
| |
Clean HDMI overflow bit need pixel clock on.
HDMI phy power state is align with pixel clock,
so move HDMI overflow bit mask/unmask code to
hdmi phy powerdown/powerup function.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For mxsfb, the lcdif controller is enabled (with clock enabled as well)
at probe time, but pm_runtime_enable() is called after its enablement,
thus runtime pm function only works at next enablement. The root cause
is that pm_runtime_get_sync() function need to be called after
pm_runtime_enable(). This patch fixes the problem by moving the
position of pm_runtime_enable() ahead.
For epdc fb, runtime pm may not work at probe time if DEFAULT_PANEL_HW_INIT
is turned on (off by default). Fix it for safety.
Signed-off-by: Robby Cai <R63905@freescale.com>
|
|
|
|
|
|
| |
add runtime pm implementation for eLCDIF/EPDC/PxP
Signed-off-by: Robby Cai <R63905@freescale.com>
|
|
|
|
|
|
| |
Remove HDCP register access from HDMI driver.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
|
| |
Add GFP_KERNEL flag for dma_alloc_writecombine() and dma_alloc_coherent()
to make dma memory allocated via cma. Otherwise it's from dma pool whose
size is too small by default (256KB) and will cause allocation failure unless
use 'coherent_pool=xxM' in cmdline. We prefer cma now.
Signed-off-by: Robby Cai <R63905@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add sii902x hdmi chip driver.
- Sii902x initialized as I2C device.
- Support resolution change by application or FB command line.
- Max support resolution 1080p60.
- Support read EDID from hdmi sink.
- Support hdmi cable hotplug.
- Support default video mode read from dts.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
| |
Although now in 3.10 there's display timing dts framework but for epdc
driver there are other timing parameters besides the fb_videomode. It also
makes sense to move the timing parameters in epdc driver.
Signed-off-by: Robby Cai <R63905@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
merge the mach/epdc.h into linux/mxcfb_epdc.h
drop VM_RESERVED flag as deprecated.
drop VM_IO flag as it's automatically set in remap_pfn_range()
use <linux/platform_data/dma-imx.h> instead of <mach/dma.h>
use module_platform_driver()
add binding dts document for epdc fb driver
change the devname for interrupt from 'fb_dma' to 'epdc' to make it clear
Signed-off-by: Robby Cai <R63905@freescale.com>
|
|
|
|
|
|
|
| |
- Add hdmi cec source code.
- Remove dead code from hdmi driver.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
| |
- Remove chip revision check code.
- Set HDMI event as SDMA event2 for HDMI audio.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
|
|
| |
In ldb split mode, the ldb_di[0|1]_ipu_div should be configured
as clock dividers of 1/3.5, while in others ldb modes of 1/7.
This patch sets the di[0|1]_div_3_5 or di[0|1]_div_7 clocks to be
the parents of di[0|1]_div_sel clocks according to the ldb mode.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
| |
This patch replaces ioremap()/iounmap() with devm_ioremap() to
simplify the code.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch is a fastforward porting for mipi dsi driver and
TRULY-WVGA mipi panel driver.
* Add devicetree support for the mipi dsi driver.
* Get mipi config clock source in the mipi dsi driver.
* Change clk_enable()/clk_disable() to clk_prepare_enable()/
clk_disable_unprepare().
* Move mipi dsi driver initialization stuff to mipi_dsi_probe()
from mipi_dsi_disp_init().
* Move mach/mipi_dsi.h to linux/mipi_dsi.h.
* Remove __devexit_p and __devexit since 3.10 kernel doesn't
support them.
* Remove struct mipi_dsi_platform_data from mach/mipi_dsi.h.
* Remove mach/hardware.h, mach/clock.h, linux/fsl_device.h
and linux/regulator/consumer.h in the drivers.
* Remove special pixel clock setting for imx6sdl since no
issue is found without it.
* Remove unused reset, lcd_power and backlight_power interfaces
in struct mipi_dsi_info.
* Remove unused regulator related entries in struct mipi_dsi_info.
* Remove the IOMUX_GPR3_OFFSET macro from mipi dsi driver since
the muxing is done with common regmap APIs.
* Rename ipu_id to dev_id since i.MX6DL RM tells that lcdif can
connect with mipi dsi.
* Add mipi dsi related information in the devicetree binding
documentation.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This patch defers some ldb initialization operations
in the post init interface so that the drive won't
overwrite or damage a registered display device's setup
with the same dev_id and disp_id. The deferred operations
are the parent setting for ipu_dix_clk and the fb notifier
client register.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
| |
This patch adds the post init mxc display driver function call
in the .probe() function to give a chance to display encoders
to defer necessary opertions after their dev_ids and disp_ids
pass usage check.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a new post init interface in the mxc display
driver. It may do necessary deferred operations after a
display device's dev_id and disp_id pass usage check. This
is a feasible way to avoid any setup being overwitten or
damaged by a late coming display device which uses the same
dev_id and disp_id with a display already registered.
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
|
|
|
|
|
|
|
|
| |
- Initialize hdmi driver to support hdcp according dts property fsl,hdcp.
- Remove unused code.
- Add fsl,hdcp property description in mxc_hdmi_video.txt
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
| |
- Add prefix "fsl" to mxc specific dts properties.
- imx_hdmi_type will been referenced by app move it to mxc_hdmi.h.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
|
|
|
|
|
| |
Add MX6Q/DL HDMI core and video driver source code.
Add MXC edid data read and parse source code.
Signed-off-by: Sandor Yu <R01008@freescale.com>
|
|
This is a fast-forward porting of LDB and LCD frame buffer drivers from
3.5.7 kernel to kernel 3.10. The change set is kept as minimum as
possible with only making necessary code changes, which are mostly for
solving compile problems.
* Remove <mach/*> inclusions
* Drop __devinit and __devexit
* Drop vm flag VM_RESERVED
* Protect ldb_setup() with #ifndef MODULE to fix "warning: ‘ldb_setup’
defined but not used" in module build
* Remove fb_prepare_logo() and fb_show_logo() calls, because it breaks
module build, and penguin logo works fine without the calls in
mxc_ipuv3_fb.c
Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
|