* Re: [PATCH 00/23] OMAPDSS: misc patches
From: Tomi Valkeinen @ 2015-12-16 15:36 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-1-git-send-email-tomi.valkeinen@ti.com>
[-- Attachment #1: Type: text/plain, Size: 748 bytes --]
On 13/12/15 22:24, Laurent Pinchart wrote:
> Hi Tomi,
>
> Thank you for the patches.
>
> On Wednesday 09 December 2015 17:59:28 Tomi Valkeinen wrote:
>> Hi,
>>
>> Here is a pile of smallish patches for omapdss, forward ported from TI's
>> product kernel (which means they have had some testing).
>>
>> Many of these patches prepare the omapdss driver for writeback by cleaning
>> up writeback related code, and adding bits here and there for register
>> level writeback support. The patch to add writeback support itself is
>> missing, as it's still not in a stable state.
>
> For 1/23, 2/13, 20/23, 21/23 and 23/23,
>
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Thanks for the review!
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* [PATCH 2/2] video: mxsfb: manage LCD_RESET signal according to reset-active property
From: Mans Rullgard @ 2015-12-15 17:24 UTC (permalink / raw)
To: Jean-Christophe Plagniol-Villard, Tomi Valkeinen, linux-fbdev,
linux-kernel
Cc: marex
In-Reply-To: <1450200297-19243-1-git-send-email-mans@mansr.com>
Activate/deactivate the LCD_RESET signal as specified by the
reset-active DT property when the controller is disabled/enabled.
If the property is missing, leave the signal unchanged.
Signed-off-by: Mans Rullgard <mans@mansr.com>
---
drivers/video/fbdev/mxsfb.c | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/drivers/video/fbdev/mxsfb.c b/drivers/video/fbdev/mxsfb.c
index 4e6608c..0200a0f 100644
--- a/drivers/video/fbdev/mxsfb.c
+++ b/drivers/video/fbdev/mxsfb.c
@@ -99,6 +99,7 @@
#define CTRL1_FIFO_CLEAR (1 << 21)
#define CTRL1_SET_BYTE_PACKAGING(x) (((x) & 0xf) << 16)
#define CTRL1_GET_BYTE_PACKAGING(x) (((x) >> 16) & 0xf)
+#define CTRL1_RESET (1 << 0)
#define TRANSFER_COUNT_SET_VCOUNT(x) (((x) & 0xffff) << 16)
#define TRANSFER_COUNT_GET_VCOUNT(x) (((x) >> 16) & 0xffff)
@@ -152,6 +153,9 @@
#define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT (1 << 6)
#define MXSFB_SYNC_DOTCLK_FALLING_ACT (1 << 7) /* negtive edge sampling */
+#define MXSFB_RESET_LOW 1
+#define MXSFB_RESET_HIGH 2
+
enum mxsfb_devtype {
MXSFB_V3,
MXSFB_V4,
@@ -181,6 +185,7 @@ struct mxsfb_info {
unsigned dotclk_delay;
const struct mxsfb_devdata *devdata;
u32 sync;
+ u32 reset;
struct regulator *reg_lcd;
};
@@ -362,6 +367,11 @@ static void mxsfb_enable_controller(struct fb_info *fb_info)
writel(CTRL_RUN, host->base + LCDC_CTRL + REG_SET);
+ if (host->reset = MXSFB_RESET_HIGH)
+ writel(CTRL1_RESET, host->base + LCDC_CTRL1 + REG_CLR);
+ else if (host->reset = MXSFB_RESET_LOW)
+ writel(CTRL1_RESET, host->base + LCDC_CTRL1 + REG_SET);
+
host->enabled = 1;
}
@@ -388,6 +398,11 @@ static void mxsfb_disable_controller(struct fb_info *fb_info)
loop--;
}
+ if (host->reset = MXSFB_RESET_HIGH)
+ writel(CTRL1_RESET, host->base + LCDC_CTRL1 + REG_SET);
+ else if (host->reset = MXSFB_RESET_LOW)
+ writel(CTRL1_RESET, host->base + LCDC_CTRL1 + REG_CLR);
+
reg = readl(host->base + LCDC_VDCTRL4);
writel(reg & ~VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4);
@@ -410,7 +425,7 @@ static void mxsfb_disable_controller(struct fb_info *fb_info)
static int mxsfb_set_par(struct fb_info *fb_info)
{
struct mxsfb_info *host = to_imxfb_host(fb_info);
- u32 ctrl, vdctrl0, vdctrl4;
+ u32 ctrl, ctrl1, vdctrl0, vdctrl4;
int line_size, fb_size;
int reenable = 0;
@@ -439,12 +454,13 @@ static int mxsfb_set_par(struct fb_info *fb_info)
ctrl = CTRL_BYPASS_COUNT | CTRL_MASTER |
CTRL_SET_BUS_WIDTH(host->ld_intf_width);
+ ctrl1 = readl(host->base + LCDC_CTRL1) & CTRL1_RESET;
switch (fb_info->var.bits_per_pixel) {
case 16:
dev_dbg(&host->pdev->dev, "Setting up RGB565 mode\n");
ctrl |= CTRL_SET_WORD_LENGTH(0);
- writel(CTRL1_SET_BYTE_PACKAGING(0xf), host->base + LCDC_CTRL1);
+ ctrl1 |= CTRL1_SET_BYTE_PACKAGING(0xf);
break;
case 32:
dev_dbg(&host->pdev->dev, "Setting up RGB888/666 mode\n");
@@ -462,7 +478,7 @@ static int mxsfb_set_par(struct fb_info *fb_info)
break;
}
/* do not use packed pixels = one pixel per word instead */
- writel(CTRL1_SET_BYTE_PACKAGING(0x7), host->base + LCDC_CTRL1);
+ ctrl1 |= CTRL1_SET_BYTE_PACKAGING(0x7);
break;
default:
mxsfb_disable_axi_clk(host);
@@ -472,6 +488,7 @@ static int mxsfb_set_par(struct fb_info *fb_info)
}
writel(ctrl, host->base + LCDC_CTRL);
+ writel(ctrl1, host->base + LCDC_CTRL1);
writel(TRANSFER_COUNT_SET_VCOUNT(fb_info->var.yres) |
TRANSFER_COUNT_SET_HCOUNT(fb_info->var.xres),
@@ -736,6 +753,7 @@ static int mxsfb_init_fbinfo_dt(struct mxsfb_info *host,
struct device_node *display_np;
struct videomode vm;
u32 width;
+ u32 reset;
int ret;
display_np = of_parse_phandle(np, "display", 0);
@@ -776,6 +794,10 @@ static int mxsfb_init_fbinfo_dt(struct mxsfb_info *host,
goto put_display_node;
}
+ ret = of_property_read_u32(display_np, "reset-active", &reset);
+ if (!ret)
+ host->reset = reset ? MXSFB_RESET_HIGH : MXSFB_RESET_LOW;
+
ret = of_get_videomode(display_np, &vm, OF_USE_NATIVE_MODE);
if (ret) {
dev_err(dev, "failed to get videomode from DT\n");
--
2.6.3
^ permalink raw reply related
* Re: [PATCH v2] ARM: multi_v7_defconfig: Enable some drivers for LS1021A
From: Arnd Bergmann @ 2015-12-15 16:46 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1449650499-28660-1-git-send-email-b18965@freescale.com>
On Wednesday 09 December 2015 16:41:39 Alison Wang wrote:
> This patch enables some drivers for LS1021A, such as
> GIANFAR, WATCHDOG, AUDIO, QSPI, I2C, ESDHC, EDMA, FTM.
> QorIQ Clock Framework and Ramdisk support is also enabled.
>
> Signed-off-by: Alison Wang <alison.wang@freescale.com>
>
Applied to next/defconfig, thanks!
Arnd
^ permalink raw reply
* [GIT PULL] fbdev fixes for 4.4
From: Tomi Valkeinen @ 2015-12-15 15:01 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-fbdev, linux-kernel@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 1111 bytes --]
Hi Linus,
Please pull two fbdev fixes for 4.4.
Tomi
The following changes since commit 527e9316f8ec44bd53d90fb9f611fa7ffff52bb9:
Linux 4.4-rc4 (2015-12-06 15:43:12 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git tags/fbdev-fixes-4.4
for you to fetch changes up to a54c1ddbe3bc07eadb0096c4abe6224e7f363b66:
OMAPDSS: fix timings for VENC to match what omapdrm expects (2015-12-09 12:57:13 +0200)
----------------------------------------------------------------
fbdev fixes for 4.4
* OMAP: fix analog tv-out when using omapdrm
* fsl: Fix kernel crash when diu_ops is not implemented
----------------------------------------------------------------
H. Nikolaus Schaller (1):
OMAPDSS: fix timings for VENC to match what omapdrm expects
Wang Dongsheng (1):
video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented
drivers/video/fbdev/fsl-diu-fb.c | 13 ++++++++++++-
drivers/video/fbdev/omap2/dss/venc.c | 12 ++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 03/23] OMAPDSS: tpd12s015: remove platform data support
From: Tomi Valkeinen @ 2015-12-15 14:03 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-4-git-send-email-tomi.valkeinen@ti.com>
[-- Attachment #1: Type: text/plain, Size: 1025 bytes --]
On 13/12/15 22:07, Laurent Pinchart wrote:
>> static int tpd_probe_of(struct platform_device *pdev)
>> {
>> @@ -282,11 +257,7 @@ static int tpd_probe(struct platform_device *pdev)
>>
>> platform_set_drvdata(pdev, ddata);
>>
>> - if (dev_get_platdata(&pdev->dev)) {
>> - r = tpd_probe_pdata(pdev);
>> - if (r)
>> - return r;
>> - } else if (pdev->dev.of_node) {
>> + if (pdev->dev.of_node) {
>> r = tpd_probe_of(pdev);
>> if (r)
>> return r;
>
> How about moving the else case not shown here to the beginning of the function
> with
>
> if (!pdev->dev.of_node)
> return -ENODEV;
>
> and lowering the indentation level here with just
>
> r = tpd_probe_of(pdev);
> if (r)
> return r;
>
> Apart from that the patch looks good to me.
True, it can be cleaned up. I'll do that in a separate patch, so that
this one stays simple. I can also move the contents of tpd_probe_of()
into tpd_probe(), as there's no point in having a separate function for of.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH v6 1/2] video: fbdev: pxafb: loosen the platform data bond
From: Tomi Valkeinen @ 2015-12-15 13:22 UTC (permalink / raw)
To: Robert Jarzmik, Jean-Christophe Plagniol-Villard
Cc: linux-fbdev, linux-kernel
In-Reply-To: <1449955631-14955-1-git-send-email-robert.jarzmik@free.fr>
[-- Attachment #1: Type: text/plain, Size: 624 bytes --]
On 12/12/15 23:27, Robert Jarzmik wrote:
> In order to prepare the transition to a mixed platform data and
> device-tree initialization, remove all the platform data references all
> over the driver.
>
> Copy the platform data into the internal structure of the pxafb, and
> only use this afterward.
>
> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
> ---
> drivers/video/fbdev/pxafb.c | 54 ++++++++++++++++++++++++++++-----------------
> drivers/video/fbdev/pxafb.h | 2 ++
> 2 files changed, 36 insertions(+), 20 deletions(-)
Thanks, I've queued this and the second patch for 4.5.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 1/2] video:omap2:dss: fix timings for VENC to match what omapdrm expects
From: Tomi Valkeinen @ 2015-12-15 12:53 UTC (permalink / raw)
To: H. Nikolaus Schaller
Cc: linux-fbdev, linux-kernel, dri-devel, gta04-owner,
Laurent Pinchart, linux-omap, Jean-Christophe Plagniol-Villard
In-Reply-To: <5BB301DB-5429-422E-B672-E7A508441C45@goldelico.com>
[-- Attachment #1: Type: text/plain, Size: 233 bytes --]
On 13/12/15 20:41, H. Nikolaus Schaller wrote:
> Great that you did find the real reason of the problem.
>
> I have tested it on the GTA04 and it also works.
>
> Will the patches arrive in 4.5?
4.4, I hope.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH RFC 7/9] omapfb: move vrfb into omapfb
From: Tomi Valkeinen @ 2015-12-14 7:14 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: linux-fbdev, dri-devel
In-Reply-To: <26366528.DG0zY3a8a2@avalon>
[-- Attachment #1: Type: text/plain, Size: 431 bytes --]
On 13/12/15 21:13, Laurent Pinchart wrote:
> Hi Tomi,
>
> Thank you for the patch.
>
> On Thursday 10 December 2015 16:25:33 Tomi Valkeinen wrote:
>> VRFB is only used by omapfb, so we can move it under omapfb's directory.
>
> Do you see any specific blocker for support of vrfb in omapdss, apart from
> finding time (and a reason) to implement it ?
You probably mean omapdrm. No, no other reasons.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH RFC 8/9] drm/omap: move omapdss & displays under omapdrm
From: Tomi Valkeinen @ 2015-12-14 7:12 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: linux-fbdev, dri-devel
In-Reply-To: <13812119.EOZzmrY4TL@avalon>
[-- Attachment #1: Type: text/plain, Size: 842 bytes --]
On 13/12/15 21:08, Laurent Pinchart wrote:
> Hi Tomi,
>
> Thank you for the patch.
>
> On Thursday 10 December 2015 16:25:34 Tomi Valkeinen wrote:
>> Now that omapfb has its own copy of omapdss and display drivers, we can
>> move omapdss and display drivers which omapdrm uses to omapdrm's
>> directory.
>>
>> We also need to change the main drm Makefile so that omapdrm directory
>> is always entered, because omapdss has a file that always needs to be
>> built-in.
>
> Which file is that ? omapdss-boot-init.c ? I would say "that can't be built as
> a module' instead of 'that always needs to be built-in' as the later implies
> (at least for me) that the file always have to be built-in regardless of
> whether omapdss support is enabled or not.
Yes, ompadss-boot-init.c. I'll change the wording.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 00/23] OMAPDSS: misc patches
From: Laurent Pinchart @ 2015-12-13 20:24 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-1-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patches.
On Wednesday 09 December 2015 17:59:28 Tomi Valkeinen wrote:
> Hi,
>
> Here is a pile of smallish patches for omapdss, forward ported from TI's
> product kernel (which means they have had some testing).
>
> Many of these patches prepare the omapdss driver for writeback by cleaning
> up writeback related code, and adding bits here and there for register
> level writeback support. The patch to add writeback support itself is
> missing, as it's still not in a stable state.
For 1/23, 2/13, 20/23, 21/23 and 23/23,
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Dave Gerlach (1):
> OMAPDSS: adopt pinctrl support
>
> Manisha Agrawal (3):
> OMAPDSS: tpd12s015: remove platform data support
> OMAPDSS: tpd12s015: gpio descriptor API
> OMAPDSS: tpd12s015: CT_CP_HPD as optional gpio
>
> Tomi Valkeinen (19):
> OMAPDSS: DISPC: always set ALIGN when available
> OMAPDSS: fix DISPC_MFLAG_THRESHOLD_OFFSET for WB
> OMAPDSS: add WB to register dump
> OMAPDSS: add num_wbs=1 to omap5 dss features
> OMAPDSS: add 'has_writeback' flag
> OMAPDSS: add OMAP_DSS_CHANNEL_WB to 'enum omap_channel'
> OMAPDSS: refactor dispc_ovl_get_channel_out
> OMAPDSS: handle WB channel in dispc_set/get_channel_out
> OMAPDSS: configure burst size for WB
> OMAPDSS: configure WB fifo thresholds
> OMAPDSS: configure WB mflag threshold
> OMAPDSS: skip pclk check for WB mem2mem
> OMAPDSS: fix rgb-to-yuv color conv coefs
> OMAPDSS: set WB capturemode for m2m mode
> OMAPDSS: add setup for WB capture mode in dispc_wb_setup()
> OMAPDSS: remove extra EXPORT_SYMBOLs
> OMAPDSS: make a two dss feat funcs internal to omapdss
> OMAPDSS: change internal dispc functions to static
> OMAPDSS: remove extra out = NULL checks
>
> .../fbdev/omap2/displays-new/encoder-tpd12s015.c | 119 +++++-----------
> drivers/video/fbdev/omap2/dss/dispc.c | 157 ++++++++++++++----
> drivers/video/fbdev/omap2/dss/dispc.h | 2 +
> drivers/video/fbdev/omap2/dss/dpi.c | 2 +-
> drivers/video/fbdev/omap2/dss/dsi.c | 2 +-
> drivers/video/fbdev/omap2/dss/dss.c | 6 +
> drivers/video/fbdev/omap2/dss/dss.h | 5 -
> drivers/video/fbdev/omap2/dss/dss_features.c | 11 --
> drivers/video/fbdev/omap2/dss/dss_features.h | 5 +-
> drivers/video/fbdev/omap2/dss/hdmi4.c | 2 +-
> drivers/video/fbdev/omap2/dss/hdmi5.c | 2 +-
> drivers/video/fbdev/omap2/dss/rfbi.c | 2 +-
> drivers/video/fbdev/omap2/dss/sdi.c | 2 +-
> drivers/video/fbdev/omap2/dss/venc.c | 2 +-
> include/video/omap-panel-data.h | 15 --
> include/video/omapdss.h | 3 +-
> 16 files changed, 184 insertions(+), 153 deletions(-)
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH 22/23] OMAPDSS: change internal dispc functions to static
From: Laurent Pinchart @ 2015-12-13 20:22 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-23-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patch.
On Wednesday 09 December 2015 17:59:50 Tomi Valkeinen wrote:
> A bunch of dispc functions are only used inside dispc, so we can make
> them static.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> drivers/video/fbdev/omap2/dss/dispc.c | 15 ++++++++++-----
> drivers/video/fbdev/omap2/dss/dss.h | 5 -----
> 2 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/video/fbdev/omap2/dss/dispc.c
> b/drivers/video/fbdev/omap2/dss/dispc.c index 822add50f92e..346822b55947
> 100644
> --- a/drivers/video/fbdev/omap2/dss/dispc.c
> +++ b/drivers/video/fbdev/omap2/dss/dispc.c
> @@ -251,6 +251,11 @@ struct color_conv_coef {
> int full_range;
> };
>
> +static unsigned long dispc_fclk_rate(void);
> +static unsigned long dispc_core_clk_rate(void);
> +static unsigned long dispc_mgr_lclk_rate(enum omap_channel channel);
> +static unsigned long dispc_mgr_pclk_rate(enum omap_channel channel);
> +
Looks like dispc.c should be refactored to avoid forward declarations. That's
unrelated to this patch though, so
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> static unsigned long dispc_plane_pclk_rate(enum omap_plane plane);
> static unsigned long dispc_plane_lclk_rate(enum omap_plane plane);
>
> @@ -2952,7 +2957,7 @@ static void dispc_mgr_set_lcd_type_tft(enum
> omap_channel channel) mgr_fld_write(channel, DISPC_MGR_FLD_STNTFT, 1);
> }
>
> -void dispc_set_loadmode(enum omap_dss_load_mode mode)
> +static void dispc_set_loadmode(enum omap_dss_load_mode mode)
> {
> REG_FLD_MOD(DISPC_CONFIG, mode, 2, 1);
> }
> @@ -3311,7 +3316,7 @@ static void dispc_mgr_get_lcd_divisor(enum
> omap_channel channel, int *lck_div, *pck_div = FLD_GET(l, 7, 0);
> }
>
> -unsigned long dispc_fclk_rate(void)
> +static unsigned long dispc_fclk_rate(void)
> {
> struct dss_pll *pll;
> unsigned long r = 0;
> @@ -3342,7 +3347,7 @@ unsigned long dispc_fclk_rate(void)
> return r;
> }
>
> -unsigned long dispc_mgr_lclk_rate(enum omap_channel channel)
> +static unsigned long dispc_mgr_lclk_rate(enum omap_channel channel)
> {
> struct dss_pll *pll;
> int lcd;
> @@ -3383,7 +3388,7 @@ unsigned long dispc_mgr_lclk_rate(enum omap_channel
> channel) }
> }
>
> -unsigned long dispc_mgr_pclk_rate(enum omap_channel channel)
> +static unsigned long dispc_mgr_pclk_rate(enum omap_channel channel)
> {
> unsigned long r;
>
> @@ -3408,7 +3413,7 @@ void dispc_set_tv_pclk(unsigned long pclk)
> dispc.tv_pclk_rate = pclk;
> }
>
> -unsigned long dispc_core_clk_rate(void)
> +static unsigned long dispc_core_clk_rate(void)
> {
> return dispc.core_clk_rate;
> }
> diff --git a/drivers/video/fbdev/omap2/dss/dss.h
> b/drivers/video/fbdev/omap2/dss/dss.h index 2406bcdb831a..fec68d8939bc
> 100644
> --- a/drivers/video/fbdev/omap2/dss/dss.h
> +++ b/drivers/video/fbdev/omap2/dss/dss.h
> @@ -378,7 +378,6 @@ void dispc_lcd_enable_signal(bool enable);
> void dispc_pck_free_enable(bool enable);
> void dispc_enable_fifomerge(bool enable);
> void dispc_enable_gamma_table(bool enable);
> -void dispc_set_loadmode(enum omap_dss_load_mode mode);
>
> typedef bool (*dispc_div_calc_func)(int lckd, int pckd, unsigned long lck,
> unsigned long pck, void *data);
> @@ -388,7 +387,6 @@ bool dispc_div_calc(unsigned long dispc,
>
> bool dispc_mgr_timings_ok(enum omap_channel channel,
> const struct omap_video_timings *timings);
> -unsigned long dispc_fclk_rate(void);
> int dispc_calc_clock_rates(unsigned long dispc_fclk_rate,
> struct dispc_clock_info *cinfo);
>
> @@ -398,9 +396,6 @@ void dispc_ovl_compute_fifo_thresholds(enum omap_plane
> plane, u32 *fifo_low, u32 *fifo_high, bool use_fifomerge,
> bool manual_update);
>
> -unsigned long dispc_mgr_lclk_rate(enum omap_channel channel);
> -unsigned long dispc_mgr_pclk_rate(enum omap_channel channel);
> -unsigned long dispc_core_clk_rate(void);
> void dispc_mgr_set_clock_div(enum omap_channel channel,
> const struct dispc_clock_info *cinfo);
> int dispc_mgr_get_clock_div(enum omap_channel channel,
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH 05/23] OMAPDSS: tpd12s015: CT_CP_HPD as optional gpio
From: Laurent Pinchart @ 2015-12-13 20:13 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-6-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patch.
On Wednesday 09 December 2015 17:59:33 Tomi Valkeinen wrote:
> From: Manisha Agrawal <manisha.agrawal@ti.com>
>
> tpd12s015 HW has LS_OE, CT_CP_HPD and HPD gpios. Out of these gpios,
> driver only handled LS_OE as optional. The CT_CP_HPD gpio should also
> be treated as optional gpio as it is just a power saving feature. Some
> boards hardwire this gpio to be always enable. In this patch, all access
> to CT_CP_HPD gpio is made optional.
>
> Signed-off-by: Manisha Agrawal <manisha.agrawal@ti.com>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c | 13 ++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c index
> 93f95eaeadad..45a0b8e8d320 100644
> --- a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> +++ b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> @@ -46,9 +46,11 @@ static int tpd_connect(struct omap_dss_device *dssdev,
> dst->src = dssdev;
> dssdev->dst = dst;
>
> - gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1);
> - /* DC-DC converter needs at max 300us to get to 90% of 5V */
> - udelay(300);
> + if (ddata->ct_cp_hpd_gpio) {
> + gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1);
> + /* DC-DC converter needs at max 300us to get to 90% of 5V */
> + udelay(300);
> + }
>
> return 0;
> }
> @@ -64,7 +66,8 @@ static void tpd_disconnect(struct omap_dss_device *dssdev,
> if (dst != dssdev->dst)
> return;
>
> - gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
> + if (ddata->ct_cp_hpd_gpio)
> + gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
gpiod_set_value_cansleep() includes a NULL check so you could remove it from
here.
Apart from that the patch looks good to me.
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> dst->src = NULL;
> dssdev->dst = NULL;
> @@ -240,7 +243,7 @@ static int tpd_probe(struct platform_device *pdev)
> }
>
>
> - gpio = devm_gpiod_get_index(&pdev->dev, NULL, 0,
> + gpio = devm_gpiod_get_index_optional(&pdev->dev, NULL, 0,
> GPIOD_OUT_LOW);
> if (IS_ERR(gpio))
> goto err_gpio;
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH 04/23] OMAPDSS: tpd12s015: gpio descriptor API
From: Laurent Pinchart @ 2015-12-13 20:12 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-5-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patch.
On Wednesday 09 December 2015 17:59:32 Tomi Valkeinen wrote:
> From: Manisha Agrawal <manisha.agrawal@ti.com>
>
> Migrated the gpio APIs to descriptor-interface based.
>
> Signed-off-by: Manisha Agrawal <manisha.agrawal@ti.com>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> .../fbdev/omap2/displays-new/encoder-tpd12s015.c | 81 +++++++------------
> 1 file changed, 30 insertions(+), 51 deletions(-)
>
> diff --git a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c index
> 6f5e27a4fe63..93f95eaeadad 100644
> --- a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> +++ b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> @@ -13,9 +13,8 @@
> #include <linux/delay.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> -#include <linux/gpio.h>
> #include <linux/platform_device.h>
> -#include <linux/of_gpio.h>
> +#include <linux/gpio/consumer.h>
>
> #include <video/omapdss.h>
> #include <video/omap-panel-data.h>
> @@ -24,9 +23,9 @@ struct panel_drv_data {
> struct omap_dss_device dssdev;
> struct omap_dss_device *in;
>
> - int ct_cp_hpd_gpio;
> - int ls_oe_gpio;
> - int hpd_gpio;
> + struct gpio_desc *ct_cp_hpd_gpio;
> + struct gpio_desc *ls_oe_gpio;
> + struct gpio_desc *hpd_gpio;
>
> struct omap_video_timings timings;
> };
> @@ -47,7 +46,7 @@ static int tpd_connect(struct omap_dss_device *dssdev,
> dst->src = dssdev;
> dssdev->dst = dst;
>
> - gpio_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1);
> + gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1);
> /* DC-DC converter needs at max 300us to get to 90% of 5V */
> udelay(300);
>
> @@ -65,7 +64,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev,
> if (dst != dssdev->dst)
> return;
>
> - gpio_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
> + gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
>
> dst->src = NULL;
> dssdev->dst = NULL;
> @@ -145,16 +144,16 @@ static int tpd_read_edid(struct omap_dss_device
> *dssdev, struct omap_dss_device *in = ddata->in;
> int r;
>
> - if (!gpio_get_value_cansleep(ddata->hpd_gpio))
> + if (!gpiod_get_value_cansleep(ddata->hpd_gpio))
> return -ENODEV;
>
> - if (gpio_is_valid(ddata->ls_oe_gpio))
> - gpio_set_value_cansleep(ddata->ls_oe_gpio, 1);
> + if (ddata->ls_oe_gpio)
> + gpiod_set_value_cansleep(ddata->ls_oe_gpio, 1);
gpiod_set_value_cansleep() includes a NULL check so you could remove it here.
>
> r = in->ops.hdmi->read_edid(in, edid, len);
>
> - if (gpio_is_valid(ddata->ls_oe_gpio))
> - gpio_set_value_cansleep(ddata->ls_oe_gpio, 0);
> + if (ddata->ls_oe_gpio)
> + gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0);
And here.
Apart from that the patch looks good to me.
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> return r;
> }
> @@ -163,7 +162,7 @@ static bool tpd_detect(struct omap_dss_device *dssdev)
> {
> struct panel_drv_data *ddata = to_panel_data(dssdev);
>
> - return gpio_get_value_cansleep(ddata->hpd_gpio);
> + return gpiod_get_value_cansleep(ddata->hpd_gpio);
> }
>
> static int tpd_set_infoframe(struct omap_dss_device *dssdev,
> @@ -207,32 +206,6 @@ static int tpd_probe_of(struct platform_device *pdev)
> struct panel_drv_data *ddata = platform_get_drvdata(pdev);
> struct device_node *node = pdev->dev.of_node;
> struct omap_dss_device *in;
> - int gpio;
> -
> - /* CT CP HPD GPIO */
> - gpio = of_get_gpio(node, 0);
> - if (!gpio_is_valid(gpio)) {
> - dev_err(&pdev->dev, "failed to parse CT CP HPD gpio\n");
> - return gpio;
> - }
> - ddata->ct_cp_hpd_gpio = gpio;
> -
> - /* LS OE GPIO */
> - gpio = of_get_gpio(node, 1);
> - if (gpio_is_valid(gpio) || gpio = -ENOENT) {
> - ddata->ls_oe_gpio = gpio;
> - } else {
> - dev_err(&pdev->dev, "failed to parse LS OE gpio\n");
> - return gpio;
> - }
> -
> - /* HPD GPIO */
> - gpio = of_get_gpio(node, 2);
> - if (!gpio_is_valid(gpio)) {
> - dev_err(&pdev->dev, "failed to parse HPD gpio\n");
> - return gpio;
> - }
> - ddata->hpd_gpio = gpio;
>
> in = omapdss_of_find_source_for_first_ep(node);
> if (IS_ERR(in)) {
> @@ -250,6 +223,7 @@ static int tpd_probe(struct platform_device *pdev)
> struct omap_dss_device *in, *dssdev;
> struct panel_drv_data *ddata;
> int r;
> + struct gpio_desc *gpio;
>
> ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL);
> if (!ddata)
> @@ -265,23 +239,28 @@ static int tpd_probe(struct platform_device *pdev)
> return -ENODEV;
> }
>
> - r = devm_gpio_request_one(&pdev->dev, ddata->ct_cp_hpd_gpio,
> - GPIOF_OUT_INIT_LOW, "hdmi_ct_cp_hpd");
> - if (r)
> +
> + gpio = devm_gpiod_get_index(&pdev->dev, NULL, 0,
> + GPIOD_OUT_LOW);
> + if (IS_ERR(gpio))
> goto err_gpio;
>
> - if (gpio_is_valid(ddata->ls_oe_gpio)) {
> - r = devm_gpio_request_one(&pdev->dev, ddata->ls_oe_gpio,
> - GPIOF_OUT_INIT_LOW, "hdmi_ls_oe");
> - if (r)
> - goto err_gpio;
> - }
> + ddata->ct_cp_hpd_gpio = gpio;
>
> - r = devm_gpio_request_one(&pdev->dev, ddata->hpd_gpio,
> - GPIOF_DIR_IN, "hdmi_hpd");
> - if (r)
> + gpio = devm_gpiod_get_index_optional(&pdev->dev, NULL, 1,
> + GPIOD_OUT_LOW);
> + if (IS_ERR(gpio))
> goto err_gpio;
>
> + ddata->ls_oe_gpio = gpio;
> +
> + gpio = devm_gpiod_get_index(&pdev->dev, NULL, 2,
> + GPIOD_IN);
> + if (IS_ERR(gpio))
> + goto err_gpio;
> +
> + ddata->hpd_gpio = gpio;
> +
> dssdev = &ddata->dssdev;
> dssdev->ops.hdmi = &tpd_hdmi_ops;
> dssdev->dev = &pdev->dev;
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH 03/23] OMAPDSS: tpd12s015: remove platform data support
From: Laurent Pinchart @ 2015-12-13 20:07 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1449676791-26304-4-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patch.
On Wednesday 09 December 2015 17:59:31 Tomi Valkeinen wrote:
> From: Manisha Agrawal <manisha.agrawal@ti.com>
>
> All devices using tpd12s015 driver are doing DT boot. No need of further
> supporting the platform data. This patch removes support for platform
> data.
>
> Signed-off-by: Manisha Agrawal <manisha.agrawal@ti.com>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> .../fbdev/omap2/displays-new/encoder-tpd12s015.c | 31 +------------------
> include/video/omap-panel-data.h | 15 -----------
> 2 files changed, 1 insertion(+), 45 deletions(-)
>
> diff --git a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c index
> 990af6baeb0f..6f5e27a4fe63 100644
> --- a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> +++ b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
> @@ -201,31 +201,6 @@ static const struct omapdss_hdmi_ops tpd_hdmi_ops = {
> .set_hdmi_mode = tpd_set_hdmi_mode,
> };
>
> -static int tpd_probe_pdata(struct platform_device *pdev)
> -{
> - struct panel_drv_data *ddata = platform_get_drvdata(pdev);
> - struct encoder_tpd12s015_platform_data *pdata;
> - struct omap_dss_device *dssdev, *in;
> -
> - pdata = dev_get_platdata(&pdev->dev);
> -
> - ddata->ct_cp_hpd_gpio = pdata->ct_cp_hpd_gpio;
> - ddata->ls_oe_gpio = pdata->ls_oe_gpio;
> - ddata->hpd_gpio = pdata->hpd_gpio;
> -
> - in = omap_dss_find_output(pdata->source);
> - if (in = NULL) {
> - dev_err(&pdev->dev, "Failed to find video source\n");
> - return -ENODEV;
> - }
> -
> - ddata->in = in;
> -
> - dssdev = &ddata->dssdev;
> - dssdev->name = pdata->name;
> -
> - return 0;
> -}
>
One extra blank line here.
> static int tpd_probe_of(struct platform_device *pdev)
> {
> @@ -282,11 +257,7 @@ static int tpd_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, ddata);
>
> - if (dev_get_platdata(&pdev->dev)) {
> - r = tpd_probe_pdata(pdev);
> - if (r)
> - return r;
> - } else if (pdev->dev.of_node) {
> + if (pdev->dev.of_node) {
> r = tpd_probe_of(pdev);
> if (r)
> return r;
How about moving the else case not shown here to the beginning of the function
with
if (!pdev->dev.of_node)
return -ENODEV;
and lowering the indentation level here with just
r = tpd_probe_of(pdev);
if (r)
return r;
Apart from that the patch looks good to me.
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> diff --git a/include/video/omap-panel-data.h
> b/include/video/omap-panel-data.h index 69279c013ac4..56830d1dc762 100644
> --- a/include/video/omap-panel-data.h
> +++ b/include/video/omap-panel-data.h
> @@ -45,21 +45,6 @@ struct encoder_tfp410_platform_data {
> int data_lines;
> };
>
> -/**
> - * encoder_tpd12s015 platform data
> - * @name: name for this display entity
> - * @ct_cp_hpd_gpio: CT_CP_HPD gpio number
> - * @ls_oe_gpio: LS_OE gpio number
> - * @hpd_gpio: HPD gpio number
> - */
> -struct encoder_tpd12s015_platform_data {
> - const char *name;
> - const char *source;
> -
> - int ct_cp_hpd_gpio;
> - int ls_oe_gpio;
> - int hpd_gpio;
> -};
>
> /**
> * connector_dvi platform data
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH RFC 7/9] omapfb: move vrfb into omapfb
From: Laurent Pinchart @ 2015-12-13 19:13 UTC (permalink / raw)
To: Tomi Valkeinen; +Cc: linux-fbdev, dri-devel
In-Reply-To: <1449757535-5674-8-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patch.
On Thursday 10 December 2015 16:25:33 Tomi Valkeinen wrote:
> VRFB is only used by omapfb, so we can move it under omapfb's directory.
Do you see any specific blocker for support of vrfb in omapdss, apart from
finding time (and a reason) to implement it ?
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> drivers/video/fbdev/omap2/Kconfig | 3 ---
> drivers/video/fbdev/omap2/Makefile | 2 --
> drivers/video/fbdev/omap2/omapfb/Kconfig | 3 +++
> drivers/video/fbdev/omap2/omapfb/Makefile | 1 +
> drivers/video/fbdev/omap2/{ => omapfb}/vrfb.c | 0
> 5 files changed, 4 insertions(+), 5 deletions(-)
> rename drivers/video/fbdev/omap2/{ => omapfb}/vrfb.c (100%)
>
> diff --git a/drivers/video/fbdev/omap2/Kconfig
> b/drivers/video/fbdev/omap2/Kconfig index c22955d2de9a..7fbdb583de8c 100644
> --- a/drivers/video/fbdev/omap2/Kconfig
> +++ b/drivers/video/fbdev/omap2/Kconfig
> @@ -1,6 +1,3 @@
> -config OMAP2_VRFB
> - bool
> -
> if ARCH_OMAP2PLUS
>
> source "drivers/video/fbdev/omap2/dss/Kconfig"
> diff --git a/drivers/video/fbdev/omap2/Makefile
> b/drivers/video/fbdev/omap2/Makefile index c73a1e864ae8..a52b716a40c1
> 100644
> --- a/drivers/video/fbdev/omap2/Makefile
> +++ b/drivers/video/fbdev/omap2/Makefile
> @@ -1,5 +1,3 @@
> -obj-$(CONFIG_OMAP2_VRFB) += vrfb.o
> -
> obj-y += dss/
> obj-y += displays-new/
> obj-y += omapfb/
> diff --git a/drivers/video/fbdev/omap2/omapfb/Kconfig
> b/drivers/video/fbdev/omap2/omapfb/Kconfig index 13d99a9e6198..e6226aeed17e
> 100644
> --- a/drivers/video/fbdev/omap2/omapfb/Kconfig
> +++ b/drivers/video/fbdev/omap2/omapfb/Kconfig
> @@ -1,3 +1,6 @@
> +config OMAP2_VRFB
> + bool
> +
> menuconfig FB_OMAP2
> tristate "OMAP2+ frame buffer support"
> depends on FB
> diff --git a/drivers/video/fbdev/omap2/omapfb/Makefile
> b/drivers/video/fbdev/omap2/omapfb/Makefile index
> 0490951f95b3..ad68ecf141af 100644
> --- a/drivers/video/fbdev/omap2/omapfb/Makefile
> +++ b/drivers/video/fbdev/omap2/omapfb/Makefile
> @@ -1,3 +1,4 @@
> +obj-$(CONFIG_OMAP2_VRFB) += vrfb.o
> obj-y += dss/
> obj-y += displays/
> obj-$(CONFIG_FB_OMAP2) += omapfb.o
> diff --git a/drivers/video/fbdev/omap2/vrfb.c
> b/drivers/video/fbdev/omap2/omapfb/vrfb.c similarity index 100%
> rename from drivers/video/fbdev/omap2/vrfb.c
> rename to drivers/video/fbdev/omap2/omapfb/vrfb.c
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH RFC 8/9] drm/omap: move omapdss & displays under omapdrm
From: Laurent Pinchart @ 2015-12-13 19:08 UTC (permalink / raw)
To: Tomi Valkeinen; +Cc: linux-fbdev, dri-devel
In-Reply-To: <1449757535-5674-9-git-send-email-tomi.valkeinen@ti.com>
Hi Tomi,
Thank you for the patch.
On Thursday 10 December 2015 16:25:34 Tomi Valkeinen wrote:
> Now that omapfb has its own copy of omapdss and display drivers, we can
> move omapdss and display drivers which omapdrm uses to omapdrm's
> directory.
>
> We also need to change the main drm Makefile so that omapdrm directory
> is always entered, because omapdss has a file that always needs to be
> built-in.
Which file is that ? omapdss-boot-init.c ? I would say "that can't be built as
a module' instead of 'that always needs to be built-in' as the later implies
(at least for me) that the file always have to be built-in regardless of
whether omapdss support is enabled or not.
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
--
Regards,
Laurent Pinchart
^ permalink raw reply
* Re: [PATCH 1/2] video:omap2:dss: fix timings for VENC to match what omapdrm expects
From: H. Nikolaus Schaller @ 2015-12-13 18:41 UTC (permalink / raw)
To: Tomi Valkeinen
Cc: Laurent Pinchart, David Airlie, Jean-Christophe Plagniol-Villard,
dri-devel, linux-kernel, linux-omap, linux-fbdev, gta04-owner,
notasas
In-Reply-To: <5667E3D0.8010600@ti.com>
Hi Tomi,
Am 09.12.2015 um 09:18 schrieb Tomi Valkeinen <tomi.valkeinen@ti.com>:
>
> On 13/11/15 12:29, H. Nikolaus Schaller wrote:
>> Otherwise check_timings fails and we get a "has no modes" message
>> from xrandr.
>>
>> This fix makes the venc assume PAL and NTSC timings that match the
>> timings synthetized by copy_timings_drm_to_omap() from omapdrm
>> mode settings so that check_timings() succeeds.
>>
>> Tested on: BeagleBoard XM, GTA04 and OpenPandora
>>
>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>> ---
>> drivers/video/fbdev/omap2/dss/venc.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>
> I've picked this up.
Thanks!
>
> With this patch and the one below I can get tv-out working on my very old
> beagleboard, and it seems to work with X also. It doesn't start automatically
> as the connection state is unknown, but doing "xrandr --output None-1 --auto"
> was all I needed to enable it.
Great that you did find the real reason of the problem.
I have tested it on the GTA04 and it also works.
Will the patches arrive in 4.5?
So thanks a lot,
Nikolaus
>
> Tomi
>
> From a4274600a5a67256b91266b0d2624b9c9028909b Mon Sep 17 00:00:00 2001
> From: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Date: Tue, 8 Dec 2015 18:32:14 +0200
> Subject: [PATCH] drm/omap: fix fbdev pix format to support all platforms
>
> omap_fbdev always creates a framebuffer with ARGB8888 pixel format. On
> OMAP3 we have VIDEO1 overlay that does not support ARGB8888, and on
> OMAP2 none of the overlays support ARGB888.
>
> This patch changes the omap_fbdev's fb to XRGB8888, which is supported
> by all platforms.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> index b8e4cdec28c3..24f92bea39c7 100644
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -112,11 +112,8 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
> dma_addr_t paddr;
> int ret;
>
> - /* only doing ARGB32 since this is what is needed to alpha-blend
> - * with video overlays:
> - */
> sizes->surface_bpp = 32;
> - sizes->surface_depth = 32;
> + sizes->surface_depth = 24;
>
> DBG("create fbdev: %dx%d@%d (%dx%d)", sizes->surface_width,
> sizes->surface_height, sizes->surface_bpp,
>
^ permalink raw reply
* [PATCH v6 2/2] video: fbdev: pxafb: initial devicetree conversion
From: Robert Jarzmik @ 2015-12-12 21:27 UTC (permalink / raw)
To: Jean-Christophe Plagniol-Villard, Tomi Valkeinen
Cc: linux-fbdev, linux-kernel, Robert Jarzmik
In-Reply-To: <1449955631-14955-1-git-send-email-robert.jarzmik@free.fr>
This patch brings a first support of pxa framebuffer devices to a
devicetree pxa platform, as was before platform data.
There are restrictions with this port, the biggest one being the lack of
support of smart panels. Moreover the conversion doesn't provide a way
to declare multiple framebuffer configurations with different bits per
pixel, only the LCD hardware bus width is used.
The patch was tested on both pxa25x, pxa27x and pxa3xx platform (namely
lubbock, mainstone and zylonite).
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
---
Since v1: Philipp's review: of_graph usage
Since v3: of_device_id sentinel, and all compatible ids added
Since v4: fixed of_device_id table : rebase error on my side, with
braces which were incorrectly added
Since v5: removed depth from DT, retested on pxa27x with both
platform_data and device-tree board
---
drivers/video/fbdev/Kconfig | 2 +
drivers/video/fbdev/pxafb.c | 160 +++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 159 insertions(+), 3 deletions(-)
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index e6d16d65e4e6..3160ff6bed24 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -1880,6 +1880,8 @@ config FB_PXA
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
+ select VIDEOMODE_HELPERS if OF
+ select FB_MODE_HELPERS if OF
---help---
Frame buffer driver for the built-in LCD controller in the Intel
PXA2x0 processor.
diff --git a/drivers/video/fbdev/pxafb.c b/drivers/video/fbdev/pxafb.c
index ed4b1a5dc306..987eb8c4f926 100644
--- a/drivers/video/fbdev/pxafb.c
+++ b/drivers/video/fbdev/pxafb.c
@@ -55,6 +55,9 @@
#include <linux/kthread.h>
#include <linux/freezer.h>
#include <linux/console.h>
+#include <linux/of_graph.h>
+#include <video/of_display_timing.h>
+#include <video/videomode.h>
#include <mach/hardware.h>
#include <asm/io.h>
@@ -2092,6 +2095,148 @@ static void pxafb_check_options(struct device *dev, struct pxafb_mach_info *inf)
#define pxafb_check_options(...) do {} while (0)
#endif
+#if defined(CONFIG_OF)
+static const char * const lcd_types[] = {
+ "unknown", "mono-stn", "mono-dstn", "color-stn", "color-dstn",
+ "color-tft", "smart-panel", NULL
+};
+
+static int of_get_pxafb_display(struct device *dev, struct device_node *disp,
+ struct pxafb_mach_info *info, u32 bus_width)
+{
+ struct display_timings *timings;
+ struct videomode vm;
+ int i, ret = -EINVAL;
+ const char *s;
+
+ ret = of_property_read_string(disp, "lcd-type", &s);
+ if (ret)
+ s = "color-tft";
+
+ for (i = 0; lcd_types[i]; i++)
+ if (!strcmp(s, lcd_types[i]))
+ break;
+ if (!i || !lcd_types[i]) {
+ dev_err(dev, "lcd-type %s is unknown\n", s);
+ return -EINVAL;
+ }
+ info->lcd_conn |= LCD_CONN_TYPE(i);
+ info->lcd_conn |= LCD_CONN_WIDTH(bus_width);
+
+ timings = of_get_display_timings(disp);
+ if (!timings)
+ goto out;
+
+ ret = -ENOMEM;
+ info->modes = kmalloc_array(timings->num_timings,
+ sizeof(info->modes[0]), GFP_KERNEL);
+ if (!info->modes)
+ goto out;
+ info->num_modes = timings->num_timings;
+
+ for (i = 0; i < timings->num_timings; i++) {
+ ret = videomode_from_timings(timings, &vm, i);
+ if (ret) {
+ dev_err(dev, "videomode_from_timings %d failed: %d\n",
+ i, ret);
+ goto out;
+ }
+ if (vm.flags & DISPLAY_FLAGS_PIXDATA_POSEDGE)
+ info->lcd_conn |= LCD_PCLK_EDGE_RISE;
+ if (vm.flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
+ info->lcd_conn |= LCD_PCLK_EDGE_FALL;
+ if (vm.flags & DISPLAY_FLAGS_DE_HIGH)
+ info->lcd_conn |= LCD_BIAS_ACTIVE_HIGH;
+ if (vm.flags & DISPLAY_FLAGS_DE_LOW)
+ info->lcd_conn |= LCD_BIAS_ACTIVE_LOW;
+ if (vm.flags & DISPLAY_FLAGS_HSYNC_HIGH)
+ info->modes[i].sync |= FB_SYNC_HOR_HIGH_ACT;
+ if (vm.flags & DISPLAY_FLAGS_VSYNC_HIGH)
+ info->modes[i].sync |= FB_SYNC_VERT_HIGH_ACT;
+
+ info->modes[i].pixclock = 1000000000UL / (vm.pixelclock / 1000);
+ info->modes[i].xres = vm.hactive;
+ info->modes[i].yres = vm.vactive;
+ info->modes[i].hsync_len = vm.hsync_len;
+ info->modes[i].left_margin = vm.hback_porch;
+ info->modes[i].right_margin = vm.hfront_porch;
+ info->modes[i].vsync_len = vm.vsync_len;
+ info->modes[i].upper_margin = vm.vback_porch;
+ info->modes[i].lower_margin = vm.vfront_porch;
+ }
+ ret = 0;
+
+out:
+ display_timings_release(timings);
+ return ret;
+}
+
+static int of_get_pxafb_mode_info(struct device *dev,
+ struct pxafb_mach_info *info)
+{
+ struct device_node *display, *np;
+ u32 bus_width;
+ int ret, i;
+
+ np = of_graph_get_next_endpoint(dev->of_node, NULL);
+ if (!np) {
+ dev_err(dev, "could not find endpoint\n");
+ return -EINVAL;
+ }
+ ret = of_property_read_u32(np, "bus-width", &bus_width);
+ if (ret) {
+ dev_err(dev, "no bus-width specified: %d\n", ret);
+ return ret;
+ }
+
+ display = of_graph_get_remote_port_parent(np);
+ of_node_put(np);
+ if (!display) {
+ dev_err(dev, "no display defined\n");
+ return -EINVAL;
+ }
+
+ ret = of_get_pxafb_display(dev, display, info, bus_width);
+ of_node_put(display);
+ if (ret)
+ return ret;
+
+ for (i = 0; i < info->num_modes; i++)
+ info->modes[i].bpp = bus_width;
+
+ return 0;
+}
+
+static struct pxafb_mach_info *of_pxafb_of_mach_info(struct device *dev)
+{
+ int ret;
+ struct pxafb_mach_info *info;
+
+ if (!dev->of_node)
+ return NULL;
+ info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
+ if (!info)
+ return ERR_PTR(-ENOMEM);
+ ret = of_get_pxafb_mode_info(dev, info);
+ if (ret) {
+ kfree(info->modes);
+ return ERR_PTR(ret);
+ }
+
+ /*
+ * On purpose, neither lccrX registers nor video memory size can be
+ * specified through device-tree, they are considered more a debug hack
+ * available through command line.
+ */
+ return info;
+}
+#else
+static struct pxafb_mach_info *of_pxafb_of_mach_info(struct device *dev)
+{
+ return NULL;
+}
+#endif
+
static int pxafb_probe(struct platform_device *dev)
{
struct pxafb_info *fbi;
@@ -2104,8 +2249,7 @@ static int pxafb_probe(struct platform_device *dev)
ret = -ENOMEM;
pdata = dev_get_platdata(&dev->dev);
inf = devm_kmalloc(&dev->dev, sizeof(*inf), GFP_KERNEL);
- if (!inf)
- goto failed;
+
if (pdata) {
*inf = *pdata;
inf->modes @@ -2117,8 +2261,9 @@ static int pxafb_probe(struct platform_device *dev)
inf->modes[i] = pdata->modes[i];
}
- fbi = NULL;
if (!pdata)
+ inf = of_pxafb_of_mach_info(&dev->dev);
+ if (IS_ERR_OR_NULL(inf))
goto failed;
ret = pxafb_parse_options(&dev->dev, g_options, inf);
@@ -2313,11 +2458,20 @@ static int pxafb_remove(struct platform_device *dev)
return 0;
}
+static const struct of_device_id pxafb_of_dev_id[] = {
+ { .compatible = "marvell,pxa270-lcdc", },
+ { .compatible = "marvell,pxa300-lcdc", },
+ { .compatible = "marvell,pxa2xx-lcdc", },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, pxafb_of_dev_id);
+
static struct platform_driver pxafb_driver = {
.probe = pxafb_probe,
.remove = pxafb_remove,
.driver = {
.name = "pxa2xx-fb",
+ .of_match_table = pxafb_of_dev_id,
#ifdef CONFIG_PM
.pm = &pxafb_pm_ops,
#endif
--
2.1.4
^ permalink raw reply related
* [PATCH v6 1/2] video: fbdev: pxafb: loosen the platform data bond
From: Robert Jarzmik @ 2015-12-12 21:27 UTC (permalink / raw)
To: Jean-Christophe Plagniol-Villard, Tomi Valkeinen
Cc: linux-fbdev, linux-kernel, Robert Jarzmik
In order to prepare the transition to a mixed platform data and
device-tree initialization, remove all the platform data references all
over the driver.
Copy the platform data into the internal structure of the pxafb, and
only use this afterward.
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
---
drivers/video/fbdev/pxafb.c | 54 ++++++++++++++++++++++++++++-----------------
drivers/video/fbdev/pxafb.h | 2 ++
2 files changed, 36 insertions(+), 20 deletions(-)
diff --git a/drivers/video/fbdev/pxafb.c b/drivers/video/fbdev/pxafb.c
index 94813af97f09..ed4b1a5dc306 100644
--- a/drivers/video/fbdev/pxafb.c
+++ b/drivers/video/fbdev/pxafb.c
@@ -457,7 +457,7 @@ static int pxafb_adjust_timing(struct pxafb_info *fbi,
static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
{
struct pxafb_info *fbi = container_of(info, struct pxafb_info, fb);
- struct pxafb_mach_info *inf = dev_get_platdata(fbi->dev);
+ struct pxafb_mach_info *inf = fbi->inf;
int err;
if (inf->fixed_modes) {
@@ -1230,7 +1230,7 @@ static unsigned int __smart_timing(unsigned time_ns, unsigned long lcd_clk)
static void setup_smart_timing(struct pxafb_info *fbi,
struct fb_var_screeninfo *var)
{
- struct pxafb_mach_info *inf = dev_get_platdata(fbi->dev);
+ struct pxafb_mach_info *inf = fbi->inf;
struct pxafb_mode_info *mode = &inf->modes[0];
unsigned long lclk = clk_get_rate(fbi->clk);
unsigned t1, t2, t3, t4;
@@ -1258,14 +1258,13 @@ static void setup_smart_timing(struct pxafb_info *fbi,
static int pxafb_smart_thread(void *arg)
{
struct pxafb_info *fbi = arg;
- struct pxafb_mach_info *inf = dev_get_platdata(fbi->dev);
+ struct pxafb_mach_info *inf = fbi->inf;
if (!inf->smart_update) {
pr_err("%s: not properly initialized, thread terminated\n",
__func__);
return -EINVAL;
}
- inf = dev_get_platdata(fbi->dev);
pr_debug("%s(): task starting\n", __func__);
@@ -1788,11 +1787,11 @@ decode_mode:
fbi->video_mem_size = video_mem_size;
}
-static struct pxafb_info *pxafb_init_fbinfo(struct device *dev)
+static struct pxafb_info *pxafb_init_fbinfo(struct device *dev,
+ struct pxafb_mach_info *inf)
{
struct pxafb_info *fbi;
void *addr;
- struct pxafb_mach_info *inf = dev_get_platdata(dev);
/* Alloc the pxafb_info and pseudo_palette in one step */
fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL);
@@ -1801,6 +1800,7 @@ static struct pxafb_info *pxafb_init_fbinfo(struct device *dev)
memset(fbi, 0, sizeof(struct pxafb_info));
fbi->dev = dev;
+ fbi->inf = inf;
fbi->clk = clk_get(dev, NULL);
if (IS_ERR(fbi->clk)) {
@@ -1852,10 +1852,9 @@ static struct pxafb_info *pxafb_init_fbinfo(struct device *dev)
}
#ifdef CONFIG_FB_PXA_PARAMETERS
-static int parse_opt_mode(struct device *dev, const char *this_opt)
+static int parse_opt_mode(struct device *dev, const char *this_opt,
+ struct pxafb_mach_info *inf)
{
- struct pxafb_mach_info *inf = dev_get_platdata(dev);
-
const char *name = this_opt+5;
unsigned int namelen = strlen(name);
int res_specified = 0, bpp_specified = 0;
@@ -1911,9 +1910,9 @@ done:
return 0;
}
-static int parse_opt(struct device *dev, char *this_opt)
+static int parse_opt(struct device *dev, char *this_opt,
+ struct pxafb_mach_info *inf)
{
- struct pxafb_mach_info *inf = dev_get_platdata(dev);
struct pxafb_mode_info *mode = &inf->modes[0];
char s[64];
@@ -1922,7 +1921,7 @@ static int parse_opt(struct device *dev, char *this_opt)
if (!strncmp(this_opt, "vmem:", 5)) {
video_mem_size = memparse(this_opt + 5, NULL);
} else if (!strncmp(this_opt, "mode:", 5)) {
- return parse_opt_mode(dev, this_opt);
+ return parse_opt_mode(dev, this_opt, inf);
} else if (!strncmp(this_opt, "pixclock:", 9)) {
mode->pixclock = simple_strtoul(this_opt+9, NULL, 0);
sprintf(s, "pixclock: %ld\n", mode->pixclock);
@@ -2011,7 +2010,8 @@ static int parse_opt(struct device *dev, char *this_opt)
return 0;
}
-static int pxafb_parse_options(struct device *dev, char *options)
+static int pxafb_parse_options(struct device *dev, char *options,
+ struct pxafb_mach_info *inf)
{
char *this_opt;
int ret;
@@ -2023,7 +2023,7 @@ static int pxafb_parse_options(struct device *dev, char *options)
/* could be made table driven or similar?... */
while ((this_opt = strsep(&options, ",")) != NULL) {
- ret = parse_opt(dev, this_opt);
+ ret = parse_opt(dev, this_opt, inf);
if (ret)
return ret;
}
@@ -2095,19 +2095,33 @@ static void pxafb_check_options(struct device *dev, struct pxafb_mach_info *inf)
static int pxafb_probe(struct platform_device *dev)
{
struct pxafb_info *fbi;
- struct pxafb_mach_info *inf;
+ struct pxafb_mach_info *inf, *pdata;
struct resource *r;
- int irq, ret;
+ int i, irq, ret;
dev_dbg(&dev->dev, "pxafb_probe\n");
- inf = dev_get_platdata(&dev->dev);
ret = -ENOMEM;
- fbi = NULL;
+ pdata = dev_get_platdata(&dev->dev);
+ inf = devm_kmalloc(&dev->dev, sizeof(*inf), GFP_KERNEL);
if (!inf)
goto failed;
+ if (pdata) {
+ *inf = *pdata;
+ inf->modes + devm_kmalloc_array(&dev->dev, pdata->num_modes,
+ sizeof(inf->modes[0]), GFP_KERNEL);
+ if (!inf->modes)
+ goto failed;
+ for (i = 0; i < inf->num_modes; i++)
+ inf->modes[i] = pdata->modes[i];
+ }
+
+ fbi = NULL;
+ if (!pdata)
+ goto failed;
- ret = pxafb_parse_options(&dev->dev, g_options);
+ ret = pxafb_parse_options(&dev->dev, g_options, inf);
if (ret < 0)
goto failed;
@@ -2125,7 +2139,7 @@ static int pxafb_probe(struct platform_device *dev)
goto failed;
}
- fbi = pxafb_init_fbinfo(&dev->dev);
+ fbi = pxafb_init_fbinfo(&dev->dev, inf);
if (!fbi) {
/* only reason for pxafb_init_fbinfo to fail is kmalloc */
dev_err(&dev->dev, "Failed to initialize framebuffer device\n");
diff --git a/drivers/video/fbdev/pxafb.h b/drivers/video/fbdev/pxafb.h
index 26ba9fa3f737..5dc414e26fc8 100644
--- a/drivers/video/fbdev/pxafb.h
+++ b/drivers/video/fbdev/pxafb.h
@@ -167,6 +167,8 @@ struct pxafb_info {
void (*lcd_power)(int, struct fb_var_screeninfo *);
void (*backlight_power)(int);
+
+ struct pxafb_mach_info *inf;
};
#define TO_INF(ptr,member) container_of(ptr,struct pxafb_info,member)
--
2.1.4
^ permalink raw reply related
* Re: [PATCH v2] ARM: multi_v7_defconfig: Enable some drivers for LS1021A
From: Arnd Bergmann @ 2015-12-11 13:02 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20151211114233.GG11252@tiger>
On Friday 11 December 2015 19:42:33 Shawn Guo wrote:
> On Wed, Dec 09, 2015 at 09:57:26AM +0100, Arnd Bergmann wrote:
> > On Wednesday 09 December 2015 16:41:39 Alison Wang wrote:
> > > This patch enables some drivers for LS1021A, such as
> > > GIANFAR, WATCHDOG, AUDIO, QSPI, I2C, ESDHC, EDMA, FTM.
> > > QorIQ Clock Framework and Ramdisk support is also enabled.
> > >
> > > Signed-off-by: Alison Wang <alison.wang@freescale.com>
> > > ---
> > > Changes since v1:
> > > - Make some drivers as loadable modules.
> > >
> >
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> >
> > Shawn, do you want to pick this up and send it back through the
> > imx tree?
> >
> > If you have no other defconfig changes for 4.5, we can also just
> > add it to arm-soc.
>
> Arnd,
>
> I was told by Olof to stay away from multi_v7_defconfig as it's not i.MX
> specific. So please apply it directly to arm-soc.
Ok, I should discuss this with Olof, as I've been giving the opposite
advice in the past. ;-)
Arnd
^ permalink raw reply
* Re: [PATCH RFC 0/9] omapdrm/omapfb/omapdss split
From: Archit Taneja @ 2015-12-11 11:44 UTC (permalink / raw)
To: Tomi Valkeinen; +Cc: linux-fbdev, dri-devel, Laurent Pinchart
In-Reply-To: <566A81EC.1090209@ti.com>
On 12/11/2015 01:27 PM, Tomi Valkeinen wrote:
>
> On 11/12/15 08:14, Archit Taneja wrote:
>
>> Is it possible to make omapfb get some of the old files (apply.c,
>> overlay.c, manager.c, sysfs files etc)? It might be helpful to have git
>> associate these files with omapfb/omap_vout since they have been the
>> only users of it. After cleanups, these files would eventually be
>> removed in the omapdrm copy, and it would be hard to track their history
>> using the omapfb copy.
>
> Good point. Unfortunately I don't know how I could do that...
>
> I need to keep all the files for a copy of omapdss intact, otherwise
> that copy won't work. So I need all the files for omapfb's copy, but I
> can't remove (i.e. move) any from the remaining copy...
>
> However, in the commit where I create the omapfb copy, I can add the
> original path in the commit description.
That should be good enough I guess.
Archit
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum, hosted by The Linux Foundation
^ permalink raw reply
* Re: [PATCH v2] ARM: multi_v7_defconfig: Enable some drivers for LS1021A
From: Shawn Guo @ 2015-12-11 11:42 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5410635.RmBCMMyZr3@wuerfel>
On Wed, Dec 09, 2015 at 09:57:26AM +0100, Arnd Bergmann wrote:
> On Wednesday 09 December 2015 16:41:39 Alison Wang wrote:
> > This patch enables some drivers for LS1021A, such as
> > GIANFAR, WATCHDOG, AUDIO, QSPI, I2C, ESDHC, EDMA, FTM.
> > QorIQ Clock Framework and Ramdisk support is also enabled.
> >
> > Signed-off-by: Alison Wang <alison.wang@freescale.com>
> > ---
> > Changes since v1:
> > - Make some drivers as loadable modules.
> >
>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
> Shawn, do you want to pick this up and send it back through the
> imx tree?
>
> If you have no other defconfig changes for 4.5, we can also just
> add it to arm-soc.
Arnd,
I was told by Olof to stay away from multi_v7_defconfig as it's not i.MX
specific. So please apply it directly to arm-soc.
Shawn
^ permalink raw reply
* Re: [PATCH RFC 0/9] omapdrm/omapfb/omapdss split
From: Tomi Valkeinen @ 2015-12-11 7:57 UTC (permalink / raw)
To: Archit Taneja; +Cc: linux-fbdev, dri-devel, Laurent Pinchart
In-Reply-To: <566A69D8.2060607@codeaurora.org>
[-- Attachment #1: Type: text/plain, Size: 823 bytes --]
On 11/12/15 08:14, Archit Taneja wrote:
> Is it possible to make omapfb get some of the old files (apply.c,
> overlay.c, manager.c, sysfs files etc)? It might be helpful to have git
> associate these files with omapfb/omap_vout since they have been the
> only users of it. After cleanups, these files would eventually be
> removed in the omapdrm copy, and it would be hard to track their history
> using the omapfb copy.
Good point. Unfortunately I don't know how I could do that...
I need to keep all the files for a copy of omapdss intact, otherwise
that copy won't work. So I need all the files for omapfb's copy, but I
can't remove (i.e. move) any from the remaining copy...
However, in the commit where I create the omapfb copy, I can add the
original path in the commit description.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH RFC 0/9] omapdrm/omapfb/omapdss split
From: Archit Taneja @ 2015-12-11 6:26 UTC (permalink / raw)
To: Tomi Valkeinen, dri-devel, linux-fbdev, Laurent Pinchart
In-Reply-To: <1449757535-5674-1-git-send-email-tomi.valkeinen@ti.com>
On 12/10/2015 07:55 PM, Tomi Valkeinen wrote:
> Hi,
>
> Here's an RFC series to fix the mess we have at the moment with
> omapdrm/omapfb/omapdss.
>
> First, a short background on the current status. We have the following
> entities:
>
> * omapdss, located in drivers/video/fbdev/omap2/dss/. This is a driver for the
> display subsystem IPs used on OMAP (and related) SoCs. It offers only a
> kernel internal API, and does not implement anything for fbdev or drm.
>
> * omapdss panels and encoders, located in
> drivers/video/fbdev/omap2/displays-new/. These are panel and external encoder
> drivers, which use APIs offered by omapdss driver. These also don't implement
> anything for fbdev or drm.
>
> * omapdrm, located in drivers/gpu/drm/omapdrm/. This is a drm driver, which
> uses omapdss and the panel/encoder drivers to operate the hardware.
>
> * omapfb, located in drivers/video/fbdev/omap2/omapfb/. This is an fbdev
> driver, which uses omapdss and the panel/encoder drivers to operate the
> hardware.
>
> * omap_vout, located in drivers/media/platform/omap/. This is a v4l2 driver,
> which uses omapdss and omapfb to implement a v4l2 API for the video overlays.
>
> So, on the top level, we have either omapdrm, or omapfb+omap_vout. Both of
> those use the same low level drivers. Without going to the historical details
> why the architecture is like that, I think it's finally time to change that.
>
> The situation with omapfb+omap_vout is that it still works, but no new features
> have been added for a long time, and I want to keep it working as it's still
> being used. At some point in the future I'd like to remove omapfb and
> omap_vout altogether.
>
> Omapdrm, on the other hand, is being actively developed. Sharing the low level
> parts with omapfb makes that development more difficult than it should be. It
> also "hides" half of the development, as everything happening in the low level
> parts resides under fbdev directory, not in the drm directory.
>
> I've been wanting to clean this up for a long time, but I haven't figured out a
> very good way to do it. I still haven't, but here's the best way I have come up
> with.
>
> This series makes a full copy of the low level parts, omapdss and panel/encoder
> drivers. Both omapfb+omap_vout and omapdrm will have their own versions. The
> copy omapfb+omap_vout get is a new copy, and the copy that omapdrm gets is just
> the current files moved. This way git will associate the omapdrm version with
> the old files.
Is it possible to make omapfb get some of the old files (apply.c,
overlay.c, manager.c, sysfs files etc)? It might be helpful to have git
associate these files with omapfb/omap_vout since they have been the
only users of it. After cleanups, these files would eventually be
removed in the omapdrm copy, and it would be hard to track their history
using the omapfb copy.
>
> The omapfb+omap_vout versions won't be touched unless there are some big issues
> there.
>
> The omapdrm versions can be refactored and cleaned up, as the omapfb support
> code is no longer needed. We can perhaps also merge omapdss and omapdrm into
> the same kernel module.
>
> This series only does the copy, and the absolutely necessary parts. No further
> cleanups are done yet.
Ack for the series!
Archit
>
> Tomi
>
> Tomi Valkeinen (9):
> omapfb: allow compilation only if DRM_OMAP is disabled
> omapfb: copy omapdss & displays for omapfb
> omapdss: remove CONFIG_OMAP2_DSS_VENC from omapdss.h
> omapfb/dss: change CONFIG_OMAP* to CONFIG_FB_OMAP*
> omapfb/displays: change CONFIG_DISPLAY_* to CONFIG_FB_OMAP2_*
> omapfb: take omapfb's prive omapdss into use
> omapfb: move vrfb into omapfb
> drm/omap: move omapdss & displays under omapdrm
> drm/omap: make omapdrm select OMAP2_DSS
>
> drivers/gpu/drm/Makefile | 2 +-
> drivers/gpu/drm/omapdrm/Kconfig | 10 +-
> drivers/gpu/drm/omapdrm/Makefile | 3 +
> .../drm/omapdrm/displays}/Kconfig | 3 +-
> .../drm/omapdrm/displays}/Makefile | 0
> .../drm/omapdrm/displays}/connector-analog-tv.c | 0
> .../drm/omapdrm/displays}/connector-dvi.c | 0
> .../drm/omapdrm/displays}/connector-hdmi.c | 0
> .../drm/omapdrm/displays}/encoder-opa362.c | 0
> .../drm/omapdrm/displays}/encoder-tfp410.c | 0
> .../drm/omapdrm/displays}/encoder-tpd12s015.c | 0
> .../drm/omapdrm/displays}/panel-dpi.c | 0
> .../drm/omapdrm/displays}/panel-dsi-cm.c | 0
> .../omapdrm/displays}/panel-lgphilips-lb035q02.c | 0
> .../drm/omapdrm/displays}/panel-nec-nl8048hl11.c | 0
> .../omapdrm/displays}/panel-sharp-ls037v7dw01.c | 0
> .../drm/omapdrm/displays}/panel-sony-acx565akm.c | 0
> .../drm/omapdrm/displays}/panel-tpo-td028ttec1.c | 0
> .../drm/omapdrm/displays}/panel-tpo-td043mtea1.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/Kconfig | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/Makefile | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/apply.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/core.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/dispc-compat.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/dispc-compat.h | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.h | 0
> .../omap2 => gpu/drm/omapdrm}/dss/dispc_coefs.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/display-sysfs.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/display.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dpi.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dsi.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dss-of.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.h | 0
> .../omap2 => gpu/drm/omapdrm}/dss/dss_features.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/dss_features.h | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi.h | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.h | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.h | 0
> .../omap2 => gpu/drm/omapdrm}/dss/hdmi_common.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_phy.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_pll.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_wp.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/manager-sysfs.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/manager.c | 0
> .../drm/omapdrm}/dss/omapdss-boot-init.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/output.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/overlay-sysfs.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/overlay.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/pll.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/rfbi.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/sdi.c | 0
> .../fbdev/omap2 => gpu/drm/omapdrm}/dss/venc.c | 0
> .../omap2 => gpu/drm/omapdrm}/dss/video-pll.c | 0
> drivers/media/platform/omap/Kconfig | 2 +-
> drivers/video/fbdev/omap2/Kconfig | 5 -
> drivers/video/fbdev/omap2/Makefile | 6 +-
> drivers/video/fbdev/omap2/omapfb/Kconfig | 14 +-
> drivers/video/fbdev/omap2/omapfb/Makefile | 3 +
> drivers/video/fbdev/omap2/omapfb/displays/Kconfig | 86 +
> drivers/video/fbdev/omap2/omapfb/displays/Makefile | 14 +
> .../omap2/omapfb/displays/connector-analog-tv.c | 320 ++
> .../fbdev/omap2/omapfb/displays/connector-dvi.c | 398 ++
> .../fbdev/omap2/omapfb/displays/connector-hdmi.c | 348 ++
> .../fbdev/omap2/omapfb/displays/encoder-opa362.c | 278 +
> .../fbdev/omap2/omapfb/displays/encoder-tfp410.c | 320 ++
> .../omap2/omapfb/displays/encoder-tpd12s015.c | 379 ++
> .../video/fbdev/omap2/omapfb/displays/panel-dpi.c | 330 ++
> .../fbdev/omap2/omapfb/displays/panel-dsi-cm.c | 1388 +++++
> .../omapfb/displays/panel-lgphilips-lb035q02.c | 404 ++
> .../omap2/omapfb/displays/panel-nec-nl8048hl11.c | 437 ++
> .../omapfb/displays/panel-sharp-ls037v7dw01.c | 415 ++
> .../omap2/omapfb/displays/panel-sony-acx565akm.c | 917 ++++
> .../omap2/omapfb/displays/panel-tpo-td028ttec1.c | 511 ++
> .../omap2/omapfb/displays/panel-tpo-td043mtea1.c | 686 +++
> drivers/video/fbdev/omap2/omapfb/dss/Kconfig | 129 +
> drivers/video/fbdev/omap2/omapfb/dss/Makefile | 18 +
> drivers/video/fbdev/omap2/omapfb/dss/apply.c | 1702 ++++++
> drivers/video/fbdev/omap2/omapfb/dss/core.c | 343 ++
> .../video/fbdev/omap2/omapfb/dss/dispc-compat.c | 667 +++
> .../video/fbdev/omap2/omapfb/dss/dispc-compat.h | 30 +
> drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 4135 +++++++++++++++
> drivers/video/fbdev/omap2/omapfb/dss/dispc.h | 916 ++++
> drivers/video/fbdev/omap2/omapfb/dss/dispc_coefs.c | 325 ++
> .../video/fbdev/omap2/omapfb/dss/display-sysfs.c | 356 ++
> drivers/video/fbdev/omap2/omapfb/dss/display.c | 338 ++
> drivers/video/fbdev/omap2/omapfb/dss/dpi.c | 899 ++++
> drivers/video/fbdev/omap2/omapfb/dss/dsi.c | 5607 ++++++++++++++++++++
> drivers/video/fbdev/omap2/omapfb/dss/dss-of.c | 183 +
> drivers/video/fbdev/omap2/omapfb/dss/dss.c | 1323 +++++
> drivers/video/fbdev/omap2/omapfb/dss/dss.h | 472 ++
> .../video/fbdev/omap2/omapfb/dss/dss_features.c | 962 ++++
> .../video/fbdev/omap2/omapfb/dss/dss_features.h | 105 +
> drivers/video/fbdev/omap2/omapfb/dss/hdmi.h | 370 ++
> drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c | 839 +++
> drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c | 904 ++++
> drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.h | 273 +
> drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c | 876 +++
> drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c | 916 ++++
> drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.h | 304 ++
> drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c | 148 +
> drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 247 +
> drivers/video/fbdev/omap2/omapfb/dss/hdmi_pll.c | 255 +
> drivers/video/fbdev/omap2/omapfb/dss/hdmi_wp.c | 282 +
> .../video/fbdev/omap2/omapfb/dss/manager-sysfs.c | 531 ++
> drivers/video/fbdev/omap2/omapfb/dss/manager.c | 263 +
> .../fbdev/omap2/omapfb/dss/omapdss-boot-init.c | 227 +
> drivers/video/fbdev/omap2/omapfb/dss/output.c | 267 +
> .../video/fbdev/omap2/omapfb/dss/overlay-sysfs.c | 456 ++
> drivers/video/fbdev/omap2/omapfb/dss/overlay.c | 202 +
> drivers/video/fbdev/omap2/omapfb/dss/pll.c | 389 ++
> drivers/video/fbdev/omap2/omapfb/dss/rfbi.c | 1078 ++++
> drivers/video/fbdev/omap2/omapfb/dss/sdi.c | 454 ++
> drivers/video/fbdev/omap2/omapfb/dss/venc.c | 997 ++++
> drivers/video/fbdev/omap2/omapfb/dss/video-pll.c | 211 +
> drivers/video/fbdev/omap2/{ => omapfb}/vrfb.c | 0
> include/video/omapdss.h | 2 -
> 122 files changed, 36260 insertions(+), 20 deletions(-)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/Kconfig (96%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/Makefile (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/connector-analog-tv.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/connector-dvi.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/connector-hdmi.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/encoder-opa362.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/encoder-tfp410.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/encoder-tpd12s015.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-dpi.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-dsi-cm.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-lgphilips-lb035q02.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-nec-nl8048hl11.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-sharp-ls037v7dw01.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-sony-acx565akm.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-tpo-td028ttec1.c (100%)
> rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-tpo-td043mtea1.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/Kconfig (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/Makefile (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/apply.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/core.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc-compat.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc-compat.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc_coefs.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/display-sysfs.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/display.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dpi.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dsi.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss-of.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss_features.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss_features.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.h (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_common.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_phy.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_pll.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_wp.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/manager-sysfs.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/manager.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/omapdss-boot-init.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/output.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/overlay-sysfs.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/overlay.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/pll.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/rfbi.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/sdi.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/venc.c (100%)
> rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/video-pll.c (100%)
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/Kconfig
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/Makefile
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/connector-analog-tv.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/connector-hdmi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/encoder-opa362.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/encoder-tfp410.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-dpi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/Kconfig
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/Makefile
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/apply.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/core.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc-compat.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc-compat.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc_coefs.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/display-sysfs.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/display.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dpi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dsi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss-of.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss_features.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss_features.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.h
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_pll.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_wp.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/manager.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/omapdss-boot-init.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/output.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/overlay-sysfs.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/overlay.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/pll.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/rfbi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/sdi.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/venc.c
> create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/video-pll.c
> rename drivers/video/fbdev/omap2/{ => omapfb}/vrfb.c (100%)
>
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum, hosted by The Linux Foundation
^ permalink raw reply
* Re: [PATCH v5 2/2] video: fbdev: pxafb: initial devicetree conversion
From: Robert Jarzmik @ 2015-12-10 17:34 UTC (permalink / raw)
To: Tomi Valkeinen
Cc: Rob Herring, Jean-Christophe Plagniol-Villard, linux-fbdev,
linux-kernel
In-Reply-To: <56699A57.9030209@ti.com>
Tomi Valkeinen <tomi.valkeinen@ti.com> writes:
> On 07/12/15 22:50, Robert Jarzmik wrote:
>
>>> It seems that at least "depth" is missing from the binding document.
>> You're right.
>>
>> Actually depth is not a "hardware" caracteristic. Moreover it's just used as an
>> overlay for pxafb_set_pixfmt() to superseed var->bits_per_pixel. I'm wondering
>> if the right path for of_get_pxafb_mode_info() would be to remove completely
>> depth, and leave it initialized at 0 for the DT case.
>>
>> What do you think of this approach ? The other one would be to modify the
>> binding, and yet I feel this depth doesn't belong to the binding, it's my patch
>> which requires another spin IMHO.
>
> Yes, we should avoid non-hardware relate properties in the .dts files if
> at all possible. If the driver works fine without the property, I think
> it's fine to remove it. If it is required it needs to be added to the
> binding document.
Ok, agreed Tomi. That commits me for a v6, as the driver works fine on my
tests. I'll send it in the next couple of days.
Thanks for the review.
--
Robert
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox