Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* Re: [PATCH 4/9] Doc/DT: Add DT binding documentation for HDMI Connector
From: Tomi Valkeinen @ 2014-03-03  7:23 UTC (permalink / raw)
  To: Geert Uytterhoeven, Russell King - ARM Linux
  Cc: devicetree@vger.kernel.org, Linux Fbdev development list,
	Sascha Hauer, Tomasz Figa, DRI Development, Inki Dae,
	Andrzej Hajda, Rob Clark, Thierry Reding, Laurent Pinchart,
	Philipp Zabel, linux-arm-kernel@lists.infradead.org,
	Sebastian Hesselbarth
In-Reply-To: <CAMuHMdVpT2Y-KQO46o=zbRSgqgx2mbBsPjGgoTDDwwfCOxUCmw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1181 bytes --]

On 01/03/14 20:58, Geert Uytterhoeven wrote:
> On Fri, Feb 28, 2014 at 5:34 PM, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
>> There's actually three HDMI connectors:
>>
>>   All three connectors carry all required HDMI signals, including a TMDS
>>   link. The Type B connector is slightly larger and carries a second TMDS
>>   link, which is necessary to support very high resolution displays using
>>   dual link. The Type C connector carries the same signals as the Type A
>>   but is more compact and intended for mobile applications.
>>
>> So, Type C and Type A are electrically the same.
> 
> There's also D (e.g. on BeagleBone Black) and E:
> 
> http://en.wikipedia.org/wiki/HDMI#Connectors
> 
> Electrically they seem to be the same as A/C.

Right. And then there are the HDMI versions, and things like HDMI
Ethernet Channel. After looking at these a bit, I don't think the HDMI
connector needs any of those (hdmi version, eth) defined.

So...

	compatible = "hdmi-connector";
	type = "a";

Or

	compatible = "hdmi-connector";
	type-a;

I don't right away see any big pro with either one compared to the other.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* Re: [PATCH 0/9] Doc/DT: DT bindings for various display components
From: Tomi Valkeinen @ 2014-03-03  8:04 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala
  Cc: devicetree, linux-fbdev, Russell King - ARM Linux, Sascha Hauer,
	Tomasz Figa, dri-devel, Inki Dae, Andrzej Hajda, Rob Clark,
	Thierry Reding, Laurent Pinchart, Philipp Zabel, linux-arm-kernel,
	Sebastian Hesselbarth
In-Reply-To: <20140228165628.GX21483@n2100.arm.linux.org.uk>

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

Hi Rob, Pawel, Mark, Ian, Kumar,

On 28/02/14 18:56, Russell King - ARM Linux wrote:
> On Fri, Feb 28, 2014 at 06:48:35PM +0200, Tomi Valkeinen wrote:
>> This is totally unclear to me. How does it become a public standard?
>> What's the forum for this?
> 
> Me too.  That's where I'd hope someone on devicetree-discuss will be
> able to help us work out what's the right approach here. :)

The story briefly so far: I've implemented DT support for OMAP display,
and created bindings for various (non-OMAP) display components,
including generic connector bindings for DVI, HDMI and analog-tv.

Russell's point was that these connector bindings are very generic, i.e.
they are not for any particular chip from a particular vendor, but for
any connector for DVI, HDMI or analog-tv. And he's worried that maybe we
shouldn't define such generic bindings without consulting the whole
device-tree community (i.e including non-linux users).

So the question is, is there such a community and a forum to bring up
this kind of things? If yes, should we bring this up there? If yes, what
kind of things in general should be brought into the attention of
non-linux users?

What I wonder here is that while a thing like DVI connector is, of
course, more generic than, say, "ti,tfp410" encoder chip, but isn't the
case still the same: we're defining global bindings for hardware that
should work for everyone, not only Linux users?

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* [PATCH] video: da8xx-fb: Fix casting of info->pseudo_palette
From: Jon Ringle @ 2014-03-03  8:43 UTC (permalink / raw)
  To: linux-fbdev

The casting to (u16 *) on info->pseudo_palette is wrong and causes the
display to show a blue (garbage) vertical line on every other pixel column

Signed-off-by: Jon Ringle <jringle@gridpoint.com>
---
 drivers/video/da8xx-fb.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index d042624..83c43b2 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -678,15 +678,7 @@ static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
                        (green << info->var.green.offset) |
                        (blue << info->var.blue.offset);

-               switch (info->var.bits_per_pixel) {
-               case 16:
-                       ((u16 *) (info->pseudo_palette))[regno] = v;
-                       break;
-               case 24:
-               case 32:
-                       ((u32 *) (info->pseudo_palette))[regno] = v;
-                       break;
-               }
+               ((u32 *) (info->pseudo_palette))[regno] = v;
                if (palette[0] != 0x4000) {
                        update_hw = 1;
                        palette[0] = 0x4000;
--
1.8.5.4


The information contained in this transmission may contain confidential information.  If the reader of this message is not the intended recipient, you are hereby notified that any review, dissemination, distribution or duplication of this communication is strictly prohibited.  If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.

^ permalink raw reply related

* Re: [PATCH 0/3] Reorder drivers/video directory
From: Tomi Valkeinen @ 2014-03-03  8:45 UTC (permalink / raw)
  To: linux-fbdev, dri-devel, linux-kernel
  Cc: Laurent Pinchart, Geert Uytterhoeven,
	Jean-Christophe Plagniol-Villard, David Airlie, Andrew Morton,
	Linus Torvalds, Greg Kroah-Hartman, Randy Dunlap
In-Reply-To: <1393502086-9433-1-git-send-email-tomi.valkeinen@ti.com>

[-- Attachment #1: Type: text/plain, Size: 1186 bytes --]

On 27/02/14 13:54, Tomi Valkeinen wrote:
> Hi,
> 
> This is a re-send of the series, with RFC removed from the subject, and a bunch
> of acks added.
> 
> I'm cc'ing more people, to make sure this doesn't come as a surprise, and to
> make sure this is not a bad idea, doomed to fail horribly.
> 
> So this series creates a new directory, drivers/video/fbdev/, to which all
> fbdev related files are moved. Also, a new directory, drivers/video/fbdev/core/
> is created, to which the core fbdev framework files are moved. This makes the
> drivers/video hierarchy much more clear.
> 
> Presuming no one has objections to this as such, I wonder what's the least
> painful way to merge this? Normally, like any other fbdev change? As a separate
> pull request, maybe at -rc2 time frame, based on -rc1? Something else?
> 
>  Tomi
> 
> Tomi Valkeinen (3):
>   video: move fbdev to drivers/video/fbdev
>   fbdev: move fbdev core files to separate directory
>   video: Kconfig: move drm and fb into separate menus

I have pushed this to my for-next branch. Let's see what happens... At
least I'm able to merge the current linux-next without any conflicts.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* [PATCH] backlight: add new LP8860 backlight driver
From: Daniel Jeong @ 2014-03-03  9:14 UTC (permalink / raw)
  To: Jingoo Han
  Cc: Daniel Jeong, linux-fbdev, linux-kernel,
	Jean-Christophe Plagniol-Villard, Tomi Valkeinen

 This patch adds LP8860 backlight device driver.
LP8860 is a low EMI and High performance 4 channel LED Driver of TI.
This device driver provide the way to control brightness and currnet
of each channel and provide the way to write eeprom.
To support dt structure, another patch file will be sent.

Signed-off-by: Daniel Jeong <gshark.jeong@gmail.com>
---
 drivers/video/backlight/Kconfig         |    7 +
 drivers/video/backlight/Makefile        |    1 +
 drivers/video/backlight/lp8860_bl.c     |  528 +++++++++++++++++++++++++++++++
 include/linux/platform_data/lp8860_bl.h |   54 ++++
 4 files changed, 590 insertions(+)
 create mode 100644 drivers/video/backlight/lp8860_bl.c
 create mode 100644 include/linux/platform_data/lp8860_bl.h

diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index 5a3eb2e..908048f 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -397,6 +397,13 @@ config BACKLIGHT_LP8788
 	help
 	  This supports TI LP8788 backlight driver.
 
+config BACKLIGHT_LP8860
+	tristate "Backlight Driver for LP8860"
+	depends on BACKLIGHT_CLASS_DEVICE && I2C
+	select REGMAP_I2C
+	help
+	  This supports TI LP8860 Backlight Driver
+
 config BACKLIGHT_OT200
 	tristate "Backlight driver for ot200 visualisation device"
 	depends on BACKLIGHT_CLASS_DEVICE && CS5535_MFGPT && GPIO_CS5535
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index bb82002..cbc5ac3 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -42,6 +42,7 @@ obj-$(CONFIG_BACKLIGHT_LM3639)		+= lm3639_bl.o
 obj-$(CONFIG_BACKLIGHT_LOCOMO)		+= locomolcd.o
 obj-$(CONFIG_BACKLIGHT_LP855X)		+= lp855x_bl.o
 obj-$(CONFIG_BACKLIGHT_LP8788)		+= lp8788_bl.o
+obj-$(CONFIG_BACKLIGHT_LP8860)		+= lp8860_bl.o
 obj-$(CONFIG_BACKLIGHT_LV5207LP)	+= lv5207lp.o
 obj-$(CONFIG_BACKLIGHT_MAX8925)		+= max8925_bl.o
 obj-$(CONFIG_BACKLIGHT_OMAP1)		+= omap1_bl.o
diff --git a/drivers/video/backlight/lp8860_bl.c b/drivers/video/backlight/lp8860_bl.c
new file mode 100644
index 0000000..4712e84
--- /dev/null
+++ b/drivers/video/backlight/lp8860_bl.c
@@ -0,0 +1,528 @@
+/*
+* Simple driver for Texas Instruments lp8860 Backlight driver chip
+*
+* Copyright (C) 2014 Texas Instruments
+* Author: Daniel Jeong  <gshark.jeong@gmail.com>
+*		  Ldd Mlp <ldd-mlp@list.ti.com>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 as
+* published by the Free Software Foundation.
+*
+*/
+#include <linux/module.h>
+#include <linux/backlight.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/platform_data/lp8860_bl.h>
+#include <linux/regmap.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
+
+#define REG_CL0_BRT_H	0x00
+#define REG_CL0_BRT_L	0x01
+#define REG_CL0_I_H		0x02
+#define REG_CL0_I_L		0x03
+
+#define REG_CL1_BRT_H	0x04
+#define REG_CL1_BRT_L	0x05
+#define REG_CL1_I		0x06
+
+#define REG_CL2_BRT_H	0x07
+#define REG_CL2_BRT_L	0x08
+#define REG_CL2_I		0x09
+
+#define REG_CL3_BRT_H	0x0a
+#define REG_CL3_BRT_L	0x0b
+#define REG_CL3_I		0x0c
+
+#define REG_CONF	0x0d
+#define REG_STATUS	0x0e
+#define REG_ID		0x12
+
+#define REG_ROM_CTRL	0x19
+#define REG_ROM_UNLOCK	0x1a
+#define REG_ROM_START	0x60
+#define REG_ROM_END		0x78
+
+#define REG_EEPROM_START	0x60
+#define REG_EEPROM_END		0x78
+#define REG_MAX	0xFF
+
+struct lp8860_chip {
+	struct device *dev;
+	struct lp8860_platform_data *pdata;
+	struct backlight_device *bled[LP8860_LED_MAX];
+	struct regmap *regmap;
+};
+
+/* brightness control */
+static int lp8860_bled_update_status(struct backlight_device *bl,
+				     enum lp8860_leds nsr)
+{
+	int ret = -EINVAL;
+	struct lp8860_chip *pchip = bl_get_data(bl);
+
+	if (pchip->pdata->mode)
+		return 0;
+
+	if (bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
+		bl->props.brightness = 0;
+
+	switch (nsr) {
+	case LP8860_LED0:
+		ret = regmap_write(pchip->regmap,
+				   REG_CL0_BRT_H, bl->props.brightness >> 8);
+		ret |= regmap_write(pchip->regmap,
+				    REG_CL0_BRT_L, bl->props.brightness & 0xff);
+		break;
+	case LP8860_LED1:
+		ret = regmap_write(pchip->regmap,
+				   REG_CL1_BRT_H,
+				   (bl->props.brightness >> 8) & 0x1f);
+		ret |+		    regmap_write(pchip->regmap, REG_CL1_BRT_L,
+				 bl->props.brightness & 0xff);
+		break;
+	case LP8860_LED2:
+		ret = regmap_write(pchip->regmap,
+				   REG_CL2_BRT_H,
+				   (bl->props.brightness >> 8) & 0x1f);
+		ret |+		    regmap_write(pchip->regmap, REG_CL2_BRT_L,
+				 bl->props.brightness & 0xff);
+		break;
+	case LP8860_LED3:
+		ret = regmap_write(pchip->regmap,
+				   REG_CL3_BRT_H,
+				   (bl->props.brightness >> 8) & 0x1f);
+		ret |+		    regmap_write(pchip->regmap, REG_CL3_BRT_L,
+				 bl->props.brightness & 0xff);
+		break;
+	default:
+		BUG();
+	}
+	if (ret < 0)
+		dev_err(pchip->dev, "fail : i2c access to register.\n");
+	else
+		ret = bl->props.brightness;
+
+	return ret;
+}
+
+static int lp8860_bled_get_brightness(struct backlight_device *bl,
+				      enum lp8860_leds nsr)
+{
+	struct lp8860_chip *pchip = bl_get_data(bl);
+	unsigned int rval_h, rval_l;
+	int ret = -EINVAL;
+
+	switch (nsr) {
+	case LP8860_LED0:
+		ret = regmap_read(pchip->regmap, REG_CL0_BRT_H, &rval_h);
+		ret |= regmap_read(pchip->regmap, REG_CL0_BRT_L, &rval_l);
+		break;
+	case LP8860_LED1:
+		ret = regmap_read(pchip->regmap, REG_CL1_BRT_H, &rval_h);
+		ret |= regmap_read(pchip->regmap, REG_CL1_BRT_L, &rval_l);
+		break;
+	case LP8860_LED2:
+		ret = regmap_read(pchip->regmap, REG_CL2_BRT_H, &rval_h);
+		ret |= regmap_read(pchip->regmap, REG_CL2_BRT_L, &rval_l);
+		break;
+	case LP8860_LED3:
+		ret = regmap_read(pchip->regmap, REG_CL3_BRT_H, &rval_h);
+		ret |= regmap_read(pchip->regmap, REG_CL3_BRT_L, &rval_l);
+		break;
+	default:
+		BUG();
+	}
+	if (ret < 0) {
+		dev_err(pchip->dev, "fail : i2c access to register.\n");
+		return ret;
+	}
+	bl->props.brightness = (rval_h << 8) | rval_l;
+	return bl->props.brightness;
+}
+
+static int lp8860_update_status_bled0(struct backlight_device *bl)
+{
+	return lp8860_bled_update_status(bl, LP8860_LED0);
+}
+
+static int lp8860_get_brightness_bled0(struct backlight_device *bl)
+{
+	return lp8860_bled_get_brightness(bl, LP8860_LED0);
+}
+
+static int lp8860_update_status_bled1(struct backlight_device *bl)
+{
+	return lp8860_bled_update_status(bl, LP8860_LED1);
+}
+
+static int lp8860_get_brightness_bled1(struct backlight_device *bl)
+{
+	return lp8860_bled_get_brightness(bl, LP8860_LED1);
+}
+
+static int lp8860_update_status_bled2(struct backlight_device *bl)
+{
+	return lp8860_bled_update_status(bl, LP8860_LED2);
+}
+
+static int lp8860_get_brightness_bled2(struct backlight_device *bl)
+{
+	return lp8860_bled_get_brightness(bl, LP8860_LED2);
+}
+
+static int lp8860_update_status_bled3(struct backlight_device *bl)
+{
+	return lp8860_bled_update_status(bl, LP8860_LED3);
+}
+
+static int lp8860_get_brightness_bled3(struct backlight_device *bl)
+{
+	return lp8860_bled_get_brightness(bl, LP8860_LED3);
+}
+
+#define lp8860_bled_ops(_id)\
+{\
+	.options = BL_CORE_SUSPENDRESUME,\
+	.update_status = lp8860_update_status_bled##_id,\
+	.get_brightness = lp8860_get_brightness_bled##_id,\
+}
+
+static const struct backlight_ops lp8860_bled_ops[LP8860_LED_MAX] = {
+	[LP8860_LED0] = lp8860_bled_ops(0),
+	[LP8860_LED1] = lp8860_bled_ops(1),
+	[LP8860_LED2] = lp8860_bled_ops(2),
+	[LP8860_LED3] = lp8860_bled_ops(3),
+};
+
+/* current control */
+static int lp8860_set_current(struct device *dev,
+			      const char *buf, enum lp8860_leds nsr)
+{
+	struct lp8860_chip *pchip = dev_get_drvdata(dev);
+	unsigned int ival;
+	ssize_t ret;
+
+	ret = kstrtouint(buf, 10, &ival);
+	if (ret)
+		return ret;
+
+	switch (nsr) {
+	case LP8860_LED0:
+		ival = min_t(unsigned int, ival, LP8860_LED0_BR_MAX);
+		ret = regmap_write(pchip->regmap, REG_CL0_I_H, ival >> 8);
+		ret |= regmap_write(pchip->regmap, REG_CL0_I_L, ival & 0xff);
+		break;
+	case LP8860_LED1:
+		ival = min_t(unsigned int, ival, LP8860_LED1_BR_MAX);
+		ret = regmap_write(pchip->regmap, REG_CL1_I, ival & 0xff);
+		break;
+	case LP8860_LED2:
+		ival = min_t(unsigned int, ival, LP8860_LED2_BR_MAX);
+		ret = regmap_write(pchip->regmap, REG_CL2_I, ival & 0xff);
+		break;
+	case LP8860_LED3:
+		ival = min_t(unsigned int, ival, LP8860_LED3_BR_MAX);
+		ret = regmap_write(pchip->regmap, REG_CL3_I, ival & 0xff);
+		break;
+	default:
+		BUG();
+	}
+	if (ret < 0)
+		dev_err(pchip->dev, "fail : i2c access error.\n");
+
+	return ret;
+}
+
+static ssize_t lp8860_current_store_bled0(struct device *dev,
+					  struct device_attribute *devAttr,
+					  const char *buf, size_t size)
+{
+	int ret;
+
+	ret = lp8860_set_current(dev, buf, LP8860_LED0);
+	if (ret < 0)
+		return ret;
+	return size;
+}
+
+static ssize_t lp8860_current_store_bled1(struct device *dev,
+					  struct device_attribute *devAttr,
+					  const char *buf, size_t size)
+{
+	int ret;
+
+	ret = lp8860_set_current(dev, buf, LP8860_LED1);
+	if (ret < 0)
+		return ret;
+	return size;
+}
+
+static ssize_t lp8860_current_store_bled2(struct device *dev,
+					  struct device_attribute *devAttr,
+					  const char *buf, size_t size)
+{
+	int ret;
+
+	ret = lp8860_set_current(dev, buf, LP8860_LED2);
+	if (ret < 0)
+		return ret;
+	return size;
+}
+
+static ssize_t lp8860_current_store_bled3(struct device *dev,
+					  struct device_attribute *devAttr,
+					  const char *buf, size_t size)
+{
+	int ret;
+
+	ret = lp8860_set_current(dev, buf, LP8860_LED3);
+	if (ret < 0)
+		return ret;
+	return size;
+}
+
+#define lp8860_attr(_name, _show, _store)\
+{\
+	.attr = {\
+		.name = _name,\
+		.mode = S_IWUSR,\
+	},\
+	.show = _show,\
+	.store = _store,\
+}
+
+static struct device_attribute lp8860_dev_attr[LP8860_LED_MAX] = {
+	[LP8860_LED0] = lp8860_attr("current", NULL,
+				    lp8860_current_store_bled0),
+	[LP8860_LED1] = lp8860_attr("current", NULL,
+				    lp8860_current_store_bled1),
+	[LP8860_LED2] = lp8860_attr("current", NULL,
+				    lp8860_current_store_bled2),
+	[LP8860_LED3] = lp8860_attr("current", NULL,
+				    lp8860_current_store_bled3),
+};
+
+/*
+ * eeprom write and readback to check.
+ * eeprom register range is from 60h to 78h
+ * buffer value to write data [reg] [data]
+ * e.g) to change the register 0x60 value to 0xff
+ *      buffer value should be 60 ff
+ */
+static ssize_t lp8860_eeprom_store(struct device *dev,
+				   struct device_attribute *devAttr,
+				   const char *buf, size_t size)
+{
+	struct lp8860_chip *pchip = dev_get_drvdata(dev);
+	unsigned int reg, data, rval;
+	char *tok;
+	int ret;
+
+	/* register no. */
+	tok = strsep((char **)&buf, " ,\n");
+	if (tok = NULL)
+		goto err_input;
+	ret = kstrtouint(tok, 16, &reg);
+	if (ret)
+		goto err_input;
+
+	/* register value */
+	tok = strsep((char **)&buf, " ,\n");
+	if (tok = NULL)
+		goto err_input;
+	ret = kstrtouint(tok, 16, &data);
+	if (ret)
+		goto err_input;
+	/*
+	 * EEPROM Programming sequence
+	 *    (program data permanently from registers to NVM)
+	 * 1. Unlock EEPROM by writing
+	 *    the unlock codes to register 1Ah(08, BA, EF)
+	 * 2. Write data to EEPROM registers (address 60h...78h)
+	 * 3. Write EE_PROG to 1 in address 19h. (02h to address 19h)
+	 * 4. Wait 100ms
+	 * 5. Write EE_PROG to 0 in address 19h. (00h to address 19h)
+	 */
+	if (reg < REG_EEPROM_START || reg > REG_EEPROM_END || data > 0xff)
+		goto err_input;
+	ret = regmap_write(pchip->regmap, REG_ROM_UNLOCK, 0x08);
+	ret |= regmap_write(pchip->regmap, REG_ROM_UNLOCK, 0xba);
+	ret |= regmap_write(pchip->regmap, REG_ROM_UNLOCK, 0xef);
+	ret |= regmap_write(pchip->regmap, reg, data);
+	ret |= regmap_write(pchip->regmap, REG_ROM_CTRL, 0x02);
+	msleep(100);
+	ret |= regmap_write(pchip->regmap, REG_ROM_CTRL, 0x00);
+	if (ret < 0)
+		goto err_i2c;
+
+	/* read back */
+	ret = regmap_write(pchip->regmap, REG_ROM_UNLOCK, 0x08);
+	ret |= regmap_write(pchip->regmap, REG_ROM_UNLOCK, 0xba);
+	ret |= regmap_write(pchip->regmap, REG_ROM_UNLOCK, 0xef);
+	ret |= regmap_write(pchip->regmap, REG_ROM_CTRL, 0x01);
+	msleep(100);
+	ret |= regmap_write(pchip->regmap, REG_ROM_CTRL, 0x00);
+	ret |= regmap_read(pchip->regmap, reg, &rval);
+	if (ret < 0)
+		goto err_i2c;
+	if (rval != data)
+		dev_err(pchip->dev, "fail : eeprom did not change.\n");
+
+	return size;
+
+err_i2c:
+	dev_err(pchip->dev, "fail : i2c access error.\n");
+	return ret;
+
+err_input:
+	dev_err(pchip->dev, "fail : input fail.\n");
+	return -EINVAL;
+}
+
+static DEVICE_ATTR(eeprom, S_IWUSR, NULL, lp8860_eeprom_store);
+
+/* backlight register and remove */
+static char *lp8860_bled_name[LP8860_LED_MAX] = {
+	[LP8860_LED0] = "bled0",
+	[LP8860_LED1] = "bled1",
+	[LP8860_LED2] = "bled2",
+	[LP8860_LED3] = "bled3",
+};
+
+static int lp8860_backlight_remove(struct lp8860_chip *pchip)
+{
+	int icnt;
+
+	device_remove_file(&(pchip->bled[0]->dev), &dev_attr_eeprom);
+	for (icnt = LP8860_LED0; icnt < LP8860_LED_MAX; icnt++) {
+		if (pchip->bled[icnt]) {
+			backlight_device_unregister(pchip->bled[icnt]);
+			device_remove_file(&(pchip->bled[icnt]->dev),
+					   &lp8860_dev_attr[icnt]);
+		}
+	}
+	return 0;
+}
+
+static int lp8860_backlight_registers(struct lp8860_chip *pchip)
+{
+	struct backlight_properties props;
+	struct lp8860_platform_data *pdata = pchip->pdata;
+	int icnt, ret;
+
+	props.type = BACKLIGHT_RAW;
+	for (icnt = LP8860_LED0; icnt < LP8860_LED_MAX; icnt++) {
+		props.max_brightness = pdata->max_brt[icnt];
+		pchip->bled[icnt] +		    backlight_device_register(lp8860_bled_name[icnt],
+					      pchip->dev, pchip,
+					      &lp8860_bled_ops[icnt], &props);
+		if (IS_ERR(pchip->bled[icnt])) {
+			dev_err(pchip->dev, "fail : backlight register.\n");
+			ret = PTR_ERR(pchip->bled[icnt]);
+			goto err_out;
+		}
+
+		ret = device_create_file(&(pchip->bled[icnt]->dev),
+					 &lp8860_dev_attr[icnt]);
+		if (ret < 0) {
+			dev_err(pchip->dev, "fail : to add sysfs entries.\n");
+			goto err_out;
+		}
+	}
+	/* access eeprom */
+	ret = device_create_file(&(pchip->bled[LP8860_LED0]->dev),
+				 &dev_attr_eeprom);
+	if (ret < 0) {
+		dev_err(pchip->dev, "fail : to add sysfs entries.\n");
+		goto err_out;
+	}
+	return 0;
+
+err_out:
+	lp8860_backlight_remove(pchip);
+	return ret;
+}
+
+static const struct regmap_config lp8860_regmap = {
+	.reg_bits = 8,
+	.val_bits = 8,
+	.max_register = REG_MAX,
+};
+
+static int lp8860_probe(struct i2c_client *client,
+			const struct i2c_device_id *id)
+{
+	struct lp8860_chip *pchip;
+	struct lp8860_platform_data *pdata = dev_get_platdata(&client->dev);
+	int ret, icnt;
+
+	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
+		dev_err(&client->dev, "fail : i2c functionality check.\n");
+		return -EOPNOTSUPP;
+	}
+
+	pchip = devm_kzalloc(&client->dev,
+			     sizeof(struct lp8860_chip), GFP_KERNEL);
+	if (!pchip)
+		return -ENOMEM;
+	pchip->dev = &client->dev;
+
+	pchip->regmap = devm_regmap_init_i2c(client, &lp8860_regmap);
+	if (IS_ERR(pchip->regmap)) {
+		ret = PTR_ERR(pchip->regmap);
+		dev_err(pchip->dev, "fail : allocate i2c register map.\n");
+		return ret;
+	}
+
+	if (pdata = NULL) {
+		pdata = devm_kzalloc(pchip->dev,
+				     sizeof(struct lp8860_platform_data),
+				     GFP_KERNEL);
+		if (pdata = NULL)
+			return -ENOMEM;
+		pdata->max_brt[LP8860_LED0] = 65535;
+		for (icnt = LP8860_LED1; icnt < LP8860_LED_MAX; icnt++)
+			pdata->max_brt[icnt] = 8191;
+		pchip->pdata = pdata;
+	} else {
+		pchip->pdata = pdata;
+	}
+	i2c_set_clientdata(client, pchip);
+	ret = lp8860_backlight_registers(pchip);
+	return ret;
+}
+
+static int lp8860_remove(struct i2c_client *client)
+{
+	return lp8860_backlight_remove(i2c_get_clientdata(client));
+}
+
+static const struct i2c_device_id lp8860_id[] = {
+	{LP8860_NAME, 0},
+	{}
+};
+
+MODULE_DEVICE_TABLE(i2c, lp8860_id);
+static struct i2c_driver lp8860_i2c_driver = {
+	.driver = {
+		   .name = LP8860_NAME,
+		   },
+	.probe = lp8860_probe,
+	.remove = lp8860_remove,
+	.id_table = lp8860_id,
+};
+
+module_i2c_driver(lp8860_i2c_driver);
+
+MODULE_DESCRIPTION("Texas Instruments LP8860 Backlight Driver");
+MODULE_AUTHOR("Daniel Jeong <gshark.jeong@gmail.com>");
+MODULE_AUTHOR("Ldd Mlp <ldd-mlp@list.ti.com>");
+MODULE_LICENSE("GPL v2");
diff --git a/include/linux/platform_data/lp8860_bl.h b/include/linux/platform_data/lp8860_bl.h
new file mode 100644
index 0000000..61bd0f5
--- /dev/null
+++ b/include/linux/platform_data/lp8860_bl.h
@@ -0,0 +1,54 @@
+/*
+ * Simple driver for Texas Instruments LM3642 LED Flash driver chip
+ * Copyright (C) 2014 Texas Instruments
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#ifndef __LINUX_LP8860_H
+#define __LINUX_LP8860_H
+
+#define LP8860_NAME "lp8860"
+#define LP8860_ADDR 0x2d
+
+#define LP8860_LED0_BR_MAX 65535
+#define LP8860_LED1_BR_MAX 8191
+#define LP8860_LED2_BR_MAX 8191
+#define LP8860_LED3_BR_MAX 8191
+
+#define LP8860_LED0_I_MAX 4095
+#define LP8860_LED1_I_MAX 255
+#define LP8860_LED2_I_MAX 255
+#define LP8860_LED3_I_MAX 255
+
+enum lp8860_leds {
+	LP8860_LED0 = 0,
+	LP8860_LED1,
+	LP8860_LED2,
+	LP8860_LED3,
+	LP8860_LED_MAX
+};
+
+enum lp8860_ctrl_mode {
+	LP8860_CTRL_I2C = 0,
+	LP8860_CTRL_I2C_PWM,
+};
+
+/* struct lp8860 platform data
+ * @mode : control mode
+ * @max_brt : maximum brightness.
+ *		LED0 0 ~ 65535
+ *		LED1 0 ~ 8191
+ *		LED2 0 ~ 8191
+ *		LED3 0 ~ 8191
+ */
+struct lp8860_platform_data {
+
+	enum lp8860_ctrl_mode mode;
+	int max_brt[LP8860_LED_MAX];
+};
+
+#endif /* __LINUX_LP8860_H */
-- 
1.7.9.5


^ permalink raw reply related

* Re: [PATCH 00/11] SimpleDRM & Sysfb
From: Tomi Valkeinen @ 2014-03-03 10:12 UTC (permalink / raw)
  To: David Herrmann, dri-devel
  Cc: Ingo Molnar, linux-fbdev, Dave Airlie, Daniel Vetter,
	linux-kernel, Tom Gundersen
In-Reply-To: <1390486503-1504-1-git-send-email-dh.herrmann@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3032 bytes --]

Hi,

On 23/01/14 16:14, David Herrmann wrote:
> Hi
> 
> Another round of SimpleDRM patches. I somehow lost track of the last ones and as
> this is a major rewrite, I'll just start at v1 again.
> 
> Some comments up-front:
> 
>  - @Ingo: Patch #1 and #2 are unchanged from the previous ML discussions. I
>    included them in this series as the other patches depend on them. Could you
>    pick them up for the x86 tree? The other 9 patches won't make it in 3.14 so
>    no reason to put them through the DRM tree.
>    All mentioned issues should be addressed. If there's still sth missing,
>    please let me know.
> 
>  - The DRM patches depend on my "DRM Anonymous Inode" patches. But it should be
>    trivial to apply them on drm-next (I think only one line needs to be changed:
>    i_mapping => dev_mapping).
> 
>  - I tested the SimpleDRM fbdev fallback with linux-console+Xorg and it works
>    fine. The DRM backend is only tested with some DRM tests I have locally. I
>    have no idea how to make Xorg pick up a specific /dev/dri/card0 card. It
>    always tells me "no screens found" (as the underlying device is not marked as
>    boot_vga..). If someone knows how to tell Xorg to use card0, I'd gladly test
>    this. But I'm no longer used to writing xorg.confs..
> 
> 
> This series introduces two new concepts: sysfb and SimpleDRM
> Sysfb is just a generalization of the x86-sysfb concept. It allows to register
> firmware-framebuffers with the system as platform-devices. This way, drivers can
> properly bind to these devices and we prevent multiple drivers from accessing
> the same firmware-framebuffer.
> Sysfb also provides hooks to get a safe handover to real hw-drivers (like i915).
> Please see the "video: sysfb: add generic firmware-fb interface" patch for a
> thorough description of the API. This patch also adds a rather verbose
> documentation of all known firmware-fb facilities.
> 
> As second part, this series introduces SimpleDRM. It's a very basic DRM driver
> that can replace efifb, vesafb, simplefb and friends. It's 100% compatible to
> the "udl" DRM driver, so user-space like xf86-video-modesetting can pick them up
> just fine. User-space that cannot deal with drmModeDirtyFB() (like weston and
> friends) currently cannot use SimpleDRM. However, that's also true for all other
> DRM drivers which provide shadow framebuffers. We could provide something like
> FB-DEFIO, but that's just useless overhead to paper of lazy user-space.
> 
> I have tested this with all hardware that I have at home, with a lot hand-over
> combinations (with/without SYSFB, with efifb/vesafb/simplefb, with SimpleDRM,
> ...) and all worked great so far.

What's the status with this one? Headed for 3.15?

Are the SimpleDRM and sysfb linked somehow? (I.e. do they need to be in
the same series?)

And jfyi, the drivers/video/ changes will conflict with the
drivers/video/ directory reorganization series, which may be merged for
3.15.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* Re: [PATCH 00/11] SimpleDRM & Sysfb
From: David Herrmann @ 2014-03-03 10:29 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: linux-fbdev@vger.kernel.org, Daniel Vetter, linux-kernel,
	dri-devel@lists.freedesktop.org, Ingo Molnar
In-Reply-To: <53145591.4070004@ti.com>

Hi

On Mon, Mar 3, 2014 at 11:12 AM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> Hi,
>
> On 23/01/14 16:14, David Herrmann wrote:
>> Hi
>>
>> Another round of SimpleDRM patches. I somehow lost track of the last ones and as
>> this is a major rewrite, I'll just start at v1 again.
>>
>> Some comments up-front:
>>
>>  - @Ingo: Patch #1 and #2 are unchanged from the previous ML discussions. I
>>    included them in this series as the other patches depend on them. Could you
>>    pick them up for the x86 tree? The other 9 patches won't make it in 3.14 so
>>    no reason to put them through the DRM tree.
>>    All mentioned issues should be addressed. If there's still sth missing,
>>    please let me know.
>>
>>  - The DRM patches depend on my "DRM Anonymous Inode" patches. But it should be
>>    trivial to apply them on drm-next (I think only one line needs to be changed:
>>    i_mapping => dev_mapping).
>>
>>  - I tested the SimpleDRM fbdev fallback with linux-console+Xorg and it works
>>    fine. The DRM backend is only tested with some DRM tests I have locally. I
>>    have no idea how to make Xorg pick up a specific /dev/dri/card0 card. It
>>    always tells me "no screens found" (as the underlying device is not marked as
>>    boot_vga..). If someone knows how to tell Xorg to use card0, I'd gladly test
>>    this. But I'm no longer used to writing xorg.confs..
>>
>>
>> This series introduces two new concepts: sysfb and SimpleDRM
>> Sysfb is just a generalization of the x86-sysfb concept. It allows to register
>> firmware-framebuffers with the system as platform-devices. This way, drivers can
>> properly bind to these devices and we prevent multiple drivers from accessing
>> the same firmware-framebuffer.
>> Sysfb also provides hooks to get a safe handover to real hw-drivers (like i915).
>> Please see the "video: sysfb: add generic firmware-fb interface" patch for a
>> thorough description of the API. This patch also adds a rather verbose
>> documentation of all known firmware-fb facilities.
>>
>> As second part, this series introduces SimpleDRM. It's a very basic DRM driver
>> that can replace efifb, vesafb, simplefb and friends. It's 100% compatible to
>> the "udl" DRM driver, so user-space like xf86-video-modesetting can pick them up
>> just fine. User-space that cannot deal with drmModeDirtyFB() (like weston and
>> friends) currently cannot use SimpleDRM. However, that's also true for all other
>> DRM drivers which provide shadow framebuffers. We could provide something like
>> FB-DEFIO, but that's just useless overhead to paper of lazy user-space.
>>
>> I have tested this with all hardware that I have at home, with a lot hand-over
>> combinations (with/without SYSFB, with efifb/vesafb/simplefb, with SimpleDRM,
>> ...) and all worked great so far.
>
> What's the status with this one? Headed for 3.15?
>
> Are the SimpleDRM and sysfb linked somehow? (I.e. do they need to be in
> the same series?)
>
> And jfyi, the drivers/video/ changes will conflict with the
> drivers/video/ directory reorganization series, which may be merged for
> 3.15.

If simpledrm is included, then the series needs to be applied as a
whole. As Dave considered merging this for 3.15, I'd appreciate it if
you could ACK the fbdev related patches (they're really small!):
  fbdev: efifb: add dev->remove() callback
  fbdev: vesafb: add dev->remove() callback

Thanks
David

^ permalink raw reply

* Re: [PATCH 00/11] SimpleDRM & Sysfb
From: Tomi Valkeinen @ 2014-03-03 10:45 UTC (permalink / raw)
  To: David Herrmann
  Cc: dri-devel@lists.freedesktop.org, Ingo Molnar,
	linux-fbdev@vger.kernel.org, Dave Airlie, Daniel Vetter,
	linux-kernel, Tom Gundersen
In-Reply-To: <CANq1E4QJqB0CSNeSh2jsp90ZtcLwFwfSG=qjodSLdV_aGbL3BQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1372 bytes --]

On 03/03/14 12:29, David Herrmann wrote:

>> What's the status with this one? Headed for 3.15?
>>
>> Are the SimpleDRM and sysfb linked somehow? (I.e. do they need to be in
>> the same series?)
>>
>> And jfyi, the drivers/video/ changes will conflict with the
>> drivers/video/ directory reorganization series, which may be merged for
>> 3.15.
> 
> If simpledrm is included, then the series needs to be applied as a
> whole. As Dave considered merging this for 3.15, I'd appreciate it if
> you could ACK the fbdev related patches (they're really small!):
>   fbdev: efifb: add dev->remove() callback
>   fbdev: vesafb: add dev->remove() callback

Those look fine.

I'm not familiar with x86 fb, so I can't comment much to the series, but
what worries me more is the "[PATCH 06/11] video: sysfb: add generic
firmware-fb interface", which adds new stuff into drivers/video/. No
problem as such, but as said, it'll conflict with the fbdev reorg patches.

So, presuming nobody shoots down the fbdev reorg series, I'd like to
have all fbdev patches going through the fbdev tree for 3.15, so that I
can handle the (possibly messy) conflicts.

What do you think, would it be possible to keep the sysfb stuff in
arch/x86, and still be able to do the rest of the stuff here? And then
move the sysfs from arch/x86 to drivers/video later?

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* Re: [PATCH 00/11] SimpleDRM & Sysfb
From: David Herrmann @ 2014-03-03 11:09 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: linux-fbdev@vger.kernel.org, Daniel Vetter, linux-kernel,
	dri-devel@lists.freedesktop.org, Ingo Molnar
In-Reply-To: <53145D42.9080806@ti.com>

Hi

On Mon, Mar 3, 2014 at 11:45 AM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> On 03/03/14 12:29, David Herrmann wrote:
>
>>> What's the status with this one? Headed for 3.15?
>>>
>>> Are the SimpleDRM and sysfb linked somehow? (I.e. do they need to be in
>>> the same series?)
>>>
>>> And jfyi, the drivers/video/ changes will conflict with the
>>> drivers/video/ directory reorganization series, which may be merged for
>>> 3.15.
>>
>> If simpledrm is included, then the series needs to be applied as a
>> whole. As Dave considered merging this for 3.15, I'd appreciate it if
>> you could ACK the fbdev related patches (they're really small!):
>>   fbdev: efifb: add dev->remove() callback
>>   fbdev: vesafb: add dev->remove() callback
>
> Those look fine.
>
> I'm not familiar with x86 fb, so I can't comment much to the series, but
> what worries me more is the "[PATCH 06/11] video: sysfb: add generic
> firmware-fb interface", which adds new stuff into drivers/video/. No
> problem as such, but as said, it'll conflict with the fbdev reorg patches.
>
> So, presuming nobody shoots down the fbdev reorg series, I'd like to
> have all fbdev patches going through the fbdev tree for 3.15, so that I
> can handle the (possibly messy) conflicts.
>
> What do you think, would it be possible to keep the sysfb stuff in
> arch/x86, and still be able to do the rest of the stuff here? And then
> move the sysfs from arch/x86 to drivers/video later?

I don't think there's any need for that. Linus does conflict
resolution all day long, so a short hint in Dave's pull-request (plus
an example merge) should be enough. Same is true for -next, I think.
And this is really just a mechanical thing, nothing hard to do. But of
course, it's your decision. However, keeping the code in x86 is the
wrong thing to do. As discussed with Ingo, the patch that extends
x86/sysfb is only provided for easier backporting. The followup patch
immediately removes it again and adds proper video/sysfb. I'd dislike
splitting these just to avoid merge conflicts. I can also maintain a
merge-fixup branch in my tree, if anyone wants that.

Thanks for your reviews of the fbdev stuff!
David

^ permalink raw reply

* Re: [PATCH 00/11] SimpleDRM & Sysfb
From: Tomi Valkeinen @ 2014-03-03 11:22 UTC (permalink / raw)
  To: David Herrmann
  Cc: dri-devel@lists.freedesktop.org, Ingo Molnar,
	linux-fbdev@vger.kernel.org, Dave Airlie, Daniel Vetter,
	linux-kernel, Tom Gundersen
In-Reply-To: <CANq1E4QYuMsj3W80jiyOfeYr+Xm=J096idyvgCUpFhADWR1ZvA@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1858 bytes --]

On 03/03/14 13:09, David Herrmann wrote:

>> What do you think, would it be possible to keep the sysfb stuff in
>> arch/x86, and still be able to do the rest of the stuff here? And then
>> move the sysfs from arch/x86 to drivers/video later?
> 
> I don't think there's any need for that. Linus does conflict
> resolution all day long, so a short hint in Dave's pull-request (plus
> an example merge) should be enough. Same is true for -next, I think.

True, but, well, the conflict with this one is not a few lines. "git
diff |wc -l" gives 2494 lines for the conflict. It's not really complex
to resolve that one, though, as it's really about copying all the stuff
into its new place.

So I'm not sure if that makes Linus think "this is simple one, 30 secs
and done" or "who the f*** sends me this crap" ;). Especially for two
reasons:

- The fb-reogranization is not very critical, and often clean-ups are
not worth it (although I think this one is good one, of course).
- Conflicting fbdev changes coming from another tree

> And this is really just a mechanical thing, nothing hard to do. But of
> course, it's your decision. However, keeping the code in x86 is the
> wrong thing to do. As discussed with Ingo, the patch that extends

Yes, I didn't mean keeping the code in x86 for good, but just for one
kernel version to make merging easier.

> x86/sysfb is only provided for easier backporting. The followup patch
> immediately removes it again and adds proper video/sysfb. I'd dislike
> splitting these just to avoid merge conflicts. I can also maintain a
> merge-fixup branch in my tree, if anyone wants that.

You can have a try at merging. If you think it's trivial, maybe it is
and we can just let Linus handle it:

git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git
work/fb-reorder

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* [PATCH] OMAPDSS: convert pixel clock to common videomode style
From: Tomi Valkeinen @ 2014-03-03 12:08 UTC (permalink / raw)
  To: linux-omap, linux-fbdev, Archit Taneja; +Cc: Tomi Valkeinen

omapdss has its own video-timings struct, but we want to move the common
videomode.

The first step is to change the omapdss's pixelclock unit from kHz to
Hz. Also, omapdss uses "pixel_clock" field name, whereas the common
videomode uses "pixelclock" field name. This patch changes the field
name also, as that makes it easy to spot any non-converted pixel_clock
uses.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
 drivers/gpu/drm/omapdrm/omap_connector.c           |  6 +-
 .../video/omap2/displays-new/connector-analog-tv.c |  2 +-
 drivers/video/omap2/displays-new/connector-dvi.c   |  2 +-
 drivers/video/omap2/displays-new/connector-hdmi.c  |  2 +-
 drivers/video/omap2/displays-new/panel-dsi-cm.c    |  2 +-
 .../omap2/displays-new/panel-lgphilips-lb035q02.c  |  2 +-
 .../omap2/displays-new/panel-nec-nl8048hl11.c      |  4 +-
 .../omap2/displays-new/panel-sharp-ls037v7dw01.c   |  2 +-
 .../omap2/displays-new/panel-sony-acx565akm.c      |  2 +-
 .../omap2/displays-new/panel-tpo-td028ttec1.c      |  2 +-
 .../omap2/displays-new/panel-tpo-td043mtea1.c      |  2 +-
 drivers/video/omap2/dss/dispc.c                    |  8 +--
 drivers/video/omap2/dss/display-sysfs.c            |  4 +-
 drivers/video/omap2/dss/display.c                  |  4 +-
 drivers/video/omap2/dss/dpi.c                      | 25 ++++----
 drivers/video/omap2/dss/dsi.c                      | 16 ++---
 drivers/video/omap2/dss/hdmi4.c                    |  9 +--
 drivers/video/omap2/dss/hdmi_common.c              | 74 +++++++++++-----------
 drivers/video/omap2/dss/sdi.c                      | 15 ++---
 drivers/video/omap2/dss/venc.c                     |  4 +-
 drivers/video/omap2/dss/venc_panel.c               |  2 +-
 drivers/video/omap2/omapfb/omapfb-main.c           |  8 +--
 include/video/omapdss.h                            |  4 +-
 23 files changed, 100 insertions(+), 101 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c
index 912759daf562..86f4ead0441d 100644
--- a/drivers/gpu/drm/omapdrm/omap_connector.c
+++ b/drivers/gpu/drm/omapdrm/omap_connector.c
@@ -37,7 +37,7 @@ struct omap_connector {
 void copy_timings_omap_to_drm(struct drm_display_mode *mode,
 		struct omap_video_timings *timings)
 {
-	mode->clock = timings->pixel_clock;
+	mode->clock = timings->pixelclock / 1000;
 
 	mode->hdisplay = timings->x_res;
 	mode->hsync_start = mode->hdisplay + timings->hfp;
@@ -68,7 +68,7 @@ void copy_timings_omap_to_drm(struct drm_display_mode *mode,
 void copy_timings_drm_to_omap(struct omap_video_timings *timings,
 		struct drm_display_mode *mode)
 {
-	timings->pixel_clock = mode->clock;
+	timings->pixelclock = mode->clock * 1000;
 
 	timings->x_res = mode->hdisplay;
 	timings->hfp = mode->hsync_start - mode->hdisplay;
@@ -220,7 +220,7 @@ static int omap_connector_mode_valid(struct drm_connector *connector,
 	if (!r) {
 		/* check if vrefresh is still valid */
 		new_mode = drm_mode_duplicate(dev, mode);
-		new_mode->clock = timings.pixel_clock;
+		new_mode->clock = timings.pixelclock / 1000;
 		new_mode->vrefresh = 0;
 		if (mode->vrefresh = drm_mode_vrefresh(new_mode))
 			ret = MODE_OK;
diff --git a/drivers/video/omap2/displays-new/connector-analog-tv.c b/drivers/video/omap2/displays-new/connector-analog-tv.c
index ccd9073f706f..27f33ef8fca1 100644
--- a/drivers/video/omap2/displays-new/connector-analog-tv.c
+++ b/drivers/video/omap2/displays-new/connector-analog-tv.c
@@ -31,7 +31,7 @@ struct panel_drv_data {
 static const struct omap_video_timings tvc_pal_timings = {
 	.x_res		= 720,
 	.y_res		= 574,
-	.pixel_clock	= 13500,
+	.pixelclock	= 13500000,
 	.hsw		= 64,
 	.hfp		= 12,
 	.hbp		= 68,
diff --git a/drivers/video/omap2/displays-new/connector-dvi.c b/drivers/video/omap2/displays-new/connector-dvi.c
index b6c50904038e..d18e4b8c0731 100644
--- a/drivers/video/omap2/displays-new/connector-dvi.c
+++ b/drivers/video/omap2/displays-new/connector-dvi.c
@@ -23,7 +23,7 @@ static const struct omap_video_timings dvic_default_timings = {
 	.x_res		= 640,
 	.y_res		= 480,
 
-	.pixel_clock	= 23500,
+	.pixelclock	= 23500000,
 
 	.hfp		= 48,
 	.hsw		= 32,
diff --git a/drivers/video/omap2/displays-new/connector-hdmi.c b/drivers/video/omap2/displays-new/connector-hdmi.c
index 9abe2c039ae9..9393e2d6473d 100644
--- a/drivers/video/omap2/displays-new/connector-hdmi.c
+++ b/drivers/video/omap2/displays-new/connector-hdmi.c
@@ -21,7 +21,7 @@
 static const struct omap_video_timings hdmic_default_timings = {
 	.x_res		= 640,
 	.y_res		= 480,
-	.pixel_clock	= 25175,
+	.pixelclock	= 25175000,
 	.hsw		= 96,
 	.hfp		= 16,
 	.hbp		= 48,
diff --git a/drivers/video/omap2/displays-new/panel-dsi-cm.c b/drivers/video/omap2/displays-new/panel-dsi-cm.c
index b7baafe83aa3..f317c878a259 100644
--- a/drivers/video/omap2/displays-new/panel-dsi-cm.c
+++ b/drivers/video/omap2/displays-new/panel-dsi-cm.c
@@ -1184,7 +1184,7 @@ static int dsicm_probe(struct platform_device *pdev)
 
 	ddata->timings.x_res = 864;
 	ddata->timings.y_res = 480;
-	ddata->timings.pixel_clock = DIV_ROUND_UP(864 * 480 * 60, 1000);
+	ddata->timings.pixelclock = 864 * 480 * 60;
 
 	dssdev = &ddata->dssdev;
 	dssdev->dev = dev;
diff --git a/drivers/video/omap2/displays-new/panel-lgphilips-lb035q02.c b/drivers/video/omap2/displays-new/panel-lgphilips-lb035q02.c
index 6e8977b18950..2e6b513222d9 100644
--- a/drivers/video/omap2/displays-new/panel-lgphilips-lb035q02.c
+++ b/drivers/video/omap2/displays-new/panel-lgphilips-lb035q02.c
@@ -23,7 +23,7 @@ static struct omap_video_timings lb035q02_timings = {
 	.x_res = 320,
 	.y_res = 240,
 
-	.pixel_clock	= 6500,
+	.pixelclock	= 6500000,
 
 	.hsw		= 2,
 	.hfp		= 20,
diff --git a/drivers/video/omap2/displays-new/panel-nec-nl8048hl11.c b/drivers/video/omap2/displays-new/panel-nec-nl8048hl11.c
index bb217da65c5f..996fa004b48c 100644
--- a/drivers/video/omap2/displays-new/panel-nec-nl8048hl11.c
+++ b/drivers/video/omap2/displays-new/panel-nec-nl8048hl11.c
@@ -40,7 +40,7 @@ struct panel_drv_data {
  * NEC PIX Clock Ratings
  * MIN:21.8MHz TYP:23.8MHz MAX:25.7MHz
  */
-#define LCD_PIXEL_CLOCK		23800
+#define LCD_PIXEL_CLOCK		23800000
 
 static const struct {
 	unsigned char addr;
@@ -69,7 +69,7 @@ static const struct {
 static const struct omap_video_timings nec_8048_panel_timings = {
 	.x_res		= LCD_XRES,
 	.y_res		= LCD_YRES,
-	.pixel_clock	= LCD_PIXEL_CLOCK,
+	.pixelclock	= LCD_PIXEL_CLOCK,
 	.hfp		= 6,
 	.hsw		= 1,
 	.hbp		= 4,
diff --git a/drivers/video/omap2/displays-new/panel-sharp-ls037v7dw01.c b/drivers/video/omap2/displays-new/panel-sharp-ls037v7dw01.c
index 72a4fb5aa6b1..b2f710be565d 100644
--- a/drivers/video/omap2/displays-new/panel-sharp-ls037v7dw01.c
+++ b/drivers/video/omap2/displays-new/panel-sharp-ls037v7dw01.c
@@ -37,7 +37,7 @@ static const struct omap_video_timings sharp_ls_timings = {
 	.x_res = 480,
 	.y_res = 640,
 
-	.pixel_clock	= 19200,
+	.pixelclock	= 19200000,
 
 	.hsw		= 2,
 	.hfp		= 1,
diff --git a/drivers/video/omap2/displays-new/panel-sony-acx565akm.c b/drivers/video/omap2/displays-new/panel-sony-acx565akm.c
index 8e97d06921ff..27f60ad6b2ab 100644
--- a/drivers/video/omap2/displays-new/panel-sony-acx565akm.c
+++ b/drivers/video/omap2/displays-new/panel-sony-acx565akm.c
@@ -93,7 +93,7 @@ struct panel_drv_data {
 static const struct omap_video_timings acx565akm_panel_timings = {
 	.x_res		= 800,
 	.y_res		= 480,
-	.pixel_clock	= 24000,
+	.pixelclock	= 24000000,
 	.hfp		= 28,
 	.hsw		= 4,
 	.hbp		= 24,
diff --git a/drivers/video/omap2/displays-new/panel-tpo-td028ttec1.c b/drivers/video/omap2/displays-new/panel-tpo-td028ttec1.c
index 9a08908fe998..fae6adc005a7 100644
--- a/drivers/video/omap2/displays-new/panel-tpo-td028ttec1.c
+++ b/drivers/video/omap2/displays-new/panel-tpo-td028ttec1.c
@@ -45,7 +45,7 @@ struct panel_drv_data {
 static struct omap_video_timings td028ttec1_panel_timings = {
 	.x_res		= 480,
 	.y_res		= 640,
-	.pixel_clock	= 22153,
+	.pixelclock	= 22153000,
 	.hfp		= 24,
 	.hsw		= 8,
 	.hbp		= 8,
diff --git a/drivers/video/omap2/displays-new/panel-tpo-td043mtea1.c b/drivers/video/omap2/displays-new/panel-tpo-td043mtea1.c
index eadc6529fa3d..875b40263b33 100644
--- a/drivers/video/omap2/displays-new/panel-tpo-td043mtea1.c
+++ b/drivers/video/omap2/displays-new/panel-tpo-td043mtea1.c
@@ -76,7 +76,7 @@ static const struct omap_video_timings tpo_td043_timings = {
 	.x_res		= 800,
 	.y_res		= 480,
 
-	.pixel_clock	= 36000,
+	.pixelclock	= 36000000,
 
 	.hsw		= 1,
 	.hfp		= 68,
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index 77d6221618f4..5922fb7b26fb 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -2884,7 +2884,7 @@ bool dispc_mgr_timings_ok(enum omap_channel channel,
 
 	timings_ok = _dispc_mgr_size_ok(timings->x_res, timings->y_res);
 
-	timings_ok &= _dispc_mgr_pclk_ok(channel, timings->pixel_clock * 1000);
+	timings_ok &= _dispc_mgr_pclk_ok(channel, timings->pixelclock);
 
 	if (dss_mgr_is_lcd(channel)) {
 		timings_ok &= _dispc_lcd_timings_ok(timings->hsw, timings->hfp,
@@ -2979,10 +2979,10 @@ void dispc_mgr_set_timings(enum omap_channel channel,
 		xtot = t.x_res + t.hfp + t.hsw + t.hbp;
 		ytot = t.y_res + t.vfp + t.vsw + t.vbp;
 
-		ht = (timings->pixel_clock * 1000) / xtot;
-		vt = (timings->pixel_clock * 1000) / xtot / ytot;
+		ht = timings->pixelclock / xtot;
+		vt = timings->pixelclock / xtot / ytot;
 
-		DSSDBG("pck %u\n", timings->pixel_clock);
+		DSSDBG("pck %u\n", timings->pixelclock);
 		DSSDBG("hsw %d hfp %d hbp %d vsw %d vfp %d vbp %d\n",
 			t.hsw, t.hfp, t.hbp, t.vsw, t.vfp, t.vbp);
 		DSSDBG("vsync_level %d hsync_level %d data_pclk_edge %d de_level %d sync_pclk_edge %d\n",
diff --git a/drivers/video/omap2/dss/display-sysfs.c b/drivers/video/omap2/dss/display-sysfs.c
index f7b5f9561041..5a2095a98ed8 100644
--- a/drivers/video/omap2/dss/display-sysfs.c
+++ b/drivers/video/omap2/dss/display-sysfs.c
@@ -132,7 +132,7 @@ static ssize_t display_timings_show(struct device *dev,
 	dssdev->driver->get_timings(dssdev, &t);
 
 	return snprintf(buf, PAGE_SIZE, "%u,%u/%u/%u/%u,%u/%u/%u/%u\n",
-			t.pixel_clock,
+			t.pixelclock,
 			t.x_res, t.hfp, t.hbp, t.hsw,
 			t.y_res, t.vfp, t.vbp, t.vsw);
 }
@@ -158,7 +158,7 @@ static ssize_t display_timings_store(struct device *dev,
 	}
 #endif
 	if (!found && sscanf(buf, "%u,%hu/%hu/%hu/%hu,%hu/%hu/%hu/%hu",
-				&t.pixel_clock,
+				&t.pixelclock,
 				&t.x_res, &t.hfp, &t.hbp, &t.hsw,
 				&t.y_res, &t.vfp, &t.vbp, &t.vsw) != 9)
 		return -EINVAL;
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c
index 669a81fdf58e..9f19ae22944c 100644
--- a/drivers/video/omap2/dss/display.c
+++ b/drivers/video/omap2/dss/display.c
@@ -248,7 +248,7 @@ void videomode_to_omap_video_timings(const struct videomode *vm,
 {
 	memset(ovt, 0, sizeof(*ovt));
 
-	ovt->pixel_clock = vm->pixelclock / 1000;
+	ovt->pixelclock = vm->pixelclock;
 	ovt->x_res = vm->hactive;
 	ovt->hbp = vm->hback_porch;
 	ovt->hfp = vm->hfront_porch;
@@ -280,7 +280,7 @@ void omap_video_timings_to_videomode(const struct omap_video_timings *ovt,
 {
 	memset(vm, 0, sizeof(*vm));
 
-	vm->pixelclock = ovt->pixel_clock * 1000;
+	vm->pixelclock = ovt->pixelclock;
 
 	vm->hactive = ovt->x_res;
 	vm->hback_porch = ovt->hbp;
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c
index 23ef21ffc2c4..6c0bb099b7bf 100644
--- a/drivers/video/omap2/dss/dpi.c
+++ b/drivers/video/omap2/dss/dpi.c
@@ -307,22 +307,21 @@ static int dpi_set_mode(struct omap_overlay_manager *mgr)
 	int r = 0;
 
 	if (dpi.dsidev)
-		r = dpi_set_dsi_clk(mgr->id, t->pixel_clock * 1000, &fck,
+		r = dpi_set_dsi_clk(mgr->id, t->pixelclock, &fck,
 				&lck_div, &pck_div);
 	else
-		r = dpi_set_dispc_clk(t->pixel_clock * 1000, &fck,
+		r = dpi_set_dispc_clk(t->pixelclock, &fck,
 				&lck_div, &pck_div);
 	if (r)
 		return r;
 
-	pck = fck / lck_div / pck_div / 1000;
+	pck = fck / lck_div / pck_div;
 
-	if (pck != t->pixel_clock) {
-		DSSWARN("Could not find exact pixel clock. "
-				"Requested %d kHz, got %lu kHz\n",
-				t->pixel_clock, pck);
+	if (pck != t->pixelclock) {
+		DSSWARN("Could not find exact pixel clock. Requested %d Hz, got %lu Hz\n",
+			t->pixelclock, pck);
 
-		t->pixel_clock = pck;
+		t->pixelclock = pck;
 	}
 
 	dss_mgr_set_timings(mgr, t);
@@ -480,17 +479,17 @@ static int dpi_check_timings(struct omap_dss_device *dssdev,
 	if (mgr && !dispc_mgr_timings_ok(mgr->id, timings))
 		return -EINVAL;
 
-	if (timings->pixel_clock = 0)
+	if (timings->pixelclock = 0)
 		return -EINVAL;
 
 	if (dpi.dsidev) {
-		ok = dpi_dsi_clk_calc(timings->pixel_clock * 1000, &ctx);
+		ok = dpi_dsi_clk_calc(timings->pixelclock, &ctx);
 		if (!ok)
 			return -EINVAL;
 
 		fck = ctx.dsi_cinfo.dsi_pll_hsdiv_dispc_clk;
 	} else {
-		ok = dpi_dss_clk_calc(timings->pixel_clock * 1000, &ctx);
+		ok = dpi_dss_clk_calc(timings->pixelclock, &ctx);
 		if (!ok)
 			return -EINVAL;
 
@@ -500,9 +499,9 @@ static int dpi_check_timings(struct omap_dss_device *dssdev,
 	lck_div = ctx.dispc_cinfo.lck_div;
 	pck_div = ctx.dispc_cinfo.pck_div;
 
-	pck = fck / lck_div / pck_div / 1000;
+	pck = fck / lck_div / pck_div;
 
-	timings->pixel_clock = pck;
+	timings->pixelclock = pck;
 
 	return 0;
 }
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index a820c37e323e..0d82f731d2f0 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -4616,7 +4616,7 @@ static void print_dsi_vm(const char *str,
 
 static void print_dispc_vm(const char *str, const struct omap_video_timings *t)
 {
-	unsigned long pck = t->pixel_clock * 1000;
+	unsigned long pck = t->pixelclock;
 	int hact, bl, tot;
 
 	hact = t->x_res;
@@ -4656,7 +4656,7 @@ static void print_dsi_dispc_vm(const char *str,
 	dsi_hact = DIV_ROUND_UP(DIV_ROUND_UP(t->hact * t->bitspp, 8) + 6, t->ndl);
 	dsi_htot = t->hss + t->hsa + t->hse + t->hbp + dsi_hact + t->hfp;
 
-	vm.pixel_clock = pck / 1000;
+	vm.pixelclock = pck;
 	vm.hsw = div64_u64((u64)(t->hsa + t->hse) * pck, byteclk);
 	vm.hbp = div64_u64((u64)t->hbp * pck, byteclk);
 	vm.hfp = div64_u64((u64)t->hfp * pck, byteclk);
@@ -4678,7 +4678,7 @@ static bool dsi_cm_calc_dispc_cb(int lckd, int pckd, unsigned long lck,
 	ctx->dispc_cinfo.pck = pck;
 
 	*t = *ctx->config->timings;
-	t->pixel_clock = pck / 1000;
+	t->pixelclock = pck;
 	t->x_res = ctx->config->timings->x_res;
 	t->y_res = ctx->config->timings->y_res;
 	t->hsw = t->hfp = t->hbp = t->vsw = 1;
@@ -4732,7 +4732,7 @@ static bool dsi_cm_calc(struct dsi_data *dsi,
 	 * especially as we go to LP between each pixel packet due to HW
 	 * "feature". So let's just estimate very roughly and multiply by 1.5.
 	 */
-	pck = cfg->timings->pixel_clock * 1000;
+	pck = cfg->timings->pixelclock;
 	pck = pck * 3 / 2;
 	txbyteclk = pck * bitspp / 8 / ndl;
 
@@ -4909,7 +4909,7 @@ static bool dsi_vm_calc_blanking(struct dsi_clk_calc_ctx *ctx)
 
 	dispc_vm = &ctx->dispc_vm;
 	*dispc_vm = *req_vm;
-	dispc_vm->pixel_clock = dispc_pck / 1000;
+	dispc_vm->pixelclock = dispc_pck;
 
 	if (cfg->trans_mode = OMAP_DSS_DSI_PULSE_MODE) {
 		hsa = div64_u64((u64)req_vm->hsw * dispc_pck,
@@ -5031,9 +5031,9 @@ static bool dsi_vm_calc(struct dsi_data *dsi,
 	ctx->dsi_cinfo.clkin = clkin;
 
 	/* these limits should come from the panel driver */
-	ctx->req_pck_min = t->pixel_clock * 1000 - 1000;
-	ctx->req_pck_nom = t->pixel_clock * 1000;
-	ctx->req_pck_max = t->pixel_clock * 1000 + 1000;
+	ctx->req_pck_min = t->pixelclock - 1000;
+	ctx->req_pck_nom = t->pixelclock;
+	ctx->req_pck_max = t->pixelclock + 1000;
 
 	byteclk_min = div64_u64((u64)ctx->req_pck_min * bitspp, ndl * 8);
 	pll_min = max(cfg->hs_clk_min * 4, byteclk_min * 4 * 4);
diff --git a/drivers/video/omap2/dss/hdmi4.c b/drivers/video/omap2/dss/hdmi4.c
index 4a74538f9ea5..895c252ae0a8 100644
--- a/drivers/video/omap2/dss/hdmi4.c
+++ b/drivers/video/omap2/dss/hdmi4.c
@@ -153,7 +153,8 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
 
 	DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res);
 
-	phy = p->pixel_clock;
+	/* the functions below use kHz pixel clock. TODO: change to Hz */
+	phy = p->pixelclock / 1000;
 
 	hdmi_pll_compute(&hdmi.pll, clk_get_rate(hdmi.sys_clk), phy);
 
@@ -238,13 +239,13 @@ static void hdmi_display_set_timing(struct omap_dss_device *dssdev,
 	if (t != NULL) {
 		hdmi.cfg = *t;
 
-		dispc_set_tv_pclk(t->timings.pixel_clock * 1000);
+		dispc_set_tv_pclk(t->timings.pixelclock);
 	} else {
 		hdmi.cfg.timings = *timings;
 		hdmi.cfg.cm.code = 0;
 		hdmi.cfg.cm.mode = HDMI_DVI;
 
-		dispc_set_tv_pclk(timings->pixel_clock * 1000);
+		dispc_set_tv_pclk(timings->pixelclock);
 	}
 
 	DSSDBG("using mode: %s, code %d\n", hdmi.cfg.cm.mode = HDMI_DVI ?
@@ -509,7 +510,7 @@ static int hdmi_audio_config(struct omap_dss_device *dssdev,
 		struct omap_dss_audio *audio)
 {
 	int r;
-	u32 pclk = hdmi.cfg.timings.pixel_clock;
+	u32 pclk = hdmi.cfg.timings.pixelclock;
 
 	mutex_lock(&hdmi.lock);
 
diff --git a/drivers/video/omap2/dss/hdmi_common.c b/drivers/video/omap2/dss/hdmi_common.c
index 0614922902dd..b11afac8e068 100644
--- a/drivers/video/omap2/dss/hdmi_common.c
+++ b/drivers/video/omap2/dss/hdmi_common.c
@@ -23,91 +23,91 @@
 
 static const struct hdmi_config cea_timings[] = {
 	{
-		{ 640, 480, 25200, 96, 16, 48, 2, 10, 33,
+		{ 640, 480, 25200000, 96, 16, 48, 2, 10, 33,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 1, HDMI_HDMI },
 	},
 	{
-		{ 720, 480, 27027, 62, 16, 60, 6, 9, 30,
+		{ 720, 480, 27027000, 62, 16, 60, 6, 9, 30,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 2, HDMI_HDMI },
 	},
 	{
-		{ 1280, 720, 74250, 40, 110, 220, 5, 5, 20,
+		{ 1280, 720, 74250000, 40, 110, 220, 5, 5, 20,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 4, HDMI_HDMI },
 	},
 	{
-		{ 1920, 540, 74250, 44, 88, 148, 5, 2, 15,
+		{ 1920, 540, 74250000, 44, 88, 148, 5, 2, 15,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			true, },
 		{ 5, HDMI_HDMI },
 	},
 	{
-		{ 1440, 240, 27027, 124, 38, 114, 3, 4, 15,
+		{ 1440, 240, 27027000, 124, 38, 114, 3, 4, 15,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			true, },
 		{ 6, HDMI_HDMI },
 	},
 	{
-		{ 1920, 1080, 148500, 44, 88, 148, 5, 4, 36,
+		{ 1920, 1080, 148500000, 44, 88, 148, 5, 4, 36,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 16, HDMI_HDMI },
 	},
 	{
-		{ 720, 576, 27000, 64, 12, 68, 5, 5, 39,
+		{ 720, 576, 27000000, 64, 12, 68, 5, 5, 39,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 17, HDMI_HDMI },
 	},
 	{
-		{ 1280, 720, 74250, 40, 440, 220, 5, 5, 20,
+		{ 1280, 720, 74250000, 40, 440, 220, 5, 5, 20,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 19, HDMI_HDMI },
 	},
 	{
-		{ 1920, 540, 74250, 44, 528, 148, 5, 2, 15,
+		{ 1920, 540, 74250000, 44, 528, 148, 5, 2, 15,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			true, },
 		{ 20, HDMI_HDMI },
 	},
 	{
-		{ 1440, 288, 27000, 126, 24, 138, 3, 2, 19,
+		{ 1440, 288, 27000000, 126, 24, 138, 3, 2, 19,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			true, },
 		{ 21, HDMI_HDMI },
 	},
 	{
-		{ 1440, 576, 54000, 128, 24, 136, 5, 5, 39,
+		{ 1440, 576, 54000000, 128, 24, 136, 5, 5, 39,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 29, HDMI_HDMI },
 	},
 	{
-		{ 1920, 1080, 148500, 44, 528, 148, 5, 4, 36,
+		{ 1920, 1080, 148500000, 44, 528, 148, 5, 4, 36,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 31, HDMI_HDMI },
 	},
 	{
-		{ 1920, 1080, 74250, 44, 638, 148, 5, 4, 36,
+		{ 1920, 1080, 74250000, 44, 638, 148, 5, 4, 36,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 32, HDMI_HDMI },
 	},
 	{
-		{ 2880, 480, 108108, 248, 64, 240, 6, 9, 30,
+		{ 2880, 480, 108108000, 248, 64, 240, 6, 9, 30,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 35, HDMI_HDMI },
 	},
 	{
-		{ 2880, 576, 108000, 256, 48, 272, 5, 5, 39,
+		{ 2880, 576, 108000000, 256, 48, 272, 5, 5, 39,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 37, HDMI_HDMI },
@@ -117,121 +117,121 @@ static const struct hdmi_config cea_timings[] = {
 static const struct hdmi_config vesa_timings[] = {
 /* VESA From Here */
 	{
-		{ 640, 480, 25175, 96, 16, 48, 2, 11, 31,
+		{ 640, 480, 25175000, 96, 16, 48, 2, 11, 31,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 4, HDMI_DVI },
 	},
 	{
-		{ 800, 600, 40000, 128, 40, 88, 4, 1, 23,
+		{ 800, 600, 40000000, 128, 40, 88, 4, 1, 23,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 9, HDMI_DVI },
 	},
 	{
-		{ 848, 480, 33750, 112, 16, 112, 8, 6, 23,
+		{ 848, 480, 33750000, 112, 16, 112, 8, 6, 23,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0xE, HDMI_DVI },
 	},
 	{
-		{ 1280, 768, 79500, 128, 64, 192, 7, 3, 20,
+		{ 1280, 768, 79500000, 128, 64, 192, 7, 3, 20,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 0x17, HDMI_DVI },
 	},
 	{
-		{ 1280, 800, 83500, 128, 72, 200, 6, 3, 22,
+		{ 1280, 800, 83500000, 128, 72, 200, 6, 3, 22,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 0x1C, HDMI_DVI },
 	},
 	{
-		{ 1360, 768, 85500, 112, 64, 256, 6, 3, 18,
+		{ 1360, 768, 85500000, 112, 64, 256, 6, 3, 18,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x27, HDMI_DVI },
 	},
 	{
-		{ 1280, 960, 108000, 112, 96, 312, 3, 1, 36,
+		{ 1280, 960, 108000000, 112, 96, 312, 3, 1, 36,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x20, HDMI_DVI },
 	},
 	{
-		{ 1280, 1024, 108000, 112, 48, 248, 3, 1, 38,
+		{ 1280, 1024, 108000000, 112, 48, 248, 3, 1, 38,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x23, HDMI_DVI },
 	},
 	{
-		{ 1024, 768, 65000, 136, 24, 160, 6, 3, 29,
+		{ 1024, 768, 65000000, 136, 24, 160, 6, 3, 29,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 0x10, HDMI_DVI },
 	},
 	{
-		{ 1400, 1050, 121750, 144, 88, 232, 4, 3, 32,
+		{ 1400, 1050, 121750000, 144, 88, 232, 4, 3, 32,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 0x2A, HDMI_DVI },
 	},
 	{
-		{ 1440, 900, 106500, 152, 80, 232, 6, 3, 25,
+		{ 1440, 900, 106500000, 152, 80, 232, 6, 3, 25,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 0x2F, HDMI_DVI },
 	},
 	{
-		{ 1680, 1050, 146250, 176 , 104, 280, 6, 3, 30,
+		{ 1680, 1050, 146250000, 176 , 104, 280, 6, 3, 30,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_LOW,
 			false, },
 		{ 0x3A, HDMI_DVI },
 	},
 	{
-		{ 1366, 768, 85500, 143, 70, 213, 3, 3, 24,
+		{ 1366, 768, 85500000, 143, 70, 213, 3, 3, 24,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x51, HDMI_DVI },
 	},
 	{
-		{ 1920, 1080, 148500, 44, 148, 80, 5, 4, 36,
+		{ 1920, 1080, 148500000, 44, 148, 80, 5, 4, 36,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x52, HDMI_DVI },
 	},
 	{
-		{ 1280, 768, 68250, 32, 48, 80, 7, 3, 12,
+		{ 1280, 768, 68250000, 32, 48, 80, 7, 3, 12,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x16, HDMI_DVI },
 	},
 	{
-		{ 1400, 1050, 101000, 32, 48, 80, 4, 3, 23,
+		{ 1400, 1050, 101000000, 32, 48, 80, 4, 3, 23,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x29, HDMI_DVI },
 	},
 	{
-		{ 1680, 1050, 119000, 32, 48, 80, 6, 3, 21,
+		{ 1680, 1050, 119000000, 32, 48, 80, 6, 3, 21,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x39, HDMI_DVI },
 	},
 	{
-		{ 1280, 800, 79500, 32, 48, 80, 6, 3, 14,
+		{ 1280, 800, 79500000, 32, 48, 80, 6, 3, 14,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x1B, HDMI_DVI },
 	},
 	{
-		{ 1280, 720, 74250, 40, 110, 220, 5, 5, 20,
+		{ 1280, 720, 74250000, 40, 110, 220, 5, 5, 20,
 			OMAPDSS_SIG_ACTIVE_HIGH, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x55, HDMI_DVI },
 	},
 	{
-		{ 1920, 1200, 154000, 32, 48, 80, 6, 3, 26,
+		{ 1920, 1200, 154000000, 32, 48, 80, 6, 3, 26,
 			OMAPDSS_SIG_ACTIVE_LOW, OMAPDSS_SIG_ACTIVE_HIGH,
 			false, },
 		{ 0x44, HDMI_DVI },
@@ -277,8 +277,8 @@ static bool hdmi_timings_compare(struct omap_video_timings *timing1,
 {
 	int timing1_vsync, timing1_hsync, timing2_vsync, timing2_hsync;
 
-	if ((DIV_ROUND_CLOSEST(timing2->pixel_clock, 1000) =
-			DIV_ROUND_CLOSEST(timing1->pixel_clock, 1000)) &&
+	if ((DIV_ROUND_CLOSEST(timing2->pixelclock, 1000000) =
+			DIV_ROUND_CLOSEST(timing1->pixelclock, 1000000)) &&
 		(timing2->x_res = timing1->x_res) &&
 		(timing2->y_res = timing1->y_res)) {
 
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c
index ba806c9e7f54..b679e33adf2d 100644
--- a/drivers/video/omap2/dss/sdi.c
+++ b/drivers/video/omap2/dss/sdi.c
@@ -149,20 +149,19 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
 	t->data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
 	t->sync_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
 
-	r = sdi_calc_clock_div(t->pixel_clock * 1000, &fck, &dispc_cinfo);
+	r = sdi_calc_clock_div(t->pixelclock, &fck, &dispc_cinfo);
 	if (r)
 		goto err_calc_clock_div;
 
 	sdi.mgr_config.clock_info = dispc_cinfo;
 
-	pck = fck / dispc_cinfo.lck_div / dispc_cinfo.pck_div / 1000;
+	pck = fck / dispc_cinfo.lck_div / dispc_cinfo.pck_div;
 
-	if (pck != t->pixel_clock) {
-		DSSWARN("Could not find exact pixel clock. Requested %d kHz, "
-				"got %lu kHz\n",
-				t->pixel_clock, pck);
+	if (pck != t->pixelclock) {
+		DSSWARN("Could not find exact pixel clock. Requested %d Hz, got %lu Hz\n",
+			t->pixelclock, pck);
 
-		t->pixel_clock = pck;
+		t->pixelclock = pck;
 	}
 
 
@@ -244,7 +243,7 @@ static int sdi_check_timings(struct omap_dss_device *dssdev,
 	if (mgr && !dispc_mgr_timings_ok(mgr->id, timings))
 		return -EINVAL;
 
-	if (timings->pixel_clock = 0)
+	if (timings->pixelclock = 0)
 		return -EINVAL;
 
 	return 0;
diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
index 2cd7f7e42105..59ade34bd536 100644
--- a/drivers/video/omap2/dss/venc.c
+++ b/drivers/video/omap2/dss/venc.c
@@ -264,7 +264,7 @@ static const struct venc_config venc_config_pal_bdghi = {
 const struct omap_video_timings omap_dss_pal_timings = {
 	.x_res		= 720,
 	.y_res		= 574,
-	.pixel_clock	= 13500,
+	.pixelclock	= 13500000,
 	.hsw		= 64,
 	.hfp		= 12,
 	.hbp		= 68,
@@ -279,7 +279,7 @@ EXPORT_SYMBOL(omap_dss_pal_timings);
 const struct omap_video_timings omap_dss_ntsc_timings = {
 	.x_res		= 720,
 	.y_res		= 482,
-	.pixel_clock	= 13500,
+	.pixelclock	= 13500000,
 	.hsw		= 64,
 	.hfp		= 16,
 	.hbp		= 58,
diff --git a/drivers/video/omap2/dss/venc_panel.c b/drivers/video/omap2/dss/venc_panel.c
index f7d92c57bd73..af68cd444d7e 100644
--- a/drivers/video/omap2/dss/venc_panel.c
+++ b/drivers/video/omap2/dss/venc_panel.c
@@ -89,7 +89,7 @@ static int venc_panel_probe(struct omap_dss_device *dssdev)
 	const struct omap_video_timings default_timings = {
 		.x_res		= 720,
 		.y_res		= 574,
-		.pixel_clock	= 13500,
+		.pixelclock	= 13500000,
 		.hsw		= 64,
 		.hfp		= 12,
 		.hbp		= 68,
diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
index fcb9e932d00c..8d02f164c8c6 100644
--- a/drivers/video/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/omap2/omapfb/omapfb-main.c
@@ -723,8 +723,8 @@ int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var)
 		display->driver->get_timings(display, &timings);
 
 		/* pixclock in ps, the rest in pixclock */
-		var->pixclock = timings.pixel_clock != 0 ?
-			KHZ2PICOS(timings.pixel_clock) :
+		var->pixclock = timings.pixelclock != 0 ?
+			KHZ2PICOS(timings.pixelclock / 1000) :
 			0;
 		var->left_margin = timings.hbp;
 		var->right_margin = timings.hfp;
@@ -2077,7 +2077,7 @@ static int omapfb_mode_to_timings(const char *mode_str,
 		timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
 	}
 
-	timings->pixel_clock = PICOS2KHZ(var->pixclock);
+	timings->pixelclock = PICOS2KHZ(var->pixclock) * 1000;
 	timings->hbp = var->left_margin;
 	timings->hfp = var->right_margin;
 	timings->vbp = var->upper_margin;
@@ -2229,7 +2229,7 @@ static void fb_videomode_to_omap_timings(struct fb_videomode *m,
 
 	t->x_res = m->xres;
 	t->y_res = m->yres;
-	t->pixel_clock = PICOS2KHZ(m->pixclock);
+	t->pixelclock = PICOS2KHZ(m->pixclock) * 1000;
 	t->hsw = m->hsync_len;
 	t->hfp = m->right_margin;
 	t->hbp = m->left_margin;
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 3d7c51a6f9ff..e8479345dc96 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -344,8 +344,8 @@ struct omap_video_timings {
 	u16 x_res;
 	/* Unit: pixels */
 	u16 y_res;
-	/* Unit: KHz */
-	u32 pixel_clock;
+	/* Unit: Hz */
+	u32 pixelclock;
 	/* Unit: pixel clocks */
 	u16 hsw;	/* Horizontal synchronization pulse width */
 	/* Unit: pixel clocks */
-- 
1.8.3.2


^ permalink raw reply related

* Re: [PATCH 0/3] Reorder drivers/video directory
From: Daniel Vetter @ 2014-03-04  9:50 UTC (permalink / raw)
  To: Tomi Valkeinen
  Cc: linux-fbdev, Greg Kroah-Hartman, Jean-Christophe Plagniol-Villard,
	linux-kernel, dri-devel, Geert Uytterhoeven, Laurent Pinchart,
	Andrew Morton, Linus Torvalds
In-Reply-To: <1393502086-9433-1-git-send-email-tomi.valkeinen@ti.com>

On Thu, Feb 27, 2014 at 01:54:43PM +0200, Tomi Valkeinen wrote:
> Hi,
> 
> This is a re-send of the series, with RFC removed from the subject, and a bunch
> of acks added.
> 
> I'm cc'ing more people, to make sure this doesn't come as a surprise, and to
> make sure this is not a bad idea, doomed to fail horribly.
> 
> So this series creates a new directory, drivers/video/fbdev/, to which all
> fbdev related files are moved. Also, a new directory, drivers/video/fbdev/core/
> is created, to which the core fbdev framework files are moved. This makes the
> drivers/video hierarchy much more clear.
> 
> Presuming no one has objections to this as such, I wonder what's the least
> painful way to merge this? Normally, like any other fbdev change? As a separate
> pull request, maybe at -rc2 time frame, based on -rc1? Something else?

I like this. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> 
>  Tomi
> 
> Tomi Valkeinen (3):
>   video: move fbdev to drivers/video/fbdev
>   fbdev: move fbdev core files to separate directory
>   video: Kconfig: move drm and fb into separate menus
> 
>  drivers/Makefile                                   |    4 +-
>  drivers/video/Kconfig                              | 2487 +-------------------
>  drivers/video/Makefile                             |  168 +-
>  drivers/video/{ => fbdev}/68328fb.c                |    0
>  drivers/video/fbdev/Kconfig                        | 2481 +++++++++++++++++++
>  drivers/video/fbdev/Makefile                       |  153 ++
>  drivers/video/{ => fbdev}/acornfb.c                |    0
>  drivers/video/{ => fbdev}/acornfb.h                |    0
>  drivers/video/{ => fbdev}/amba-clcd.c              |    0
>  drivers/video/{ => fbdev}/amifb.c                  |    0
>  drivers/video/{ => fbdev}/arcfb.c                  |    0
>  drivers/video/{ => fbdev}/arkfb.c                  |    0
>  drivers/video/{ => fbdev}/asiliantfb.c             |    0
>  drivers/video/{ => fbdev}/atafb.c                  |    0
>  drivers/video/{ => fbdev}/atafb.h                  |    0
>  drivers/video/{ => fbdev}/atafb_iplan2p2.c         |    0
>  drivers/video/{ => fbdev}/atafb_iplan2p4.c         |    0
>  drivers/video/{ => fbdev}/atafb_iplan2p8.c         |    0
>  drivers/video/{ => fbdev}/atafb_mfb.c              |    0
>  drivers/video/{ => fbdev}/atafb_utils.h            |    0
>  drivers/video/{ => fbdev}/atmel_lcdfb.c            |    0
>  drivers/video/{ => fbdev}/aty/Makefile             |    0
>  drivers/video/{ => fbdev}/aty/ati_ids.h            |    0
>  drivers/video/{ => fbdev}/aty/aty128fb.c           |    0
>  drivers/video/{ => fbdev}/aty/atyfb.h              |    0
>  drivers/video/{ => fbdev}/aty/atyfb_base.c         |    0
>  drivers/video/{ => fbdev}/aty/mach64_accel.c       |    0
>  drivers/video/{ => fbdev}/aty/mach64_ct.c          |    0
>  drivers/video/{ => fbdev}/aty/mach64_cursor.c      |    0
>  drivers/video/{ => fbdev}/aty/mach64_gx.c          |    0
>  drivers/video/{ => fbdev}/aty/radeon_accel.c       |    0
>  drivers/video/{ => fbdev}/aty/radeon_backlight.c   |    0
>  drivers/video/{ => fbdev}/aty/radeon_base.c        |    0
>  drivers/video/{ => fbdev}/aty/radeon_i2c.c         |    0
>  drivers/video/{ => fbdev}/aty/radeon_monitor.c     |    0
>  drivers/video/{ => fbdev}/aty/radeon_pm.c          |    0
>  drivers/video/{ => fbdev}/aty/radeonfb.h           |    0
>  drivers/video/{ => fbdev}/au1100fb.c               |    0
>  drivers/video/{ => fbdev}/au1100fb.h               |    0
>  drivers/video/{ => fbdev}/au1200fb.c               |    0
>  drivers/video/{ => fbdev}/au1200fb.h               |    0
>  drivers/video/{ => fbdev}/auo_k1900fb.c            |    0
>  drivers/video/{ => fbdev}/auo_k1901fb.c            |    0
>  drivers/video/{ => fbdev}/auo_k190x.c              |    0
>  drivers/video/{ => fbdev}/auo_k190x.h              |    0
>  drivers/video/{ => fbdev}/bf537-lq035.c            |    0
>  drivers/video/{ => fbdev}/bf54x-lq043fb.c          |    0
>  drivers/video/{ => fbdev}/bfin-lq035q1-fb.c        |    0
>  drivers/video/{ => fbdev}/bfin-t350mcqb-fb.c       |    0
>  drivers/video/{ => fbdev}/bfin_adv7393fb.c         |    0
>  drivers/video/{ => fbdev}/bfin_adv7393fb.h         |    0
>  drivers/video/{ => fbdev}/broadsheetfb.c           |    0
>  drivers/video/{ => fbdev}/bt431.h                  |    0
>  drivers/video/{ => fbdev}/bt455.h                  |    0
>  drivers/video/{ => fbdev}/bw2.c                    |    0
>  drivers/video/{ => fbdev}/c2p.h                    |    0
>  drivers/video/{ => fbdev}/c2p_core.h               |    0
>  drivers/video/{ => fbdev}/c2p_iplan2.c             |    0
>  drivers/video/{ => fbdev}/c2p_planar.c             |    0
>  drivers/video/{ => fbdev}/carminefb.c              |    0
>  drivers/video/{ => fbdev}/carminefb.h              |    0
>  drivers/video/{ => fbdev}/carminefb_regs.h         |    0
>  drivers/video/{ => fbdev}/cg14.c                   |    0
>  drivers/video/{ => fbdev}/cg3.c                    |    0
>  drivers/video/{ => fbdev}/cg6.c                    |    0
>  drivers/video/{ => fbdev}/chipsfb.c                |    0
>  drivers/video/{ => fbdev}/cirrusfb.c               |    0
>  drivers/video/{ => fbdev}/clps711xfb.c             |    0
>  drivers/video/{ => fbdev}/cobalt_lcdfb.c           |    0
>  drivers/video/{ => fbdev}/controlfb.c              |    0
>  drivers/video/{ => fbdev}/controlfb.h              |    0
>  drivers/video/fbdev/core/Makefile                  |   16 +
>  drivers/video/{ => fbdev/core}/cfbcopyarea.c       |    0
>  drivers/video/{ => fbdev/core}/cfbfillrect.c       |    0
>  drivers/video/{ => fbdev/core}/cfbimgblt.c         |    0
>  drivers/video/{ => fbdev/core}/fb_ddc.c            |    2 +-
>  drivers/video/{ => fbdev/core}/fb_defio.c          |    0
>  drivers/video/{ => fbdev/core}/fb_draw.h           |    0
>  drivers/video/{ => fbdev/core}/fb_notify.c         |    0
>  drivers/video/{ => fbdev/core}/fb_sys_fops.c       |    0
>  drivers/video/{ => fbdev/core}/fbcmap.c            |    0
>  drivers/video/{ => fbdev/core}/fbcvt.c             |    0
>  drivers/video/{ => fbdev/core}/fbmem.c             |    0
>  drivers/video/{ => fbdev/core}/fbmon.c             |    2 +-
>  drivers/video/{ => fbdev/core}/fbsysfs.c           |    0
>  drivers/video/{ => fbdev/core}/modedb.c            |    0
>  drivers/video/{ => fbdev/core}/svgalib.c           |    0
>  drivers/video/{ => fbdev/core}/syscopyarea.c       |    0
>  drivers/video/{ => fbdev/core}/sysfillrect.c       |    0
>  drivers/video/{ => fbdev/core}/sysimgblt.c         |    0
>  drivers/video/{ => fbdev}/cyber2000fb.c            |    0
>  drivers/video/{ => fbdev}/cyber2000fb.h            |    0
>  drivers/video/{ => fbdev}/da8xx-fb.c               |    0
>  drivers/video/{ => fbdev}/dnfb.c                   |    0
>  drivers/video/{ => fbdev}/edid.h                   |    0
>  drivers/video/{ => fbdev}/efifb.c                  |    0
>  drivers/video/{ => fbdev}/ep93xx-fb.c              |    0
>  drivers/video/{ => fbdev}/exynos/Kconfig           |    0
>  drivers/video/{ => fbdev}/exynos/Makefile          |    0
>  drivers/video/{ => fbdev}/exynos/exynos_dp_core.c  |    0
>  drivers/video/{ => fbdev}/exynos/exynos_dp_core.h  |    0
>  drivers/video/{ => fbdev}/exynos/exynos_dp_reg.c   |    0
>  drivers/video/{ => fbdev}/exynos/exynos_dp_reg.h   |    0
>  drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi.c |    0
>  .../{ => fbdev}/exynos/exynos_mipi_dsi_common.c    |    0
>  .../{ => fbdev}/exynos/exynos_mipi_dsi_common.h    |    0
>  .../{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.c  |    0
>  .../{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.h  |    0
>  .../{ => fbdev}/exynos/exynos_mipi_dsi_regs.h      |    0
>  drivers/video/{ => fbdev}/exynos/s6e8ax0.c         |    0
>  drivers/video/{ => fbdev}/fb-puv3.c                |    0
>  drivers/video/{ => fbdev}/ffb.c                    |    0
>  drivers/video/{ => fbdev}/fm2fb.c                  |    0
>  drivers/video/{ => fbdev}/fsl-diu-fb.c             |    0
>  drivers/video/{ => fbdev}/g364fb.c                 |    0
>  drivers/video/{ => fbdev}/gbefb.c                  |    0
>  drivers/video/{ => fbdev}/geode/Kconfig            |    0
>  drivers/video/{ => fbdev}/geode/Makefile           |    0
>  drivers/video/{ => fbdev}/geode/display_gx.c       |    0
>  drivers/video/{ => fbdev}/geode/display_gx1.c      |    0
>  drivers/video/{ => fbdev}/geode/display_gx1.h      |    0
>  drivers/video/{ => fbdev}/geode/geodefb.h          |    0
>  drivers/video/{ => fbdev}/geode/gx1fb_core.c       |    0
>  drivers/video/{ => fbdev}/geode/gxfb.h             |    0
>  drivers/video/{ => fbdev}/geode/gxfb_core.c        |    0
>  drivers/video/{ => fbdev}/geode/lxfb.h             |    0
>  drivers/video/{ => fbdev}/geode/lxfb_core.c        |    0
>  drivers/video/{ => fbdev}/geode/lxfb_ops.c         |    0
>  drivers/video/{ => fbdev}/geode/suspend_gx.c       |    0
>  drivers/video/{ => fbdev}/geode/video_cs5530.c     |    0
>  drivers/video/{ => fbdev}/geode/video_cs5530.h     |    0
>  drivers/video/{ => fbdev}/geode/video_gx.c         |    0
>  drivers/video/{ => fbdev}/goldfishfb.c             |    0
>  drivers/video/{ => fbdev}/grvga.c                  |    0
>  drivers/video/{ => fbdev}/gxt4500.c                |    0
>  drivers/video/{ => fbdev}/hecubafb.c               |    0
>  drivers/video/{ => fbdev}/hgafb.c                  |    0
>  drivers/video/{ => fbdev}/hitfb.c                  |    0
>  drivers/video/{ => fbdev}/hpfb.c                   |    0
>  drivers/video/{ => fbdev}/hyperv_fb.c              |    0
>  drivers/video/{ => fbdev}/i740_reg.h               |    0
>  drivers/video/{ => fbdev}/i740fb.c                 |    0
>  drivers/video/{ => fbdev}/i810/Makefile            |    0
>  drivers/video/{ => fbdev}/i810/i810-i2c.c          |    0
>  drivers/video/{ => fbdev}/i810/i810.h              |    0
>  drivers/video/{ => fbdev}/i810/i810_accel.c        |    0
>  drivers/video/{ => fbdev}/i810/i810_dvt.c          |    0
>  drivers/video/{ => fbdev}/i810/i810_gtf.c          |    0
>  drivers/video/{ => fbdev}/i810/i810_main.c         |    0
>  drivers/video/{ => fbdev}/i810/i810_main.h         |    0
>  drivers/video/{ => fbdev}/i810/i810_regs.h         |    0
>  drivers/video/{ => fbdev}/igafb.c                  |    0
>  drivers/video/{ => fbdev}/imsttfb.c                |    0
>  drivers/video/{ => fbdev}/imxfb.c                  |    0
>  drivers/video/{ => fbdev}/intelfb/Makefile         |    0
>  drivers/video/{ => fbdev}/intelfb/intelfb.h        |    0
>  drivers/video/{ => fbdev}/intelfb/intelfb_i2c.c    |    0
>  drivers/video/{ => fbdev}/intelfb/intelfbdrv.c     |    0
>  drivers/video/{ => fbdev}/intelfb/intelfbhw.c      |    0
>  drivers/video/{ => fbdev}/intelfb/intelfbhw.h      |    0
>  drivers/video/{ => fbdev}/jz4740_fb.c              |    0
>  drivers/video/{ => fbdev}/kyro/Makefile            |    0
>  drivers/video/{ => fbdev}/kyro/STG4000InitDevice.c |    0
>  drivers/video/{ => fbdev}/kyro/STG4000Interface.h  |    0
>  .../video/{ => fbdev}/kyro/STG4000OverlayDevice.c  |    0
>  drivers/video/{ => fbdev}/kyro/STG4000Ramdac.c     |    0
>  drivers/video/{ => fbdev}/kyro/STG4000Reg.h        |    0
>  drivers/video/{ => fbdev}/kyro/STG4000VTG.c        |    0
>  drivers/video/{ => fbdev}/kyro/fbdev.c             |    0
>  drivers/video/{ => fbdev}/leo.c                    |    0
>  drivers/video/{ => fbdev}/macfb.c                  |    0
>  drivers/video/{ => fbdev}/macmodes.c               |    0
>  drivers/video/{ => fbdev}/macmodes.h               |    0
>  drivers/video/{ => fbdev}/matrox/Makefile          |    0
>  drivers/video/{ => fbdev}/matrox/g450_pll.c        |    0
>  drivers/video/{ => fbdev}/matrox/g450_pll.h        |    0
>  drivers/video/{ => fbdev}/matrox/i2c-matroxfb.c    |    0
>  .../video/{ => fbdev}/matrox/matroxfb_DAC1064.c    |    0
>  .../video/{ => fbdev}/matrox/matroxfb_DAC1064.h    |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.c |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.h |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_accel.c  |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_accel.h  |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_base.c   |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_base.h   |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.c  |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.h  |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_g450.c   |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_g450.h   |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_maven.c  |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_maven.h  |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_misc.c   |    0
>  drivers/video/{ => fbdev}/matrox/matroxfb_misc.h   |    0
>  drivers/video/{ => fbdev}/maxinefb.c               |    0
>  drivers/video/{ => fbdev}/mb862xx/Makefile         |    0
>  drivers/video/{ => fbdev}/mb862xx/mb862xx-i2c.c    |    0
>  drivers/video/{ => fbdev}/mb862xx/mb862xx_reg.h    |    0
>  drivers/video/{ => fbdev}/mb862xx/mb862xxfb.h      |    0
>  .../video/{ => fbdev}/mb862xx/mb862xxfb_accel.c    |    0
>  .../video/{ => fbdev}/mb862xx/mb862xxfb_accel.h    |    0
>  drivers/video/{ => fbdev}/mb862xx/mb862xxfbdrv.c   |    0
>  drivers/video/{ => fbdev}/mbx/Makefile             |    0
>  drivers/video/{ => fbdev}/mbx/mbxdebugfs.c         |    0
>  drivers/video/{ => fbdev}/mbx/mbxfb.c              |    0
>  drivers/video/{ => fbdev}/mbx/reg_bits.h           |    0
>  drivers/video/{ => fbdev}/mbx/regs.h               |    0
>  drivers/video/{ => fbdev}/metronomefb.c            |    0
>  drivers/video/{ => fbdev}/mmp/Kconfig              |    6 +-
>  drivers/video/{ => fbdev}/mmp/Makefile             |    0
>  drivers/video/{ => fbdev}/mmp/core.c               |    0
>  drivers/video/{ => fbdev}/mmp/fb/Kconfig           |    0
>  drivers/video/{ => fbdev}/mmp/fb/Makefile          |    0
>  drivers/video/{ => fbdev}/mmp/fb/mmpfb.c           |    0
>  drivers/video/{ => fbdev}/mmp/fb/mmpfb.h           |    0
>  drivers/video/{ => fbdev}/mmp/hw/Kconfig           |    0
>  drivers/video/{ => fbdev}/mmp/hw/Makefile          |    0
>  drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.c        |    0
>  drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.h        |    0
>  drivers/video/{ => fbdev}/mmp/hw/mmp_spi.c         |    0
>  drivers/video/{ => fbdev}/mmp/panel/Kconfig        |    0
>  drivers/video/{ => fbdev}/mmp/panel/Makefile       |    0
>  .../video/{ => fbdev}/mmp/panel/tpo_tj032md01bw.c  |    0
>  drivers/video/{ => fbdev}/msm/Makefile             |    0
>  drivers/video/{ => fbdev}/msm/mddi.c               |    0
>  drivers/video/{ => fbdev}/msm/mddi_client_dummy.c  |    0
>  .../video/{ => fbdev}/msm/mddi_client_nt35399.c    |    0
>  .../video/{ => fbdev}/msm/mddi_client_toshiba.c    |    0
>  drivers/video/{ => fbdev}/msm/mddi_hw.h            |    0
>  drivers/video/{ => fbdev}/msm/mdp.c                |    0
>  drivers/video/{ => fbdev}/msm/mdp_csc_table.h      |    0
>  drivers/video/{ => fbdev}/msm/mdp_hw.h             |    0
>  drivers/video/{ => fbdev}/msm/mdp_ppp.c            |    0
>  drivers/video/{ => fbdev}/msm/mdp_scale_tables.c   |    0
>  drivers/video/{ => fbdev}/msm/mdp_scale_tables.h   |    0
>  drivers/video/{ => fbdev}/msm/msm_fb.c             |    0
>  drivers/video/{ => fbdev}/mx3fb.c                  |    0
>  drivers/video/{ => fbdev}/mxsfb.c                  |    0
>  drivers/video/{ => fbdev}/n411.c                   |    0
>  drivers/video/{ => fbdev}/neofb.c                  |    0
>  drivers/video/{ => fbdev}/nuc900fb.c               |    0
>  drivers/video/{ => fbdev}/nuc900fb.h               |    0
>  drivers/video/{ => fbdev}/nvidia/Makefile          |    0
>  drivers/video/{ => fbdev}/nvidia/nv_accel.c        |    0
>  drivers/video/{ => fbdev}/nvidia/nv_backlight.c    |    0
>  drivers/video/{ => fbdev}/nvidia/nv_dma.h          |    0
>  drivers/video/{ => fbdev}/nvidia/nv_hw.c           |    0
>  drivers/video/{ => fbdev}/nvidia/nv_i2c.c          |    0
>  drivers/video/{ => fbdev}/nvidia/nv_local.h        |    0
>  drivers/video/{ => fbdev}/nvidia/nv_of.c           |    0
>  drivers/video/{ => fbdev}/nvidia/nv_proto.h        |    0
>  drivers/video/{ => fbdev}/nvidia/nv_setup.c        |    0
>  drivers/video/{ => fbdev}/nvidia/nv_type.h         |    0
>  drivers/video/{ => fbdev}/nvidia/nvidia.c          |    0
>  drivers/video/{ => fbdev}/ocfb.c                   |    0
>  drivers/video/{ => fbdev}/offb.c                   |    0
>  drivers/video/{ => fbdev}/omap/Kconfig             |    0
>  drivers/video/{ => fbdev}/omap/Makefile            |    0
>  drivers/video/{ => fbdev}/omap/hwa742.c            |    0
>  drivers/video/{ => fbdev}/omap/lcd_ams_delta.c     |    0
>  drivers/video/{ => fbdev}/omap/lcd_h3.c            |    0
>  drivers/video/{ => fbdev}/omap/lcd_htcherald.c     |    0
>  drivers/video/{ => fbdev}/omap/lcd_inn1510.c       |    0
>  drivers/video/{ => fbdev}/omap/lcd_inn1610.c       |    0
>  drivers/video/{ => fbdev}/omap/lcd_mipid.c         |    0
>  drivers/video/{ => fbdev}/omap/lcd_osk.c           |    0
>  drivers/video/{ => fbdev}/omap/lcd_palmte.c        |    0
>  drivers/video/{ => fbdev}/omap/lcd_palmtt.c        |    0
>  drivers/video/{ => fbdev}/omap/lcd_palmz71.c       |    0
>  drivers/video/{ => fbdev}/omap/lcdc.c              |    0
>  drivers/video/{ => fbdev}/omap/lcdc.h              |    0
>  drivers/video/{ => fbdev}/omap/omapfb.h            |    0
>  drivers/video/{ => fbdev}/omap/omapfb_main.c       |    0
>  drivers/video/{ => fbdev}/omap/sossi.c             |    0
>  drivers/video/fbdev/omap2/Kconfig                  |   10 +
>  drivers/video/{ => fbdev}/omap2/Makefile           |    0
>  .../video/{ => fbdev}/omap2/displays-new/Kconfig   |    0
>  .../video/{ => fbdev}/omap2/displays-new/Makefile  |    0
>  .../omap2/displays-new/connector-analog-tv.c       |    0
>  .../{ => fbdev}/omap2/displays-new/connector-dvi.c |    0
>  .../omap2/displays-new/connector-hdmi.c            |    0
>  .../omap2/displays-new/encoder-tfp410.c            |    0
>  .../omap2/displays-new/encoder-tpd12s015.c         |    0
>  .../{ => fbdev}/omap2/displays-new/panel-dpi.c     |    0
>  .../{ => fbdev}/omap2/displays-new/panel-dsi-cm.c  |    0
>  .../omap2/displays-new/panel-lgphilips-lb035q02.c  |    0
>  .../omap2/displays-new/panel-nec-nl8048hl11.c      |    0
>  .../omap2/displays-new/panel-sharp-ls037v7dw01.c   |    0
>  .../omap2/displays-new/panel-sony-acx565akm.c      |    0
>  .../omap2/displays-new/panel-tpo-td028ttec1.c      |    0
>  .../omap2/displays-new/panel-tpo-td043mtea1.c      |    0
>  drivers/video/{ => fbdev}/omap2/dss/Kconfig        |    0
>  drivers/video/{ => fbdev}/omap2/dss/Makefile       |    0
>  drivers/video/{ => fbdev}/omap2/dss/apply.c        |    0
>  drivers/video/{ => fbdev}/omap2/dss/core.c         |    0
>  drivers/video/{ => fbdev}/omap2/dss/dispc-compat.c |    0
>  drivers/video/{ => fbdev}/omap2/dss/dispc-compat.h |    0
>  drivers/video/{ => fbdev}/omap2/dss/dispc.c        |    0
>  drivers/video/{ => fbdev}/omap2/dss/dispc.h        |    0
>  drivers/video/{ => fbdev}/omap2/dss/dispc_coefs.c  |    0
>  .../video/{ => fbdev}/omap2/dss/display-sysfs.c    |    0
>  drivers/video/{ => fbdev}/omap2/dss/display.c      |    0
>  drivers/video/{ => fbdev}/omap2/dss/dpi.c          |    0
>  drivers/video/{ => fbdev}/omap2/dss/dsi.c          |    0
>  drivers/video/{ => fbdev}/omap2/dss/dss.c          |    0
>  drivers/video/{ => fbdev}/omap2/dss/dss.h          |    0
>  drivers/video/{ => fbdev}/omap2/dss/dss_features.c |    0
>  drivers/video/{ => fbdev}/omap2/dss/dss_features.h |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi.h         |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi4.c        |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.c   |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.h   |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi_common.c  |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi_phy.c     |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi_pll.c     |    0
>  drivers/video/{ => fbdev}/omap2/dss/hdmi_wp.c      |    0
>  .../video/{ => fbdev}/omap2/dss/manager-sysfs.c    |    0
>  drivers/video/{ => fbdev}/omap2/dss/manager.c      |    0
>  drivers/video/{ => fbdev}/omap2/dss/output.c       |    0
>  .../video/{ => fbdev}/omap2/dss/overlay-sysfs.c    |    0
>  drivers/video/{ => fbdev}/omap2/dss/overlay.c      |    0
>  drivers/video/{ => fbdev}/omap2/dss/rfbi.c         |    0
>  drivers/video/{ => fbdev}/omap2/dss/sdi.c          |    0
>  drivers/video/{ => fbdev}/omap2/dss/venc.c         |    0
>  drivers/video/{ => fbdev}/omap2/dss/venc_panel.c   |    0
>  drivers/video/{ => fbdev}/omap2/omapfb/Kconfig     |    0
>  drivers/video/{ => fbdev}/omap2/omapfb/Makefile    |    0
>  .../video/{ => fbdev}/omap2/omapfb/omapfb-ioctl.c  |    0
>  .../video/{ => fbdev}/omap2/omapfb/omapfb-main.c   |    0
>  .../video/{ => fbdev}/omap2/omapfb/omapfb-sysfs.c  |    0
>  drivers/video/{ => fbdev}/omap2/omapfb/omapfb.h    |    0
>  drivers/video/{ => fbdev}/omap2/vrfb.c             |    0
>  drivers/video/{ => fbdev}/p9100.c                  |    0
>  drivers/video/{ => fbdev}/platinumfb.c             |    0
>  drivers/video/{ => fbdev}/platinumfb.h             |    0
>  drivers/video/{ => fbdev}/pm2fb.c                  |    0
>  drivers/video/{ => fbdev}/pm3fb.c                  |    0
>  drivers/video/{ => fbdev}/pmag-aa-fb.c             |    0
>  drivers/video/{ => fbdev}/pmag-ba-fb.c             |    0
>  drivers/video/{ => fbdev}/pmagb-b-fb.c             |    0
>  drivers/video/{ => fbdev}/ps3fb.c                  |    0
>  drivers/video/{ => fbdev}/pvr2fb.c                 |    0
>  drivers/video/{ => fbdev}/pxa168fb.c               |    0
>  drivers/video/{ => fbdev}/pxa168fb.h               |    0
>  drivers/video/{ => fbdev}/pxa3xx-gcu.c             |    0
>  drivers/video/{ => fbdev}/pxa3xx-gcu.h             |    0
>  drivers/video/{ => fbdev}/pxafb.c                  |    0
>  drivers/video/{ => fbdev}/pxafb.h                  |    0
>  drivers/video/{ => fbdev}/q40fb.c                  |    0
>  drivers/video/{ => fbdev}/riva/Makefile            |    0
>  drivers/video/{ => fbdev}/riva/fbdev.c             |    0
>  drivers/video/{ => fbdev}/riva/nv_driver.c         |    0
>  drivers/video/{ => fbdev}/riva/nv_type.h           |    0
>  drivers/video/{ => fbdev}/riva/nvreg.h             |    0
>  drivers/video/{ => fbdev}/riva/riva_hw.c           |    0
>  drivers/video/{ => fbdev}/riva/riva_hw.h           |    0
>  drivers/video/{ => fbdev}/riva/riva_tbl.h          |    0
>  drivers/video/{ => fbdev}/riva/rivafb-i2c.c        |    0
>  drivers/video/{ => fbdev}/riva/rivafb.h            |    0
>  drivers/video/{ => fbdev}/s1d13xxxfb.c             |    0
>  drivers/video/{ => fbdev}/s3c-fb.c                 |    0
>  drivers/video/{ => fbdev}/s3c2410fb.c              |    0
>  drivers/video/{ => fbdev}/s3c2410fb.h              |    0
>  drivers/video/{ => fbdev}/s3fb.c                   |    0
>  drivers/video/{ => fbdev}/sa1100fb.c               |    0
>  drivers/video/{ => fbdev}/sa1100fb.h               |    0
>  drivers/video/{ => fbdev}/savage/Makefile          |    0
>  drivers/video/{ => fbdev}/savage/savagefb-i2c.c    |    0
>  drivers/video/{ => fbdev}/savage/savagefb.h        |    0
>  drivers/video/{ => fbdev}/savage/savagefb_accel.c  |    0
>  drivers/video/{ => fbdev}/savage/savagefb_driver.c |    0
>  drivers/video/{ => fbdev}/sbuslib.c                |    0
>  drivers/video/{ => fbdev}/sbuslib.h                |    0
>  drivers/video/{ => fbdev}/sgivwfb.c                |    0
>  drivers/video/{ => fbdev}/sh7760fb.c               |    0
>  drivers/video/{ => fbdev}/sh_mipi_dsi.c            |    0
>  drivers/video/{ => fbdev}/sh_mobile_hdmi.c         |    0
>  drivers/video/{ => fbdev}/sh_mobile_lcdcfb.c       |    0
>  drivers/video/{ => fbdev}/sh_mobile_lcdcfb.h       |    0
>  drivers/video/{ => fbdev}/sh_mobile_meram.c        |    0
>  drivers/video/{ => fbdev}/simplefb.c               |    0
>  drivers/video/{ => fbdev}/sis/300vtbl.h            |    0
>  drivers/video/{ => fbdev}/sis/310vtbl.h            |    0
>  drivers/video/{ => fbdev}/sis/Makefile             |    0
>  drivers/video/{ => fbdev}/sis/init.c               |    0
>  drivers/video/{ => fbdev}/sis/init.h               |    0
>  drivers/video/{ => fbdev}/sis/init301.c            |    0
>  drivers/video/{ => fbdev}/sis/init301.h            |    0
>  drivers/video/{ => fbdev}/sis/initdef.h            |    0
>  drivers/video/{ => fbdev}/sis/initextlfb.c         |    0
>  drivers/video/{ => fbdev}/sis/oem300.h             |    0
>  drivers/video/{ => fbdev}/sis/oem310.h             |    0
>  drivers/video/{ => fbdev}/sis/sis.h                |    0
>  drivers/video/{ => fbdev}/sis/sis_accel.c          |    0
>  drivers/video/{ => fbdev}/sis/sis_accel.h          |    0
>  drivers/video/{ => fbdev}/sis/sis_main.c           |    0
>  drivers/video/{ => fbdev}/sis/sis_main.h           |    0
>  drivers/video/{ => fbdev}/sis/vgatypes.h           |    0
>  drivers/video/{ => fbdev}/sis/vstruct.h            |    0
>  drivers/video/{ => fbdev}/skeletonfb.c             |    0
>  drivers/video/{ => fbdev}/sm501fb.c                |    0
>  drivers/video/{ => fbdev}/smscufx.c                |    0
>  drivers/video/{ => fbdev}/ssd1307fb.c              |    0
>  drivers/video/{ => fbdev}/sstfb.c                  |    0
>  drivers/video/{ => fbdev}/sticore.h                |    0
>  drivers/video/{ => fbdev}/stifb.c                  |    0
>  drivers/video/{ => fbdev}/sunxvr1000.c             |    0
>  drivers/video/{ => fbdev}/sunxvr2500.c             |    0
>  drivers/video/{ => fbdev}/sunxvr500.c              |    0
>  drivers/video/{ => fbdev}/tcx.c                    |    0
>  drivers/video/{ => fbdev}/tdfxfb.c                 |    0
>  drivers/video/{ => fbdev}/tgafb.c                  |    0
>  drivers/video/{ => fbdev}/tmiofb.c                 |    0
>  drivers/video/{ => fbdev}/tridentfb.c              |    0
>  drivers/video/{ => fbdev}/udlfb.c                  |    0
>  drivers/video/{ => fbdev}/uvesafb.c                |    0
>  drivers/video/{ => fbdev}/valkyriefb.c             |    0
>  drivers/video/{ => fbdev}/valkyriefb.h             |    0
>  drivers/video/{ => fbdev}/vermilion/Makefile       |    0
>  drivers/video/{ => fbdev}/vermilion/cr_pll.c       |    0
>  drivers/video/{ => fbdev}/vermilion/vermilion.c    |    0
>  drivers/video/{ => fbdev}/vermilion/vermilion.h    |    0
>  drivers/video/{ => fbdev}/vesafb.c                 |    0
>  drivers/video/{ => fbdev}/vfb.c                    |    0
>  drivers/video/{ => fbdev}/vga16fb.c                |    0
>  drivers/video/{ => fbdev}/via/Makefile             |    0
>  drivers/video/{ => fbdev}/via/accel.c              |    0
>  drivers/video/{ => fbdev}/via/accel.h              |    0
>  drivers/video/{ => fbdev}/via/chip.h               |    0
>  drivers/video/{ => fbdev}/via/debug.h              |    0
>  drivers/video/{ => fbdev}/via/dvi.c                |    0
>  drivers/video/{ => fbdev}/via/dvi.h                |    0
>  drivers/video/{ => fbdev}/via/global.c             |    0
>  drivers/video/{ => fbdev}/via/global.h             |    0
>  drivers/video/{ => fbdev}/via/hw.c                 |    0
>  drivers/video/{ => fbdev}/via/hw.h                 |    0
>  drivers/video/{ => fbdev}/via/ioctl.c              |    0
>  drivers/video/{ => fbdev}/via/ioctl.h              |    0
>  drivers/video/{ => fbdev}/via/lcd.c                |    0
>  drivers/video/{ => fbdev}/via/lcd.h                |    0
>  drivers/video/{ => fbdev}/via/share.h              |    0
>  drivers/video/{ => fbdev}/via/tblDPASetting.c      |    0
>  drivers/video/{ => fbdev}/via/tblDPASetting.h      |    0
>  drivers/video/{ => fbdev}/via/via-core.c           |    0
>  drivers/video/{ => fbdev}/via/via-gpio.c           |    0
>  drivers/video/{ => fbdev}/via/via_aux.c            |    0
>  drivers/video/{ => fbdev}/via/via_aux.h            |    0
>  drivers/video/{ => fbdev}/via/via_aux_ch7301.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_edid.c       |    0
>  drivers/video/{ => fbdev}/via/via_aux_sii164.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_vt1621.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_vt1622.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_vt1625.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_vt1631.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_vt1632.c     |    0
>  drivers/video/{ => fbdev}/via/via_aux_vt1636.c     |    0
>  drivers/video/{ => fbdev}/via/via_clock.c          |    0
>  drivers/video/{ => fbdev}/via/via_clock.h          |    0
>  drivers/video/{ => fbdev}/via/via_i2c.c            |    0
>  drivers/video/{ => fbdev}/via/via_modesetting.c    |    0
>  drivers/video/{ => fbdev}/via/via_modesetting.h    |    0
>  drivers/video/{ => fbdev}/via/via_utility.c        |    0
>  drivers/video/{ => fbdev}/via/via_utility.h        |    0
>  drivers/video/{ => fbdev}/via/viafbdev.c           |    0
>  drivers/video/{ => fbdev}/via/viafbdev.h           |    0
>  drivers/video/{ => fbdev}/via/viamode.c            |    0
>  drivers/video/{ => fbdev}/via/viamode.h            |    0
>  drivers/video/{ => fbdev}/via/vt1636.c             |    0
>  drivers/video/{ => fbdev}/via/vt1636.h             |    0
>  drivers/video/{ => fbdev}/vt8500lcdfb.c            |    0
>  drivers/video/{ => fbdev}/vt8500lcdfb.h            |    0
>  drivers/video/{ => fbdev}/vt8623fb.c               |    0
>  drivers/video/{ => fbdev}/w100fb.c                 |    0
>  drivers/video/{ => fbdev}/w100fb.h                 |    0
>  drivers/video/{ => fbdev}/wm8505fb.c               |    0
>  drivers/video/{ => fbdev}/wm8505fb_regs.h          |    0
>  drivers/video/{ => fbdev}/wmt_ge_rops.c            |    2 +-
>  drivers/video/{ => fbdev}/wmt_ge_rops.h            |    0
>  drivers/video/{ => fbdev}/xen-fbfront.c            |    0
>  drivers/video/{ => fbdev}/xilinxfb.c               |    0
>  drivers/video/omap2/Kconfig                        |   10 -
>  480 files changed, 2679 insertions(+), 2662 deletions(-)
>  rename drivers/video/{ => fbdev}/68328fb.c (100%)
>  create mode 100644 drivers/video/fbdev/Kconfig
>  create mode 100644 drivers/video/fbdev/Makefile
>  rename drivers/video/{ => fbdev}/acornfb.c (100%)
>  rename drivers/video/{ => fbdev}/acornfb.h (100%)
>  rename drivers/video/{ => fbdev}/amba-clcd.c (100%)
>  rename drivers/video/{ => fbdev}/amifb.c (100%)
>  rename drivers/video/{ => fbdev}/arcfb.c (100%)
>  rename drivers/video/{ => fbdev}/arkfb.c (100%)
>  rename drivers/video/{ => fbdev}/asiliantfb.c (100%)
>  rename drivers/video/{ => fbdev}/atafb.c (100%)
>  rename drivers/video/{ => fbdev}/atafb.h (100%)
>  rename drivers/video/{ => fbdev}/atafb_iplan2p2.c (100%)
>  rename drivers/video/{ => fbdev}/atafb_iplan2p4.c (100%)
>  rename drivers/video/{ => fbdev}/atafb_iplan2p8.c (100%)
>  rename drivers/video/{ => fbdev}/atafb_mfb.c (100%)
>  rename drivers/video/{ => fbdev}/atafb_utils.h (100%)
>  rename drivers/video/{ => fbdev}/atmel_lcdfb.c (100%)
>  rename drivers/video/{ => fbdev}/aty/Makefile (100%)
>  rename drivers/video/{ => fbdev}/aty/ati_ids.h (100%)
>  rename drivers/video/{ => fbdev}/aty/aty128fb.c (100%)
>  rename drivers/video/{ => fbdev}/aty/atyfb.h (100%)
>  rename drivers/video/{ => fbdev}/aty/atyfb_base.c (100%)
>  rename drivers/video/{ => fbdev}/aty/mach64_accel.c (100%)
>  rename drivers/video/{ => fbdev}/aty/mach64_ct.c (100%)
>  rename drivers/video/{ => fbdev}/aty/mach64_cursor.c (100%)
>  rename drivers/video/{ => fbdev}/aty/mach64_gx.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeon_accel.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeon_backlight.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeon_base.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeon_i2c.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeon_monitor.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeon_pm.c (100%)
>  rename drivers/video/{ => fbdev}/aty/radeonfb.h (100%)
>  rename drivers/video/{ => fbdev}/au1100fb.c (100%)
>  rename drivers/video/{ => fbdev}/au1100fb.h (100%)
>  rename drivers/video/{ => fbdev}/au1200fb.c (100%)
>  rename drivers/video/{ => fbdev}/au1200fb.h (100%)
>  rename drivers/video/{ => fbdev}/auo_k1900fb.c (100%)
>  rename drivers/video/{ => fbdev}/auo_k1901fb.c (100%)
>  rename drivers/video/{ => fbdev}/auo_k190x.c (100%)
>  rename drivers/video/{ => fbdev}/auo_k190x.h (100%)
>  rename drivers/video/{ => fbdev}/bf537-lq035.c (100%)
>  rename drivers/video/{ => fbdev}/bf54x-lq043fb.c (100%)
>  rename drivers/video/{ => fbdev}/bfin-lq035q1-fb.c (100%)
>  rename drivers/video/{ => fbdev}/bfin-t350mcqb-fb.c (100%)
>  rename drivers/video/{ => fbdev}/bfin_adv7393fb.c (100%)
>  rename drivers/video/{ => fbdev}/bfin_adv7393fb.h (100%)
>  rename drivers/video/{ => fbdev}/broadsheetfb.c (100%)
>  rename drivers/video/{ => fbdev}/bt431.h (100%)
>  rename drivers/video/{ => fbdev}/bt455.h (100%)
>  rename drivers/video/{ => fbdev}/bw2.c (100%)
>  rename drivers/video/{ => fbdev}/c2p.h (100%)
>  rename drivers/video/{ => fbdev}/c2p_core.h (100%)
>  rename drivers/video/{ => fbdev}/c2p_iplan2.c (100%)
>  rename drivers/video/{ => fbdev}/c2p_planar.c (100%)
>  rename drivers/video/{ => fbdev}/carminefb.c (100%)
>  rename drivers/video/{ => fbdev}/carminefb.h (100%)
>  rename drivers/video/{ => fbdev}/carminefb_regs.h (100%)
>  rename drivers/video/{ => fbdev}/cg14.c (100%)
>  rename drivers/video/{ => fbdev}/cg3.c (100%)
>  rename drivers/video/{ => fbdev}/cg6.c (100%)
>  rename drivers/video/{ => fbdev}/chipsfb.c (100%)
>  rename drivers/video/{ => fbdev}/cirrusfb.c (100%)
>  rename drivers/video/{ => fbdev}/clps711xfb.c (100%)
>  rename drivers/video/{ => fbdev}/cobalt_lcdfb.c (100%)
>  rename drivers/video/{ => fbdev}/controlfb.c (100%)
>  rename drivers/video/{ => fbdev}/controlfb.h (100%)
>  create mode 100644 drivers/video/fbdev/core/Makefile
>  rename drivers/video/{ => fbdev/core}/cfbcopyarea.c (100%)
>  rename drivers/video/{ => fbdev/core}/cfbfillrect.c (100%)
>  rename drivers/video/{ => fbdev/core}/cfbimgblt.c (100%)
>  rename drivers/video/{ => fbdev/core}/fb_ddc.c (99%)
>  rename drivers/video/{ => fbdev/core}/fb_defio.c (100%)
>  rename drivers/video/{ => fbdev/core}/fb_draw.h (100%)
>  rename drivers/video/{ => fbdev/core}/fb_notify.c (100%)
>  rename drivers/video/{ => fbdev/core}/fb_sys_fops.c (100%)
>  rename drivers/video/{ => fbdev/core}/fbcmap.c (100%)
>  rename drivers/video/{ => fbdev/core}/fbcvt.c (100%)
>  rename drivers/video/{ => fbdev/core}/fbmem.c (100%)
>  rename drivers/video/{ => fbdev/core}/fbmon.c (99%)
>  rename drivers/video/{ => fbdev/core}/fbsysfs.c (100%)
>  rename drivers/video/{ => fbdev/core}/modedb.c (100%)
>  rename drivers/video/{ => fbdev/core}/svgalib.c (100%)
>  rename drivers/video/{ => fbdev/core}/syscopyarea.c (100%)
>  rename drivers/video/{ => fbdev/core}/sysfillrect.c (100%)
>  rename drivers/video/{ => fbdev/core}/sysimgblt.c (100%)
>  rename drivers/video/{ => fbdev}/cyber2000fb.c (100%)
>  rename drivers/video/{ => fbdev}/cyber2000fb.h (100%)
>  rename drivers/video/{ => fbdev}/da8xx-fb.c (100%)
>  rename drivers/video/{ => fbdev}/dnfb.c (100%)
>  rename drivers/video/{ => fbdev}/edid.h (100%)
>  rename drivers/video/{ => fbdev}/efifb.c (100%)
>  rename drivers/video/{ => fbdev}/ep93xx-fb.c (100%)
>  rename drivers/video/{ => fbdev}/exynos/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/exynos/Makefile (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_dp_core.c (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_dp_core.h (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_dp_reg.c (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_dp_reg.h (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi.c (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_common.c (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_common.h (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.c (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.h (100%)
>  rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_regs.h (100%)
>  rename drivers/video/{ => fbdev}/exynos/s6e8ax0.c (100%)
>  rename drivers/video/{ => fbdev}/fb-puv3.c (100%)
>  rename drivers/video/{ => fbdev}/ffb.c (100%)
>  rename drivers/video/{ => fbdev}/fm2fb.c (100%)
>  rename drivers/video/{ => fbdev}/fsl-diu-fb.c (100%)
>  rename drivers/video/{ => fbdev}/g364fb.c (100%)
>  rename drivers/video/{ => fbdev}/gbefb.c (100%)
>  rename drivers/video/{ => fbdev}/geode/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/geode/Makefile (100%)
>  rename drivers/video/{ => fbdev}/geode/display_gx.c (100%)
>  rename drivers/video/{ => fbdev}/geode/display_gx1.c (100%)
>  rename drivers/video/{ => fbdev}/geode/display_gx1.h (100%)
>  rename drivers/video/{ => fbdev}/geode/geodefb.h (100%)
>  rename drivers/video/{ => fbdev}/geode/gx1fb_core.c (100%)
>  rename drivers/video/{ => fbdev}/geode/gxfb.h (100%)
>  rename drivers/video/{ => fbdev}/geode/gxfb_core.c (100%)
>  rename drivers/video/{ => fbdev}/geode/lxfb.h (100%)
>  rename drivers/video/{ => fbdev}/geode/lxfb_core.c (100%)
>  rename drivers/video/{ => fbdev}/geode/lxfb_ops.c (100%)
>  rename drivers/video/{ => fbdev}/geode/suspend_gx.c (100%)
>  rename drivers/video/{ => fbdev}/geode/video_cs5530.c (100%)
>  rename drivers/video/{ => fbdev}/geode/video_cs5530.h (100%)
>  rename drivers/video/{ => fbdev}/geode/video_gx.c (100%)
>  rename drivers/video/{ => fbdev}/goldfishfb.c (100%)
>  rename drivers/video/{ => fbdev}/grvga.c (100%)
>  rename drivers/video/{ => fbdev}/gxt4500.c (100%)
>  rename drivers/video/{ => fbdev}/hecubafb.c (100%)
>  rename drivers/video/{ => fbdev}/hgafb.c (100%)
>  rename drivers/video/{ => fbdev}/hitfb.c (100%)
>  rename drivers/video/{ => fbdev}/hpfb.c (100%)
>  rename drivers/video/{ => fbdev}/hyperv_fb.c (100%)
>  rename drivers/video/{ => fbdev}/i740_reg.h (100%)
>  rename drivers/video/{ => fbdev}/i740fb.c (100%)
>  rename drivers/video/{ => fbdev}/i810/Makefile (100%)
>  rename drivers/video/{ => fbdev}/i810/i810-i2c.c (100%)
>  rename drivers/video/{ => fbdev}/i810/i810.h (100%)
>  rename drivers/video/{ => fbdev}/i810/i810_accel.c (100%)
>  rename drivers/video/{ => fbdev}/i810/i810_dvt.c (100%)
>  rename drivers/video/{ => fbdev}/i810/i810_gtf.c (100%)
>  rename drivers/video/{ => fbdev}/i810/i810_main.c (100%)
>  rename drivers/video/{ => fbdev}/i810/i810_main.h (100%)
>  rename drivers/video/{ => fbdev}/i810/i810_regs.h (100%)
>  rename drivers/video/{ => fbdev}/igafb.c (100%)
>  rename drivers/video/{ => fbdev}/imsttfb.c (100%)
>  rename drivers/video/{ => fbdev}/imxfb.c (100%)
>  rename drivers/video/{ => fbdev}/intelfb/Makefile (100%)
>  rename drivers/video/{ => fbdev}/intelfb/intelfb.h (100%)
>  rename drivers/video/{ => fbdev}/intelfb/intelfb_i2c.c (100%)
>  rename drivers/video/{ => fbdev}/intelfb/intelfbdrv.c (100%)
>  rename drivers/video/{ => fbdev}/intelfb/intelfbhw.c (100%)
>  rename drivers/video/{ => fbdev}/intelfb/intelfbhw.h (100%)
>  rename drivers/video/{ => fbdev}/jz4740_fb.c (100%)
>  rename drivers/video/{ => fbdev}/kyro/Makefile (100%)
>  rename drivers/video/{ => fbdev}/kyro/STG4000InitDevice.c (100%)
>  rename drivers/video/{ => fbdev}/kyro/STG4000Interface.h (100%)
>  rename drivers/video/{ => fbdev}/kyro/STG4000OverlayDevice.c (100%)
>  rename drivers/video/{ => fbdev}/kyro/STG4000Ramdac.c (100%)
>  rename drivers/video/{ => fbdev}/kyro/STG4000Reg.h (100%)
>  rename drivers/video/{ => fbdev}/kyro/STG4000VTG.c (100%)
>  rename drivers/video/{ => fbdev}/kyro/fbdev.c (100%)
>  rename drivers/video/{ => fbdev}/leo.c (100%)
>  rename drivers/video/{ => fbdev}/macfb.c (100%)
>  rename drivers/video/{ => fbdev}/macmodes.c (100%)
>  rename drivers/video/{ => fbdev}/macmodes.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/Makefile (100%)
>  rename drivers/video/{ => fbdev}/matrox/g450_pll.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/g450_pll.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/i2c-matroxfb.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_DAC1064.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_DAC1064.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_accel.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_accel.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_base.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_base.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_g450.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_g450.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_maven.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_maven.h (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_misc.c (100%)
>  rename drivers/video/{ => fbdev}/matrox/matroxfb_misc.h (100%)
>  rename drivers/video/{ => fbdev}/maxinefb.c (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/Makefile (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/mb862xx-i2c.c (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/mb862xx_reg.h (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/mb862xxfb.h (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/mb862xxfb_accel.c (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/mb862xxfb_accel.h (100%)
>  rename drivers/video/{ => fbdev}/mb862xx/mb862xxfbdrv.c (100%)
>  rename drivers/video/{ => fbdev}/mbx/Makefile (100%)
>  rename drivers/video/{ => fbdev}/mbx/mbxdebugfs.c (100%)
>  rename drivers/video/{ => fbdev}/mbx/mbxfb.c (100%)
>  rename drivers/video/{ => fbdev}/mbx/reg_bits.h (100%)
>  rename drivers/video/{ => fbdev}/mbx/regs.h (100%)
>  rename drivers/video/{ => fbdev}/metronomefb.c (100%)
>  rename drivers/video/{ => fbdev}/mmp/Kconfig (61%)
>  rename drivers/video/{ => fbdev}/mmp/Makefile (100%)
>  rename drivers/video/{ => fbdev}/mmp/core.c (100%)
>  rename drivers/video/{ => fbdev}/mmp/fb/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/mmp/fb/Makefile (100%)
>  rename drivers/video/{ => fbdev}/mmp/fb/mmpfb.c (100%)
>  rename drivers/video/{ => fbdev}/mmp/fb/mmpfb.h (100%)
>  rename drivers/video/{ => fbdev}/mmp/hw/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/mmp/hw/Makefile (100%)
>  rename drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.c (100%)
>  rename drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.h (100%)
>  rename drivers/video/{ => fbdev}/mmp/hw/mmp_spi.c (100%)
>  rename drivers/video/{ => fbdev}/mmp/panel/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/mmp/panel/Makefile (100%)
>  rename drivers/video/{ => fbdev}/mmp/panel/tpo_tj032md01bw.c (100%)
>  rename drivers/video/{ => fbdev}/msm/Makefile (100%)
>  rename drivers/video/{ => fbdev}/msm/mddi.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mddi_client_dummy.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mddi_client_nt35399.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mddi_client_toshiba.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mddi_hw.h (100%)
>  rename drivers/video/{ => fbdev}/msm/mdp.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mdp_csc_table.h (100%)
>  rename drivers/video/{ => fbdev}/msm/mdp_hw.h (100%)
>  rename drivers/video/{ => fbdev}/msm/mdp_ppp.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mdp_scale_tables.c (100%)
>  rename drivers/video/{ => fbdev}/msm/mdp_scale_tables.h (100%)
>  rename drivers/video/{ => fbdev}/msm/msm_fb.c (100%)
>  rename drivers/video/{ => fbdev}/mx3fb.c (100%)
>  rename drivers/video/{ => fbdev}/mxsfb.c (100%)
>  rename drivers/video/{ => fbdev}/n411.c (100%)
>  rename drivers/video/{ => fbdev}/neofb.c (100%)
>  rename drivers/video/{ => fbdev}/nuc900fb.c (100%)
>  rename drivers/video/{ => fbdev}/nuc900fb.h (100%)
>  rename drivers/video/{ => fbdev}/nvidia/Makefile (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_accel.c (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_backlight.c (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_dma.h (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_hw.c (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_i2c.c (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_local.h (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_of.c (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_proto.h (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_setup.c (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nv_type.h (100%)
>  rename drivers/video/{ => fbdev}/nvidia/nvidia.c (100%)
>  rename drivers/video/{ => fbdev}/ocfb.c (100%)
>  rename drivers/video/{ => fbdev}/offb.c (100%)
>  rename drivers/video/{ => fbdev}/omap/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/omap/Makefile (100%)
>  rename drivers/video/{ => fbdev}/omap/hwa742.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_ams_delta.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_h3.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_htcherald.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_inn1510.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_inn1610.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_mipid.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_osk.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_palmte.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_palmtt.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcd_palmz71.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcdc.c (100%)
>  rename drivers/video/{ => fbdev}/omap/lcdc.h (100%)
>  rename drivers/video/{ => fbdev}/omap/omapfb.h (100%)
>  rename drivers/video/{ => fbdev}/omap/omapfb_main.c (100%)
>  rename drivers/video/{ => fbdev}/omap/sossi.c (100%)
>  create mode 100644 drivers/video/fbdev/omap2/Kconfig
>  rename drivers/video/{ => fbdev}/omap2/Makefile (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/Makefile (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/connector-analog-tv.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/connector-dvi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/connector-hdmi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/encoder-tfp410.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/encoder-tpd12s015.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-dpi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-dsi-cm.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-lgphilips-lb035q02.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-nec-nl8048hl11.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-sharp-ls037v7dw01.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-sony-acx565akm.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-tpo-td028ttec1.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/displays-new/panel-tpo-td043mtea1.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/Makefile (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/apply.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/core.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dispc-compat.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dispc-compat.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dispc.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dispc.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dispc_coefs.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/display-sysfs.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/display.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dpi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dsi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dss.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dss.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dss_features.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/dss_features.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi4.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi_common.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi_phy.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi_pll.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/hdmi_wp.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/manager-sysfs.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/manager.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/output.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/overlay-sysfs.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/overlay.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/rfbi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/sdi.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/venc.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/dss/venc_panel.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/omapfb/Kconfig (100%)
>  rename drivers/video/{ => fbdev}/omap2/omapfb/Makefile (100%)
>  rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb-ioctl.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb-main.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb-sysfs.c (100%)
>  rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb.h (100%)
>  rename drivers/video/{ => fbdev}/omap2/vrfb.c (100%)
>  rename drivers/video/{ => fbdev}/p9100.c (100%)
>  rename drivers/video/{ => fbdev}/platinumfb.c (100%)
>  rename drivers/video/{ => fbdev}/platinumfb.h (100%)
>  rename drivers/video/{ => fbdev}/pm2fb.c (100%)
>  rename drivers/video/{ => fbdev}/pm3fb.c (100%)
>  rename drivers/video/{ => fbdev}/pmag-aa-fb.c (100%)
>  rename drivers/video/{ => fbdev}/pmag-ba-fb.c (100%)
>  rename drivers/video/{ => fbdev}/pmagb-b-fb.c (100%)
>  rename drivers/video/{ => fbdev}/ps3fb.c (100%)
>  rename drivers/video/{ => fbdev}/pvr2fb.c (100%)
>  rename drivers/video/{ => fbdev}/pxa168fb.c (100%)
>  rename drivers/video/{ => fbdev}/pxa168fb.h (100%)
>  rename drivers/video/{ => fbdev}/pxa3xx-gcu.c (100%)
>  rename drivers/video/{ => fbdev}/pxa3xx-gcu.h (100%)
>  rename drivers/video/{ => fbdev}/pxafb.c (100%)
>  rename drivers/video/{ => fbdev}/pxafb.h (100%)
>  rename drivers/video/{ => fbdev}/q40fb.c (100%)
>  rename drivers/video/{ => fbdev}/riva/Makefile (100%)
>  rename drivers/video/{ => fbdev}/riva/fbdev.c (100%)
>  rename drivers/video/{ => fbdev}/riva/nv_driver.c (100%)
>  rename drivers/video/{ => fbdev}/riva/nv_type.h (100%)
>  rename drivers/video/{ => fbdev}/riva/nvreg.h (100%)
>  rename drivers/video/{ => fbdev}/riva/riva_hw.c (100%)
>  rename drivers/video/{ => fbdev}/riva/riva_hw.h (100%)
>  rename drivers/video/{ => fbdev}/riva/riva_tbl.h (100%)
>  rename drivers/video/{ => fbdev}/riva/rivafb-i2c.c (100%)
>  rename drivers/video/{ => fbdev}/riva/rivafb.h (100%)
>  rename drivers/video/{ => fbdev}/s1d13xxxfb.c (100%)
>  rename drivers/video/{ => fbdev}/s3c-fb.c (100%)
>  rename drivers/video/{ => fbdev}/s3c2410fb.c (100%)
>  rename drivers/video/{ => fbdev}/s3c2410fb.h (100%)
>  rename drivers/video/{ => fbdev}/s3fb.c (100%)
>  rename drivers/video/{ => fbdev}/sa1100fb.c (100%)
>  rename drivers/video/{ => fbdev}/sa1100fb.h (100%)
>  rename drivers/video/{ => fbdev}/savage/Makefile (100%)
>  rename drivers/video/{ => fbdev}/savage/savagefb-i2c.c (100%)
>  rename drivers/video/{ => fbdev}/savage/savagefb.h (100%)
>  rename drivers/video/{ => fbdev}/savage/savagefb_accel.c (100%)
>  rename drivers/video/{ => fbdev}/savage/savagefb_driver.c (100%)
>  rename drivers/video/{ => fbdev}/sbuslib.c (100%)
>  rename drivers/video/{ => fbdev}/sbuslib.h (100%)
>  rename drivers/video/{ => fbdev}/sgivwfb.c (100%)
>  rename drivers/video/{ => fbdev}/sh7760fb.c (100%)
>  rename drivers/video/{ => fbdev}/sh_mipi_dsi.c (100%)
>  rename drivers/video/{ => fbdev}/sh_mobile_hdmi.c (100%)
>  rename drivers/video/{ => fbdev}/sh_mobile_lcdcfb.c (100%)
>  rename drivers/video/{ => fbdev}/sh_mobile_lcdcfb.h (100%)
>  rename drivers/video/{ => fbdev}/sh_mobile_meram.c (100%)
>  rename drivers/video/{ => fbdev}/simplefb.c (100%)
>  rename drivers/video/{ => fbdev}/sis/300vtbl.h (100%)
>  rename drivers/video/{ => fbdev}/sis/310vtbl.h (100%)
>  rename drivers/video/{ => fbdev}/sis/Makefile (100%)
>  rename drivers/video/{ => fbdev}/sis/init.c (100%)
>  rename drivers/video/{ => fbdev}/sis/init.h (100%)
>  rename drivers/video/{ => fbdev}/sis/init301.c (100%)
>  rename drivers/video/{ => fbdev}/sis/init301.h (100%)
>  rename drivers/video/{ => fbdev}/sis/initdef.h (100%)
>  rename drivers/video/{ => fbdev}/sis/initextlfb.c (100%)
>  rename drivers/video/{ => fbdev}/sis/oem300.h (100%)
>  rename drivers/video/{ => fbdev}/sis/oem310.h (100%)
>  rename drivers/video/{ => fbdev}/sis/sis.h (100%)
>  rename drivers/video/{ => fbdev}/sis/sis_accel.c (100%)
>  rename drivers/video/{ => fbdev}/sis/sis_accel.h (100%)
>  rename drivers/video/{ => fbdev}/sis/sis_main.c (100%)
>  rename drivers/video/{ => fbdev}/sis/sis_main.h (100%)
>  rename drivers/video/{ => fbdev}/sis/vgatypes.h (100%)
>  rename drivers/video/{ => fbdev}/sis/vstruct.h (100%)
>  rename drivers/video/{ => fbdev}/skeletonfb.c (100%)
>  rename drivers/video/{ => fbdev}/sm501fb.c (100%)
>  rename drivers/video/{ => fbdev}/smscufx.c (100%)
>  rename drivers/video/{ => fbdev}/ssd1307fb.c (100%)
>  rename drivers/video/{ => fbdev}/sstfb.c (100%)
>  rename drivers/video/{ => fbdev}/sticore.h (100%)
>  rename drivers/video/{ => fbdev}/stifb.c (100%)
>  rename drivers/video/{ => fbdev}/sunxvr1000.c (100%)
>  rename drivers/video/{ => fbdev}/sunxvr2500.c (100%)
>  rename drivers/video/{ => fbdev}/sunxvr500.c (100%)
>  rename drivers/video/{ => fbdev}/tcx.c (100%)
>  rename drivers/video/{ => fbdev}/tdfxfb.c (100%)
>  rename drivers/video/{ => fbdev}/tgafb.c (100%)
>  rename drivers/video/{ => fbdev}/tmiofb.c (100%)
>  rename drivers/video/{ => fbdev}/tridentfb.c (100%)
>  rename drivers/video/{ => fbdev}/udlfb.c (100%)
>  rename drivers/video/{ => fbdev}/uvesafb.c (100%)
>  rename drivers/video/{ => fbdev}/valkyriefb.c (100%)
>  rename drivers/video/{ => fbdev}/valkyriefb.h (100%)
>  rename drivers/video/{ => fbdev}/vermilion/Makefile (100%)
>  rename drivers/video/{ => fbdev}/vermilion/cr_pll.c (100%)
>  rename drivers/video/{ => fbdev}/vermilion/vermilion.c (100%)
>  rename drivers/video/{ => fbdev}/vermilion/vermilion.h (100%)
>  rename drivers/video/{ => fbdev}/vesafb.c (100%)
>  rename drivers/video/{ => fbdev}/vfb.c (100%)
>  rename drivers/video/{ => fbdev}/vga16fb.c (100%)
>  rename drivers/video/{ => fbdev}/via/Makefile (100%)
>  rename drivers/video/{ => fbdev}/via/accel.c (100%)
>  rename drivers/video/{ => fbdev}/via/accel.h (100%)
>  rename drivers/video/{ => fbdev}/via/chip.h (100%)
>  rename drivers/video/{ => fbdev}/via/debug.h (100%)
>  rename drivers/video/{ => fbdev}/via/dvi.c (100%)
>  rename drivers/video/{ => fbdev}/via/dvi.h (100%)
>  rename drivers/video/{ => fbdev}/via/global.c (100%)
>  rename drivers/video/{ => fbdev}/via/global.h (100%)
>  rename drivers/video/{ => fbdev}/via/hw.c (100%)
>  rename drivers/video/{ => fbdev}/via/hw.h (100%)
>  rename drivers/video/{ => fbdev}/via/ioctl.c (100%)
>  rename drivers/video/{ => fbdev}/via/ioctl.h (100%)
>  rename drivers/video/{ => fbdev}/via/lcd.c (100%)
>  rename drivers/video/{ => fbdev}/via/lcd.h (100%)
>  rename drivers/video/{ => fbdev}/via/share.h (100%)
>  rename drivers/video/{ => fbdev}/via/tblDPASetting.c (100%)
>  rename drivers/video/{ => fbdev}/via/tblDPASetting.h (100%)
>  rename drivers/video/{ => fbdev}/via/via-core.c (100%)
>  rename drivers/video/{ => fbdev}/via/via-gpio.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux.h (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_ch7301.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_edid.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_sii164.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_vt1621.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_vt1622.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_vt1625.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_vt1631.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_vt1632.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_aux_vt1636.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_clock.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_clock.h (100%)
>  rename drivers/video/{ => fbdev}/via/via_i2c.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_modesetting.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_modesetting.h (100%)
>  rename drivers/video/{ => fbdev}/via/via_utility.c (100%)
>  rename drivers/video/{ => fbdev}/via/via_utility.h (100%)
>  rename drivers/video/{ => fbdev}/via/viafbdev.c (100%)
>  rename drivers/video/{ => fbdev}/via/viafbdev.h (100%)
>  rename drivers/video/{ => fbdev}/via/viamode.c (100%)
>  rename drivers/video/{ => fbdev}/via/viamode.h (100%)
>  rename drivers/video/{ => fbdev}/via/vt1636.c (100%)
>  rename drivers/video/{ => fbdev}/via/vt1636.h (100%)
>  rename drivers/video/{ => fbdev}/vt8500lcdfb.c (100%)
>  rename drivers/video/{ => fbdev}/vt8500lcdfb.h (100%)
>  rename drivers/video/{ => fbdev}/vt8623fb.c (100%)
>  rename drivers/video/{ => fbdev}/w100fb.c (100%)
>  rename drivers/video/{ => fbdev}/w100fb.h (100%)
>  rename drivers/video/{ => fbdev}/wm8505fb.c (100%)
>  rename drivers/video/{ => fbdev}/wm8505fb_regs.h (100%)
>  rename drivers/video/{ => fbdev}/wmt_ge_rops.c (99%)
>  rename drivers/video/{ => fbdev}/wmt_ge_rops.h (100%)
>  rename drivers/video/{ => fbdev}/xen-fbfront.c (100%)
>  rename drivers/video/{ => fbdev}/xilinxfb.c (100%)
>  delete mode 100644 drivers/video/omap2/Kconfig
> 
> -- 
> 1.8.3.2
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply

* Re: [PATCH v2 4/4] video: mmp: add device tree support
From: Zhou Zhu @ 2014-03-04 11:28 UTC (permalink / raw)
  To: Mark Rutland, Tomi Valkeinen
  Cc: Zhou Zhu, linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jean-Christophe Plagniol-Villard, Haojian Zhuang, Sascha Hauer,
	Jingoo Han, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Chao Xie, Guoqing Li, Lisa Du, huangyh-eYqpPyKDWXRBDgjK7y7TUQ
In-Reply-To: <20140217143736.GC19308-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>

Hi, Tomi and Mark,

On Mon, Feb 17, 2014 at 10:37 PM, Mark Rutland <mark.rutland@arm.com> wrote:
>
> On Tue, Jan 14, 2014 at 11:16:24AM +0000, Zhou Zhu wrote:
> > add device tree support for mmp fb/controller
> > the description of DT config is at
> > Documentation/devicetree/bindings/fb/mmp-disp.txt
> >
> > Signed-off-by: Zhou Zhu <zzhu3@marvell.com>
> > ---
> >  Documentation/devicetree/bindings/fb/mmp-disp.txt |   60 ++++++++
> >  drivers/video/mmp/fb/mmpfb.c                      |   73 ++++++----
> >  drivers/video/mmp/hw/mmp_ctrl.c                   |  160 ++++++++++++++++-----
> >  3 files changed, 235 insertions(+), 58 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/fb/mmp-disp.txt


Thank you very much for your review! I am trying to update the code
according to your comments.

We have reviewed the dts and removed many software settings and
not-used settings - for example, we unpacked path-config/link-config
and removed some configures that we will never change.
Also we removed fb settings which is considered as software.

Would you please give us some feedbacks if we adjust our dts into follow style?
As there might be big changes on the code structures, I would update
the code after this dts layout is considered as "right".

mmp-disp@d420b000 {
    compatible = "marvell,mmp-disp";
    reg = <0xd420b000 0x1fc>;
    interrupts = <0 41 0x4>;

    internal-connections {
        pipe1: pn-path {
        input = "panel-graphic"; //panel-graphic is the overlay name in spec.
        output = &parallel;
        }
    }
    ports{
        parallel: parallel {
            marvell,rbswap;
            marvell,spi;
        }
    }
    status = "okay";
}

panel-xxx {
    properties;
    connection = &parallel;
}

-- 
Thanks,
-Zhou

^ permalink raw reply

* Re: [PATCH 3/9] Doc/DT: Add DT binding documentation for DVI Connector
From: Daniel Vetter @ 2014-03-04 12:54 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: devicetree, linux-fbdev, dri-devel, Andrzej Hajda, Tomi Valkeinen,
	Laurent Pinchart, linux-arm-kernel, Sebastian Hesselbarth
In-Reply-To: <20140228162327.GT21483@n2100.arm.linux.org.uk>

On Fri, Feb 28, 2014 at 04:23:27PM +0000, Russell King - ARM Linux wrote:
> On Fri, Feb 28, 2014 at 06:12:23PM +0200, Tomi Valkeinen wrote:
> > On 28/02/14 17:59, Russell King - ARM Linux wrote:
> > 
> > >> +dvi0: connector@0 {
> > >> +	compatible = "dvi-connector";
> > >> +	label = "dvi";
> > >> +
> > >> +	i2c-bus = <&i2c3>;
> > >> +
> > >> +	dvi_connector_in: endpoint {
> > >> +		remote-endpoint = <&tfp410_out>;
> > >> +	};
> > >> +};
> > > 
> > > This looks far too simplistic.  There are different classes of DVI
> > > connector - there is:
> > > 
> > > DVI A - analogue only
> > > DVI D - digital only (single and dual link)
> > > DVI I - both (single and dual digital link)
> > > 
> > > DRM at least makes a distinction between these three classes, and this
> > > disctinction is part of the user API.  How would a display system know
> > > which kind of DVI connector is wired up on the board from this DT
> > > description?
> > 
> > Yes, I think that's a valid change. But do we also need to specify
> > single/dual link, in addition to the three types?
> 
> I would argue that as it's a difference in physical hardware, then it
> should be described in DT, even if we don't use it.  The reasoning is
> that although we may not use it today, we may need to use it in the
> future, and as we're describing what the hardware actually is - and
> even in this case what pins may be present or missing on the connector,
> it's unlikely to be problematical (the only problem is when someone
> omits it...)

If you plug a dual-link dvi screen into a soc which can do dual-link but
the actual connector is cheap and doesn't have this wired up
(differentiate wtf) then the kernel needs to know. Otherwise it can't
correctly filter out the modes with dotclocks high enough to require dual
link and the user will look at a black screen.

3.14 has a regression in drm/i915 where we've screwed this up ;-)
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply

* Re: [PATCH 4/9] Doc/DT: Add DT binding documentation for HDMI Connector
From: Daniel Vetter @ 2014-03-04 12:59 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: devicetree, linux-fbdev, dri-devel, Andrzej Hajda, Tomi Valkeinen,
	Laurent Pinchart, linux-arm-kernel, Sebastian Hesselbarth
In-Reply-To: <20140228160612.GR21483@n2100.arm.linux.org.uk>

On Fri, Feb 28, 2014 at 04:06:12PM +0000, Russell King - ARM Linux wrote:
> On Fri, Feb 28, 2014 at 02:20:11PM +0200, Tomi Valkeinen wrote:
> > Add DT binding documentation for HDMI Connector.
> > 
> > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> > Reviewed-by: Archit Taneja <archit@ti.com>
> > ---
> >  .../devicetree/bindings/video/hdmi-connector.txt   | 23 ++++++++++++++++++++++
> >  1 file changed, 23 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/video/hdmi-connector.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/video/hdmi-connector.txt b/Documentation/devicetree/bindings/video/hdmi-connector.txt
> > new file mode 100644
> > index 000000000000..5d25f6a432bb
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/video/hdmi-connector.txt
> > @@ -0,0 +1,23 @@
> > +HDMI Connector
> > +=======
> > +
> > +Required properties:
> > +- compatible: "hdmi-connector"
> > +
> > +Optional properties:
> > +- label: a symbolic name for the connector
> > +
> > +Required nodes:
> > +- Video port for HDMI input
> > +
> > +Example
> > +-------
> > +
> > +hdmi0: connector@1 {
> > +	compatible = "hdmi-connector";
> > +	label = "hdmi";
> > +
> > +	hdmi_connector_in: endpoint {
> > +		remote-endpoint = <&tpd12s015_out>;
> > +	};
> > +};
> 
> It seems rather weird to have DVI connectors having an optional I2C
> property, but HDMI (which augments DVI) not having that as at least an
> optional property.
> 
> I can quite well see the iMX HDMI support needing an i2c bus here.
> 
> Also, HDMI has two connector standards - type A and type B, much like
> the single vs dual link of DVI.  Again, DRM exposes this to userspace.

Yeah, there's a dual-link hdmi standard somewhere. I've never seen it in
the wild anywhere though, and newer hdmi all just increase the max link
clock to push higher res modes over the wire. Imo can't hurt to just
enumerate all type of physical connectors standardized.

HDMI revisions themselves are only relevant for the sink (as advertised
capabilities in the EDID) and for your hdmi encoder chip (where pretty
much just the max dotclock is interesting really). So I don't think we
need a hdmi revision in dt for the physical connector.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply

* Re: [PATCH 0/3] Reorder drivers/video directory
From: Randy Dunlap @ 2014-03-04 19:21 UTC (permalink / raw)
  To: Tomi Valkeinen, linux-fbdev, dri-devel, linux-kernel
  Cc: Laurent Pinchart, Geert Uytterhoeven,
	Jean-Christophe Plagniol-Villard, David Airlie, Andrew Morton,
	Linus Torvalds, Greg Kroah-Hartman
In-Reply-To: <5314412B.6060502@ti.com>

On 03/03/2014 12:45 AM, Tomi Valkeinen wrote:
> On 27/02/14 13:54, Tomi Valkeinen wrote:
>> Hi,
>>
>> This is a re-send of the series, with RFC removed from the subject, and a bunch
>> of acks added.
>>
>> I'm cc'ing more people, to make sure this doesn't come as a surprise, and to
>> make sure this is not a bad idea, doomed to fail horribly.
>>
>> So this series creates a new directory, drivers/video/fbdev/, to which all
>> fbdev related files are moved. Also, a new directory, drivers/video/fbdev/core/
>> is created, to which the core fbdev framework files are moved. This makes the
>> drivers/video hierarchy much more clear.
>>
>> Presuming no one has objections to this as such, I wonder what's the least
>> painful way to merge this? Normally, like any other fbdev change? As a separate
>> pull request, maybe at -rc2 time frame, based on -rc1? Something else?
>>
>>  Tomi
>>
>> Tomi Valkeinen (3):
>>   video: move fbdev to drivers/video/fbdev
>>   fbdev: move fbdev core files to separate directory
>>   video: Kconfig: move drm and fb into separate menus
> 
> I have pushed this to my for-next branch. Let's see what happens... At
> least I'm able to merge the current linux-next without any conflicts.

Thanks, I'm looking at this change in linux-next now.

EXYNOS_VIDEO seems to be a little bit odd.  Can you clarify that for me?
(This is not a change that you introduced.)


In particular, under Graphics support, select Framebuffer Devices.
This lists:
  Support for frame buffer devices -->
  Exynos Video driver support

It appears to me that Exynos either is a Framebuffer Device and should depend
on FB like the other drivers here do OR (actually XOR) it is not a frame buffer
device and it should not be listed here.

Then once that is cleared up :), we don't need 2 levels of menu to get to the
list of FB drivers -- i.e., one of those levels can be removed.

Oh, and if you keep the new menu item "Framebuffer Devices", please spell it
like the other entry (Frame Buffer).


Other than those nits, I like this change very much.  Thanks.

-- 
~Randy

^ permalink raw reply

* Re: [PATCH 0/3] Reorder drivers/video directory
From: Tomi Valkeinen @ 2014-03-05  6:32 UTC (permalink / raw)
  To: Randy Dunlap, linux-fbdev, dri-devel, linux-kernel
  Cc: Laurent Pinchart, Geert Uytterhoeven,
	Jean-Christophe Plagniol-Villard, David Airlie, Andrew Morton,
	Linus Torvalds, Greg Kroah-Hartman
In-Reply-To: <531627D6.6060007@infradead.org>

[-- Attachment #1: Type: text/plain, Size: 1907 bytes --]

On 04/03/14 21:21, Randy Dunlap wrote:

>> I have pushed this to my for-next branch. Let's see what happens... At
>> least I'm able to merge the current linux-next without any conflicts.
> 
> Thanks, I'm looking at this change in linux-next now.
> 
> EXYNOS_VIDEO seems to be a little bit odd.  Can you clarify that for me?
> (This is not a change that you introduced.)
> 
> 
> In particular, under Graphics support, select Framebuffer Devices.
> This lists:
>   Support for frame buffer devices -->
>   Exynos Video driver support
> 
> It appears to me that Exynos either is a Framebuffer Device and should depend
> on FB like the other drivers here do OR (actually XOR) it is not a frame buffer
> device and it should not be listed here.
> 
> Then once that is cleared up :), we don't need 2 levels of menu to get to the
> list of FB drivers -- i.e., one of those levels can be removed.

There are others. For my config, I have:

{*} Support for frame buffer devices  --->
<M> OMAP2+ Display Subsystem support  --->
[ ] Exynos Video driver support  ----
< > Solomon SSD1307 framebuffer support

I didn't want to start fixing those at the moment, as I have no idea
about exynos or solomon, and I wanted to just try to do the reorder,
without any other changes.

I agree that there's something wrong with the items. For the OMAP DSS,
there are non-fbdev related items under that menu, used also by omapdrm.
So it should probably be split into different components.

> Oh, and if you keep the new menu item "Framebuffer Devices", please spell it
> like the other entry (Frame Buffer).

Ok, fixed.

> Other than those nits, I like this change very much.  Thanks.

Thanks. After pushing this to for-next, I'm getting compile error
reports from Fengguang and Stephen. Let's see if I manage to avoid
those... This is not the easiest change to manage.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* [PATCH] video: da8xx-fb: Fix casting of info->pseudo_palette
From: jon @ 2014-03-05  8:19 UTC (permalink / raw)
  To: linux-fbdev, linux-kernel; +Cc: Jon Ringle
In-Reply-To: <1393836183-26555-1-git-send-email-jringle@gridpoint.com>

From: Jon Ringle <jringle@gridpoint.com>

(Resending without corporate disclaimer in email footer)

The casting to (u16 *) on info->pseudo_palette is wrong and causes the
display to show a blue (garbage) vertical line on every other pixel column

Signed-off-by: Jon Ringle <jringle@gridpoint.com>
---
 drivers/video/da8xx-fb.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index d042624..83c43b2 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -678,15 +678,7 @@ static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
 			(green << info->var.green.offset) |
 			(blue << info->var.blue.offset);
 
-		switch (info->var.bits_per_pixel) {
-		case 16:
-			((u16 *) (info->pseudo_palette))[regno] = v;
-			break;
-		case 24:
-		case 32:
-			((u32 *) (info->pseudo_palette))[regno] = v;
-			break;
-		}
+		((u32 *) (info->pseudo_palette))[regno] = v;
 		if (palette[0] != 0x4000) {
 			update_hw = 1;
 			palette[0] = 0x4000;
-- 
1.8.5.4


^ permalink raw reply related

* Re: [PATCH 3/9] Doc/DT: Add DT binding documentation for DVI Connector
From: Tomi Valkeinen @ 2014-03-05  8:41 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Philipp Zabel,
	Laurent Pinchart, Sascha Hauer, Sebastian Hesselbarth, Rob Clark,
	Inki Dae, Andrzej Hajda, Tomasz Figa, Thierry Reding,
	Daniel Vetter
In-Reply-To: <20140228162327.GT21483-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 1184 bytes --]

On 28/02/14 18:23, Russell King - ARM Linux wrote:

> That's rather a lot of compatible strings.  Another possibility is:
> 
> 	compatible = "dvi-connector";
> 	analog;
> 	digital;
> 	single-link;
> 	dual-link;

I made the following changes compared to the posted version. I decided
to leave the "single-link" out, as it's implied if "digital" is set.

 Tomi

@@ -6,11 +6,16 @@ Required properties:

 Optional properties:
 - label: a symbolic name for the connector
-- i2c-bus: phandle to the i2c bus that is connected to DVI DDC
+- ddc-i2c-bus: phandle to the i2c bus that is connected to DVI DDC
+- analog: the connector has DVI analog pins
+- digital: the connector has DVI digital pins
+- dual-link: the connector has pins for DVI dual-link

 Required nodes:
 - Video port for DVI input

+Note: One (or both) of 'analog' or 'digital' must be set.
+
 Example
 -------

@@ -18,7 +23,9 @@ dvi0: connector@0 {
        compatible = "dvi-connector";
        label = "dvi";

-       i2c-bus = <&i2c3>;
+       digital;
+
+       ddc-i2c-bus = <&i2c3>;

        dvi_connector_in: endpoint {
                remote-endpoint = <&tfp410_out>;



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* Re: [PATCH 4/9] Doc/DT: Add DT binding documentation for HDMI Connector
From: Tomi Valkeinen @ 2014-03-05  8:42 UTC (permalink / raw)
  To: Geert Uytterhoeven, Russell King - ARM Linux
  Cc: devicetree@vger.kernel.org, Linux Fbdev development list,
	Daniel Vetter, Sascha Hauer, Tomasz Figa, DRI Development,
	Inki Dae, Andrzej Hajda, Rob Clark, Thierry Reding,
	Laurent Pinchart, Philipp Zabel,
	linux-arm-kernel@lists.infradead.org, Sebastian Hesselbarth
In-Reply-To: <CAMuHMdVpT2Y-KQO46o=zbRSgqgx2mbBsPjGgoTDDwwfCOxUCmw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1316 bytes --]

On 01/03/14 20:58, Geert Uytterhoeven wrote:
> On Fri, Feb 28, 2014 at 5:34 PM, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
>> There's actually three HDMI connectors:
>>
>>   All three connectors carry all required HDMI signals, including a TMDS
>>   link. The Type B connector is slightly larger and carries a second TMDS
>>   link, which is necessary to support very high resolution displays using
>>   dual link. The Type C connector carries the same signals as the Type A
>>   but is more compact and intended for mobile applications.
>>
>> So, Type C and Type A are electrically the same.
> 
> There's also D (e.g. on BeagleBone Black) and E:
> 
> http://en.wikipedia.org/wiki/HDMI#Connectors
> 
> Electrically they seem to be the same as A/C.

I made the following change compared to the posted version.

 Tomi

@@ -3,6 +3,7 @@ HDMI Connector

 Required properties:
 - compatible: "hdmi-connector"
+- type: the HDMI connector type: "a", "b", "c", "d" or "e"

 Optional properties:
 - label: a symbolic name for the connector
@@ -17,6 +18,8 @@ hdmi0: connector@1 {
        compatible = "hdmi-connector";
        label = "hdmi";

+       type = "a";
+
        hdmi_connector_in: endpoint {
                remote-endpoint = <&tpd12s015_out>;
        };



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* [PATCH v2] gpu: ipu-v3: Move i.MX IPUv3 core driver out of staging
From: Philipp Zabel @ 2014-03-05  9:30 UTC (permalink / raw)
  To: linux-fbdev

The i.MX Image Processing Unit (IPU) contains a number of image processing
blocks that sit right in the middle between DRM and V4L2. Some of the modules,
such as Display Controller, Processor, and Interface (DC, DP, DI) or CMOS
Sensor Interface (CSI) and their FIFOs could be assigned to either framework,
but others, such as the dma controller (IDMAC) and image converter (IC) can
be used by both.
The IPUv3 core driver provides an internal API to access the modules, to be
used by both DRM and V4L2 IPUv3 drivers.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
This is the same as the previous patch, exported with format-patch -M.

Changes since v1:
 - Added missing #include changes imx-hdmi.c
---
 drivers/gpu/Makefile                                          |  1 +
 drivers/gpu/ipu-v3/Kconfig                                    |  7 +++++++
 drivers/{staging/imx-drm => gpu}/ipu-v3/Makefile              |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-common.c          |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dc.c              |  3 +--
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-di.c              |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dmfc.c            |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dp.c              |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-prv.h             |  2 +-
 drivers/staging/imx-drm/Kconfig                               | 11 +----------
 drivers/staging/imx-drm/Makefile                              |  1 -
 drivers/staging/imx-drm/imx-hdmi.c                            |  2 +-
 drivers/staging/imx-drm/imx-tve.c                             |  2 +-
 drivers/staging/imx-drm/ipuv3-crtc.c                          |  2 +-
 drivers/staging/imx-drm/ipuv3-plane.c                         |  2 +-
 drivers/video/Kconfig                                         |  1 +
 .../staging/imx-drm/ipu-v3 => include/video}/imx-ipu-v3.h     |  0
 17 files changed, 21 insertions(+), 23 deletions(-)
 create mode 100644 drivers/gpu/ipu-v3/Kconfig
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/Makefile (59%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-common.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dc.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-di.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dmfc.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dp.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-prv.h (99%)
 rename {drivers/staging/imx-drm/ipu-v3 => include/video}/imx-ipu-v3.h (100%)

diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index d8a22c2..70da9eb 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -1,2 +1,3 @@
 obj-y			+= drm/ vga/
 obj-$(CONFIG_TEGRA_HOST1X)	+= host1x/
+obj-$(CONFIG_IMX_IPUV3_CORE)	+= ipu-v3/
diff --git a/drivers/gpu/ipu-v3/Kconfig b/drivers/gpu/ipu-v3/Kconfig
new file mode 100644
index 0000000..2f228a2
--- /dev/null
+++ b/drivers/gpu/ipu-v3/Kconfig
@@ -0,0 +1,7 @@
+config IMX_IPUV3_CORE
+	tristate "IPUv3 core support"
+	depends on SOC_IMX5 || SOC_IMX6Q || SOC_IMX6SL || ARCH_MULTIPLATFORM
+	depends on RESET_CONTROLLER
+	help
+	  Choose this if you have a i.MX5/6 system and want to use the Image
+	  Processing Unit. This option only enables IPU base support.
diff --git a/drivers/staging/imx-drm/ipu-v3/Makefile b/drivers/gpu/ipu-v3/Makefile
similarity index 59%
rename from drivers/staging/imx-drm/ipu-v3/Makefile
rename to drivers/gpu/ipu-v3/Makefile
index 28ed72e..d21cc37 100644
--- a/drivers/staging/imx-drm/ipu-v3/Makefile
+++ b/drivers/gpu/ipu-v3/Makefile
@@ -1,3 +1,3 @@
-obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += imx-ipu-v3.o
+obj-$(CONFIG_IMX_IPUV3_CORE) += imx-ipu-v3.o
 
 imx-ipu-v3-objs := ipu-common.o ipu-dc.o ipu-di.o ipu-dp.o ipu-dmfc.o
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-common.c
rename to drivers/gpu/ipu-v3/ipu-common.c
index ca85d3d..7e1f614 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -31,7 +31,7 @@
 
 #include <drm/drm_fourcc.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 static inline u32 ipu_cm_read(struct ipu_soc *ipu, unsigned offset)
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c b/drivers/gpu/ipu-v3/ipu-dc.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-dc.c
rename to drivers/gpu/ipu-v3/ipu-dc.c
index d5de8bb..9f1e5ef 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c
+++ b/drivers/gpu/ipu-v3/ipu-dc.c
@@ -20,8 +20,7 @@
 #include <linux/delay.h>
 #include <linux/io.h>
 
-#include "../imx-drm.h"
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 #define DC_MAP_CONF_PTR(n)	(0x108 + ((n) & ~0x1) * 2)
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-di.c b/drivers/gpu/ipu-v3/ipu-di.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-di.c
rename to drivers/gpu/ipu-v3/ipu-di.c
index 82a9eba..42e60b4 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-di.c
+++ b/drivers/gpu/ipu-v3/ipu-di.c
@@ -20,7 +20,7 @@
 #include <linux/err.h>
 #include <linux/platform_device.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 struct ipu_di {
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c b/drivers/gpu/ipu-v3/ipu-dmfc.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c
rename to drivers/gpu/ipu-v3/ipu-dmfc.c
index 4521301..e1493ab3 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c
+++ b/drivers/gpu/ipu-v3/ipu-dmfc.c
@@ -17,7 +17,7 @@
 #include <linux/errno.h>
 #include <linux/io.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 #define DMFC_RD_CHAN		0x0000
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c b/drivers/gpu/ipu-v3/ipu-dp.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-dp.c
rename to drivers/gpu/ipu-v3/ipu-dp.c
index 58f87c8..e17fa3f 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c
+++ b/drivers/gpu/ipu-v3/ipu-dp.c
@@ -19,7 +19,7 @@
 #include <linux/io.h>
 #include <linux/err.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 #define DP_SYNC 0
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-prv.h b/drivers/gpu/ipu-v3/ipu-prv.h
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-prv.h
rename to drivers/gpu/ipu-v3/ipu-prv.h
index 4df0050..5cb075f 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-prv.h
+++ b/drivers/gpu/ipu-v3/ipu-prv.h
@@ -22,7 +22,7 @@ struct ipu_soc;
 #include <linux/clk.h>
 #include <linux/platform_device.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 
 #define IPUV3_CHANNEL_CSI0			 0
 #define IPUV3_CHANNEL_CSI1			 1
diff --git a/drivers/staging/imx-drm/Kconfig b/drivers/staging/imx-drm/Kconfig
index c6e8ba7..82fb758 100644
--- a/drivers/staging/imx-drm/Kconfig
+++ b/drivers/staging/imx-drm/Kconfig
@@ -39,19 +39,10 @@ config DRM_IMX_LDB
 	  Choose this to enable the internal LVDS Display Bridge (LDB)
 	  found on i.MX53 and i.MX6 processors.
 
-config DRM_IMX_IPUV3_CORE
-	tristate "IPUv3 core support"
-	depends on DRM_IMX
-	depends on RESET_CONTROLLER
-	help
-	  Choose this if you have a i.MX5/6 system and want
-	  to use the IPU. This option only enables IPU base
-	  support.
-
 config DRM_IMX_IPUV3
 	tristate "DRM Support for i.MX IPUv3"
 	depends on DRM_IMX
-	depends on DRM_IMX_IPUV3_CORE
+	depends on IMX_IPUV3_CORE
 	help
 	  Choose this if you have a i.MX5 or i.MX6 processor.
 
diff --git a/drivers/staging/imx-drm/Makefile b/drivers/staging/imx-drm/Makefile
index 129e3a3..582c438 100644
--- a/drivers/staging/imx-drm/Makefile
+++ b/drivers/staging/imx-drm/Makefile
@@ -6,7 +6,6 @@ obj-$(CONFIG_DRM_IMX) += imxdrm.o
 obj-$(CONFIG_DRM_IMX_PARALLEL_DISPLAY) += parallel-display.o
 obj-$(CONFIG_DRM_IMX_TVE) += imx-tve.o
 obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o
-obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += ipu-v3/
 
 imx-ipuv3-crtc-objs  := ipuv3-crtc.o ipuv3-plane.o
 obj-$(CONFIG_DRM_IMX_IPUV3)	+= imx-ipuv3-crtc.o
diff --git a/drivers/staging/imx-drm/imx-hdmi.c b/drivers/staging/imx-drm/imx-hdmi.c
index 8384cea..8539e91 100644
--- a/drivers/staging/imx-drm/imx-hdmi.c
+++ b/drivers/staging/imx-drm/imx-hdmi.c
@@ -27,8 +27,8 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_encoder_slave.h>
+#include <video/imx-ipu-v3.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
 #include "imx-hdmi.h"
 #include "imx-drm.h"
 
diff --git a/drivers/staging/imx-drm/imx-tve.c b/drivers/staging/imx-drm/imx-tve.c
index 50b25f1..b5fa210 100644
--- a/drivers/staging/imx-drm/imx-tve.c
+++ b/drivers/staging/imx-drm/imx-tve.c
@@ -30,8 +30,8 @@
 #include <drm/drmP.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
+#include <video/imx-ipu-v3.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
 #include "imx-drm.h"
 
 #define TVE_COM_CONF_REG	0x00
diff --git a/drivers/staging/imx-drm/ipuv3-crtc.c b/drivers/staging/imx-drm/ipuv3-crtc.c
index e646017..3e0854a 100644
--- a/drivers/staging/imx-drm/ipuv3-crtc.c
+++ b/drivers/staging/imx-drm/ipuv3-crtc.c
@@ -30,7 +30,7 @@
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_fb_cma_helper.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "imx-drm.h"
 #include "ipuv3-plane.h"
 
diff --git a/drivers/staging/imx-drm/ipuv3-plane.c b/drivers/staging/imx-drm/ipuv3-plane.c
index b0c9b6c..889532b9 100644
--- a/drivers/staging/imx-drm/ipuv3-plane.c
+++ b/drivers/staging/imx-drm/ipuv3-plane.c
@@ -17,7 +17,7 @@
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_gem_cma_helper.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
+#include "video/imx-ipu-v3.h"
 #include "ipuv3-plane.h"
 
 #define to_ipu_plane(x)	container_of(x, struct ipu_plane, base)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index dade5b7..2c64a47 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -20,6 +20,7 @@ source "drivers/char/agp/Kconfig"
 source "drivers/gpu/vga/Kconfig"
 
 source "drivers/gpu/host1x/Kconfig"
+source "drivers/gpu/ipu-v3/Kconfig"
 
 source "drivers/gpu/drm/Kconfig"
 
diff --git a/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h b/include/video/imx-ipu-v3.h
similarity index 100%
rename from drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h
rename to include/video/imx-ipu-v3.h
-- 
1.9.0.rc3


^ permalink raw reply related

* Re: [PATCH v2 4/4] video: mmp: add device tree support
From: Tomi Valkeinen @ 2014-03-05  9:33 UTC (permalink / raw)
  To: Zhou Zhu
  Cc: Mark Rutland, Zhou Zhu,
	linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jean-Christophe Plagniol-Villard, Haojian Zhuang, Sascha Hauer,
	Jingoo Han, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Chao Xie, Guoqing Li, Lisa Du, huangyh-eYqpPyKDWXRBDgjK7y7TUQ
In-Reply-To: <CAJATT-5sQc7vsUhoFKdDnstqjj2R_yQ+Wk1NRf20UTM4-ndMSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 3258 bytes --]

On 04/03/14 13:28, Zhou Zhu wrote:
> Hi, Tomi and Mark,
> 
> On Mon, Feb 17, 2014 at 10:37 PM, Mark Rutland <mark.rutland@arm.com> wrote:
>>
>> On Tue, Jan 14, 2014 at 11:16:24AM +0000, Zhou Zhu wrote:
>>> add device tree support for mmp fb/controller
>>> the description of DT config is at
>>> Documentation/devicetree/bindings/fb/mmp-disp.txt
>>>
>>> Signed-off-by: Zhou Zhu <zzhu3@marvell.com>
>>> ---
>>>  Documentation/devicetree/bindings/fb/mmp-disp.txt |   60 ++++++++
>>>  drivers/video/mmp/fb/mmpfb.c                      |   73 ++++++----
>>>  drivers/video/mmp/hw/mmp_ctrl.c                   |  160 ++++++++++++++++-----
>>>  3 files changed, 235 insertions(+), 58 deletions(-)
>>>  create mode 100644 Documentation/devicetree/bindings/fb/mmp-disp.txt
> 
> 
> Thank you very much for your review! I am trying to update the code
> according to your comments.
> 
> We have reviewed the dts and removed many software settings and
> not-used settings - for example, we unpacked path-config/link-config
> and removed some configures that we will never change.
> Also we removed fb settings which is considered as software.
> 
> Would you please give us some feedbacks if we adjust our dts into follow style?
> As there might be big changes on the code structures, I would update
> the code after this dts layout is considered as "right".
> 
> mmp-disp@d420b000 {
>     compatible = "marvell,mmp-disp";
>     reg = <0xd420b000 0x1fc>;
>     interrupts = <0 41 0x4>;
> 
>     internal-connections {
>         pipe1: pn-path {
>         input = "panel-graphic"; //panel-graphic is the overlay name in spec.
>         output = &parallel;
>         }
>     }
>     ports{
>         parallel: parallel {
>             marvell,rbswap;
>             marvell,spi;
>         }
>     }
>     status = "okay";
> }
> 
> panel-xxx {
>     properties;
>     connection = &parallel;
> }

I would recommend using the same style that is used in the OMAP DSS, imx
drm and exynos patches that are introducing DT support. They use ports
and endpoints as defined in:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/media/video-interfaces.txt

with the addition of a simplified endpoint format, where the 'port' node
is not required.

To give an idea what it could look like, I've modified your example
above. It's just a rough example, you should study and think how it best
fits for mmp.

You could use the same format for the internal connections also, but I
didn't touch that. I think internal connections can as well be
configured separately, in a custom format, because there's no need for
external components to connect to the internal links.

mmp-disp@d420b000 {
    compatible = "marvell,mmp-disp";
    reg = <0xd420b000 0x1fc>;
    interrupts = <0 41 0x4>;

    internal-connections {
        pipe1: pn-path {
        input = "panel-graphic";
        output = &disp_out;
        }
    }

	disp_out: endpoint {
		remote-endpoint = <&panel_in>;
		marvell,rbswap;
		marvell,spi;
	};

    status = "okay";
}

panel-xxx {
	properties;

	panel_in: endpoint {
		remote-endpoint = <&disp_out>;
	};
};

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* Re: [PATCH] fbdev: FB_OPENCORES should depend on HAS_DMA
From: Stefan Kristiansson @ 2014-03-05 10:01 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Jean-Christophe Plagniol-Villard, Tomi Valkeinen, linux-fbdev,
	linux-kernel
In-Reply-To: <1393012569-22560-1-git-send-email-geert@linux-m68k.org>

On Fri, Feb 21, 2014 at 08:56:09PM +0100, Geert Uytterhoeven wrote:
> If NO_DMA=y:
> 
>     drivers/built-in.o: In function `ocfb_remove':
>     ocfb.c:(.text+0x27fee): undefined reference to `dma_free_coherent'
>     drivers/built-in.o: In function `ocfb_probe':
>     ocfb.c:(.text+0x28418): undefined reference to `dma_alloc_coherent'
>     ocfb.c:(.text+0x284d2): undefined reference to `dma_free_coherent'
> 

I obviously had neglected compiling against that configuration,
thanks for the catch.

Acked-by: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>

> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
>  drivers/video/Kconfig |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> index 0192900dd183..fb8d31e717bc 100644
> --- a/drivers/video/Kconfig
> +++ b/drivers/video/Kconfig
> @@ -982,7 +982,7 @@ config FB_PVR2
>  
>  config FB_OPENCORES
>  	tristate "OpenCores VGA/LCD core 2.0 framebuffer support"
> -	depends on FB
> +	depends on FB && HAS_DMA
>  	select FB_CFB_FILLRECT
>  	select FB_CFB_COPYAREA
>  	select FB_CFB_IMAGEBLIT
> -- 
> 1.7.9.5
> 

^ permalink raw reply

* Re: [PATCH] fbdev: FB_OPENCORES should depend on HAS_DMA
From: Tomi Valkeinen @ 2014-03-05 12:44 UTC (permalink / raw)
  To: Geert Uytterhoeven, Stefan Kristiansson
  Cc: Jean-Christophe Plagniol-Villard, linux-fbdev, linux-kernel
In-Reply-To: <1393012569-22560-1-git-send-email-geert@linux-m68k.org>

[-- Attachment #1: Type: text/plain, Size: 449 bytes --]

On 21/02/14 21:56, Geert Uytterhoeven wrote:
> If NO_DMA=y:
> 
>     drivers/built-in.o: In function `ocfb_remove':
>     ocfb.c:(.text+0x27fee): undefined reference to `dma_free_coherent'
>     drivers/built-in.o: In function `ocfb_probe':
>     ocfb.c:(.text+0x28418): undefined reference to `dma_alloc_coherent'
>     ocfb.c:(.text+0x284d2): undefined reference to `dma_free_coherent'
> 

Thanks, applied to fbdev branch.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]

^ permalink raw reply

* [PATCH] video: fbdev: uvesafb: Remove redundant NULL check in uvesafb_remove
From: Wang YanQing @ 2014-03-05 15:54 UTC (permalink / raw)
  To: tomi.valkeinen; +Cc: plagnioj, linux-fbdev, linux-kernel, fengguang.wu

Because uvesafb_par is allocated as part of fb_info in uvesafb_probe,
so we don't need to do NULL check for both fb_info and uvesafb_par in
uvesafb_remove.

[ This patch also fix a warning report by fengguang.wu@intel.com
  "drivers/video/fbdev/uvesafb.c:1815 uvesafb_remove()
   warn: variable dereferenced before check 'par'" ]

Signed-off-by: Wang YanQing <udknight@gmail.com>
---
 drivers/video/fbdev/uvesafb.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 1f38445..18352b2 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -1812,11 +1812,9 @@ static int uvesafb_remove(struct platform_device *dev)
 		fb_destroy_modedb(info->monspecs.modedb);
 		fb_dealloc_cmap(&info->cmap);
 
-		if (par) {
-			kfree(par->vbe_modes);
-			kfree(par->vbe_state_orig);
-			kfree(par->vbe_state_saved);
-		}
+		kfree(par->vbe_modes);
+		kfree(par->vbe_state_orig);
+		kfree(par->vbe_state_saved);
 
 		framebuffer_release(info);
 	}
-- 
1.8.3.4.8.g69490f3.dirty

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox