* [PATCH v4 10/12] video: da8xx-fb: ensure pdata only for non-dt
From: Afzal Mohammed @ 2013-01-23 11:49 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
This driver is DT probe-able, hence ensure presence of platform data
only for non-DT boot.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/video/da8xx-fb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 0c68712..1c1a616 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -1303,7 +1303,7 @@ static int fb_probe(struct platform_device *device)
int ret;
unsigned long ulcm;
- if (fb_pdata = NULL) {
+ if (fb_pdata = NULL && !device->dev.of_node) {
dev_err(&device->dev, "Can not get platform data\n");
return -ENOENT;
}
--
1.7.12
^ permalink raw reply related
* [PATCH v4 09/12] video: da8xx-fb: obtain fb_videomode info from dt
From: Afzal Mohammed @ 2013-01-23 11:50 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
Obtain fb_videomode details for the connected lcd panel using the
display timing details present in DT.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
.../devicetree/bindings/video/fb-da8xx.txt | 21 +++++++++++++++++++++
drivers/video/da8xx-fb.c | 17 +++++++++++++++++
2 files changed, 38 insertions(+)
diff --git a/Documentation/devicetree/bindings/video/fb-da8xx.txt b/Documentation/devicetree/bindings/video/fb-da8xx.txt
index 581e014..0741f78 100644
--- a/Documentation/devicetree/bindings/video/fb-da8xx.txt
+++ b/Documentation/devicetree/bindings/video/fb-da8xx.txt
@@ -6,6 +6,12 @@ Required properties:
AM335x SoC's - "ti,am3352-lcdc", "ti,da830-lcdc"
- reg: Address range of lcdc register set
- interrupts: lcdc interrupt
+- display-timings: typical videomode of lcd panel, represented as child.
+ Refer Documentation/devicetree/bindings/video/display-timing.txt for
+ display timing binding details. If multiple videomodes are mentioned
+ in display timings node, typical videomode has to be mentioned as the
+ native mode or it has to be first child (driver cares only for native
+ videomode).
Example:
@@ -13,4 +19,19 @@ lcdc@4830e000 {
compatible = "ti,am3352-lcdc", "ti,da830-lcdc";
reg = <0x4830e000 0x1000>;
interrupts = <36>;
+ display-timings {
+ 800x480p62 {
+ clock-frequency = <30000000>;
+ hactive = <800>;
+ vactive = <480>;
+ hfront-porch = <39>;
+ hback-porch = <39>;
+ hsync-len = <47>;
+ vback-porch = <29>;
+ vfront-porch = <13>;
+ vsync-len = <2>;
+ hsync-active = <1>;
+ vsync-active = <1>;
+ };
+ };
};
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 0beed20..0c68712 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -36,6 +36,7 @@
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/lcm.h>
+#include <video/of_display_timing.h>
#include <video/da8xx-fb.h>
#include <asm/div64.h>
@@ -1257,8 +1258,24 @@ static struct fb_videomode *da8xx_fb_get_videomode(struct platform_device *dev)
{
struct da8xx_lcdc_platform_data *fb_pdata = dev->dev.platform_data;
struct fb_videomode *lcdc_info;
+ struct device_node *np = dev->dev.of_node;
int i;
+ if (np) {
+ lcdc_info = devm_kzalloc(&dev->dev,
+ sizeof(struct fb_videomode),
+ GFP_KERNEL);
+ if (!lcdc_info) {
+ dev_err(&dev->dev, "memory allocation failed\n");
+ return NULL;
+ }
+ if (of_get_fb_videomode(np, lcdc_info, OF_USE_NATIVE_MODE)) {
+ dev_err(&dev->dev, "timings not available in DT\n");
+ return NULL;
+ }
+ return lcdc_info;
+ }
+
for (i = 0, lcdc_info = known_lcd_panels;
i < ARRAY_SIZE(known_lcd_panels); i++, lcdc_info++) {
if (strcmp(fb_pdata->type, lcdc_info->name) = 0)
--
1.7.12
^ permalink raw reply related
* [PATCH v4 07/12] video: da8xx-fb: minimal dt support
From: Afzal Mohammed @ 2013-01-23 11:50 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
Driver is provided a means to have the probe triggered by DT.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
Documentation/devicetree/bindings/video/fb-da8xx.txt | 16 ++++++++++++++++
drivers/video/da8xx-fb.c | 7 +++++++
2 files changed, 23 insertions(+)
create mode 100644 Documentation/devicetree/bindings/video/fb-da8xx.txt
diff --git a/Documentation/devicetree/bindings/video/fb-da8xx.txt b/Documentation/devicetree/bindings/video/fb-da8xx.txt
new file mode 100644
index 0000000..581e014
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/fb-da8xx.txt
@@ -0,0 +1,16 @@
+TI LCD Controller on DA830/DA850/AM335x SoC's
+
+Required properties:
+- compatible:
+ DA830 - "ti,da830-lcdc"
+ AM335x SoC's - "ti,am3352-lcdc", "ti,da830-lcdc"
+- reg: Address range of lcdc register set
+- interrupts: lcdc interrupt
+
+Example:
+
+lcdc@4830e000 {
+ compatible = "ti,am3352-lcdc", "ti,da830-lcdc";
+ reg = <0x4830e000 0x1000>;
+ interrupts = <36>;
+};
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index b6ea5e9..08ee8eb 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -1595,6 +1595,12 @@ static int fb_resume(struct platform_device *dev)
#define fb_resume NULL
#endif
+static const struct of_device_id da8xx_fb_of_match[] = {
+ {.compatible = "ti,da830-lcdc", },
+ {},
+};
+MODULE_DEVICE_TABLE(of, da8xx_fb_of_match);
+
static struct platform_driver da8xx_fb_driver = {
.probe = fb_probe,
.remove = fb_remove,
@@ -1603,6 +1609,7 @@ static struct platform_driver da8xx_fb_driver = {
.driver = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(da8xx_fb_of_match),
},
};
--
1.7.12
^ permalink raw reply related
* [PATCH v4 06/12] video: da8xx-fb: reorganize panel detection
From: Afzal Mohammed @ 2013-01-23 11:51 UTC (permalink / raw)
To: linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
linux-omap-u79uwXL29TY76Z2rM5mHXA,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
linux-doc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
Cc: Mike Turquette, Florian Tobias Schandinat, Rob Herring,
Tomi Valkeinen
In-Reply-To: <cover.1358937685.git.afzal-l0cyMroinI0@public.gmane.org>
Move panel detection to a separate function, this helps in readability
as well as makes DT support cleaner.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/video/da8xx-fb.c | 42 ++++++++++++++++++++++++++----------------
1 file changed, 26 insertions(+), 16 deletions(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 3b146bc..b6ea5e9 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -1253,6 +1253,27 @@ static struct fb_ops da8xx_fb_ops = {
.fb_blank = cfb_blank,
};
+static struct fb_videomode *da8xx_fb_get_videomode(struct platform_device *dev)
+{
+ struct da8xx_lcdc_platform_data *fb_pdata = dev->dev.platform_data;
+ struct fb_videomode *lcdc_info;
+ int i;
+
+ for (i = 0, lcdc_info = known_lcd_panels;
+ i < ARRAY_SIZE(known_lcd_panels); i++, lcdc_info++) {
+ if (strcmp(fb_pdata->type, lcdc_info->name) = 0)
+ break;
+ }
+
+ if (i = ARRAY_SIZE(known_lcd_panels)) {
+ dev_err(&dev->dev, "no panel found\n");
+ return NULL;
+ }
+ dev_info(&dev->dev, "found %s panel\n", lcdc_info->name);
+
+ return lcdc_info;
+}
+
static int fb_probe(struct platform_device *device)
{
struct da8xx_lcdc_platform_data *fb_pdata @@ -1262,7 +1283,7 @@ static int fb_probe(struct platform_device *device)
struct fb_info *da8xx_fb_info;
struct clk *fb_clk = NULL;
struct da8xx_fb_par *par;
- int ret, i;
+ int ret;
unsigned long ulcm;
if (fb_pdata = NULL) {
@@ -1270,6 +1291,10 @@ static int fb_probe(struct platform_device *device)
return -ENOENT;
}
+ lcdc_info = da8xx_fb_get_videomode(device);
+ if (lcdc_info = NULL)
+ return -ENODEV;
+
lcdc_regs = platform_get_resource(device, IORESOURCE_MEM, 0);
da8xx_fb_reg_base = devm_request_and_ioremap(&device->dev, lcdc_regs);
if (!da8xx_fb_reg_base) {
@@ -1303,21 +1328,6 @@ static int fb_probe(struct platform_device *device)
break;
}
- for (i = 0, lcdc_info = known_lcd_panels;
- i < ARRAY_SIZE(known_lcd_panels);
- i++, lcdc_info++) {
- if (strcmp(fb_pdata->type, lcdc_info->name) = 0)
- break;
- }
-
- if (i = ARRAY_SIZE(known_lcd_panels)) {
- dev_err(&device->dev, "GLCD: No valid panel found\n");
- ret = -ENODEV;
- goto err_pm_runtime_disable;
- } else
- dev_info(&device->dev, "GLCD: Found %s panel\n",
- fb_pdata->type);
-
lcd_cfg = (struct lcd_ctrl_config *)fb_pdata->controller_data;
if (!lcd_cfg) {
--
1.7.12
^ permalink raw reply related
* [PATCH v4 05/12] video: da8xx-fb: ensure non-null cfg in pdata
From: Afzal Mohammed @ 2013-01-23 11:51 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
Ensure that platform data contains pointer for lcd_ctrl_config.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/video/da8xx-fb.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 7a32e83..3b146bc 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -1320,6 +1320,11 @@ static int fb_probe(struct platform_device *device)
lcd_cfg = (struct lcd_ctrl_config *)fb_pdata->controller_data;
+ if (!lcd_cfg) {
+ ret = -EINVAL;
+ goto err_pm_runtime_disable;
+ }
+
da8xx_fb_info = framebuffer_alloc(sizeof(struct da8xx_fb_par),
&device->dev);
if (!da8xx_fb_info) {
--
1.7.12
^ permalink raw reply related
* [PATCH v4 04/12] video: da8xx-fb: use devres
From: Afzal Mohammed @ 2013-01-23 11:51 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
Replace existing resource handling in the driver with managed device
resource.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/video/da8xx-fb.c | 35 ++++++-----------------------------
1 file changed, 6 insertions(+), 29 deletions(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index ca69e01..7a32e83 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -1036,12 +1036,9 @@ static int fb_remove(struct platform_device *dev)
par->p_palette_base);
dma_free_coherent(NULL, par->vram_size, par->vram_virt,
par->vram_phys);
- free_irq(par->irq, par);
pm_runtime_put_sync(&dev->dev);
pm_runtime_disable(&dev->dev);
framebuffer_release(info);
- iounmap(da8xx_fb_reg_base);
- release_mem_region(lcdc_regs->start, resource_size(lcdc_regs));
}
return 0;
@@ -1265,7 +1262,6 @@ static int fb_probe(struct platform_device *device)
struct fb_info *da8xx_fb_info;
struct clk *fb_clk = NULL;
struct da8xx_fb_par *par;
- resource_size_t len;
int ret, i;
unsigned long ulcm;
@@ -1275,29 +1271,16 @@ static int fb_probe(struct platform_device *device)
}
lcdc_regs = platform_get_resource(device, IORESOURCE_MEM, 0);
- if (!lcdc_regs) {
- dev_err(&device->dev,
- "Can not get memory resource for LCD controller\n");
- return -ENOENT;
- }
-
- len = resource_size(lcdc_regs);
-
- lcdc_regs = request_mem_region(lcdc_regs->start, len, lcdc_regs->name);
- if (!lcdc_regs)
- return -EBUSY;
-
- da8xx_fb_reg_base = ioremap(lcdc_regs->start, len);
+ da8xx_fb_reg_base = devm_request_and_ioremap(&device->dev, lcdc_regs);
if (!da8xx_fb_reg_base) {
- ret = -EBUSY;
- goto err_request_mem;
+ dev_err(&device->dev, "memory resource setup failed\n");
+ return -EADDRNOTAVAIL;
}
- fb_clk = clk_get(&device->dev, "fck");
+ fb_clk = devm_clk_get(&device->dev, "fck");
if (IS_ERR(fb_clk)) {
dev_err(&device->dev, "Can not get device clock\n");
- ret = -ENODEV;
- goto err_ioremap;
+ return -ENODEV;
}
pm_runtime_enable(&device->dev);
@@ -1458,7 +1441,7 @@ static int fb_probe(struct platform_device *device)
lcdc_irq_handler = lcdc_irq_handler_rev02;
}
- ret = request_irq(par->irq, lcdc_irq_handler, 0,
+ ret = devm_request_irq(&device->dev, par->irq, lcdc_irq_handler, 0,
DRIVER_NAME, par);
if (ret)
goto irq_freq;
@@ -1488,12 +1471,6 @@ err_pm_runtime_disable:
pm_runtime_put_sync(&device->dev);
pm_runtime_disable(&device->dev);
-err_ioremap:
- iounmap(da8xx_fb_reg_base);
-
-err_request_mem:
- release_mem_region(lcdc_regs->start, len);
-
return ret;
}
--
1.7.12
^ permalink raw reply related
* [PATCH v4 03/12] video: da8xx-fb: enable sync lost intr for v2 ip
From: Afzal Mohammed @ 2013-01-23 11:51 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
interrupt handler is checking for sync lost interrupt, but it was not
enabled, enable it.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/video/da8xx-fb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 7f92f37..ca69e01 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -318,7 +318,7 @@ static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
reg_int = lcdc_read(LCD_INT_ENABLE_SET_REG) |
LCD_V2_END_OF_FRAME0_INT_ENA |
LCD_V2_END_OF_FRAME1_INT_ENA |
- LCD_FRAME_DONE;
+ LCD_FRAME_DONE | LCD_SYNC_LOST;
lcdc_write(reg_int, LCD_INT_ENABLE_SET_REG);
}
reg_dma |= LCD_DUAL_FRAME_BUFFER_ENABLE;
--
1.7.12
^ permalink raw reply related
* [PATCH v4 02/12] video: da8xx-fb: fix 24bpp raster configuration
From: Afzal Mohammed @ 2013-01-23 11:52 UTC (permalink / raw)
To: linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
linux-omap-u79uwXL29TY76Z2rM5mHXA,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
linux-doc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
Cc: Mike Turquette, Florian Tobias Schandinat, Rob Herring,
Manjunathappa, Prakash, Tomi Valkeinen
In-Reply-To: <cover.1358937685.git.afzal-l0cyMroinI0@public.gmane.org>
From: "Manjunathappa, Prakash" <prakash.pm@ti.com>
Set only LCD_V2_TFT_24BPP_MODE bit for 24bpp and LCD_V2_TFT_24BPP_UNPACK
bit along with LCD_V2_TFT_24BPP_MODE for 32bpp configuration.
Patch is tested on am335x-evm for 24bpp and da850-evm for 16bpp
configurations.
Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/video/da8xx-fb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 35a33ca..7f92f37 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -550,10 +550,10 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,
case 4:
case 16:
break;
- case 24:
- reg |= LCD_V2_TFT_24BPP_MODE;
case 32:
reg |= LCD_V2_TFT_24BPP_UNPACK;
+ case 24:
+ reg |= LCD_V2_TFT_24BPP_MODE;
break;
case 8:
--
1.7.12
^ permalink raw reply related
* [PATCH v4 00/12] video: da8xx-fb: am335x DT support
From: Afzal Mohammed @ 2013-01-23 11:59 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
Hi,
This series adds DT support to da8xx-fb driver (device found on
DaVinci and AM335x SoC's). It does certain cleanup's in the process.
This series as compared to previous version uses new registration
interface for clock divider that has constraints on minimum divider
value.
This makes use of Steffen Trumtrar's v16 of display timing DT support.
Testing has been done on AM335x SoC based boards like AM335x EVM. It
has also been verified that display on DA850 EVM (non-DT boot) works
as earlier.
This series is based on v3.8-rc3,
and is dependent on,
1. Series v16 "of: add display helper" by,
Steffen Trumtrar <s.trumtrar@pengutronix.de>
2. Patch "da8xx: Allow use by am33xx based devices" by,
Pantelis Antoniou <panto@antoniou-consulting.com>
3. Series v3 "video: da8xx-fb: runtime timing configuration" by,
me (Afzal Mohammed <afzal@ti.com>)
To test this series on AM335x based boards,
1. Series v2 "ARM: dts: AM33XX: lcdc support" by,
me (Afzal Mohammed <afzal@ti.com>),
2. Series "HWMOD fixes for AM33xx PWM submodules and device tree nodes" by,
Philip, Avinash <avinashphilip@ti.com>
3. Series v2 "clk: divider: prepare for minimum divider" by,
me (Afzal Mohammed <afzal@ti.com>),
4. Series v2 "ARM: AM335x: LCDC platform support" by,
me (Afzal Mohammed <afzal@ti.com>),
would be needed.
All above dependencies along with those required for testing is available
@ git://gitorious.org/x0148406-public/linux-kernel.git tags/da8xx-fb-dt-v4
Regards
Afzal
v4: use new registration for clock divider having minimum divider
requirement and have ifdef'ery in a better way
v3: model CCF clock divider with parent propogation if CCF selected
v2: 2 new patches - one to configure clock rate properly (12/12)and
other to make io operations safe (1/12)
Afzal Mohammed (11):
video: da8xx-fb: make io operations safe
video: da8xx-fb: enable sync lost intr for v2 ip
video: da8xx-fb: use devres
video: da8xx-fb: ensure non-null cfg in pdata
video: da8xx-fb: reorganize panel detection
video: da8xx-fb: minimal dt support
video: da8xx-fb: invoke platform callback safely
video: da8xx-fb: obtain fb_videomode info from dt
video: da8xx-fb: ensure pdata only for non-dt
video: da8xx-fb: setup struct lcd_ctrl_config for dt
video: da8xx-fb: CCF clock divider handling
Manjunathappa, Prakash (1):
video: da8xx-fb: fix 24bpp raster configuration
.../devicetree/bindings/video/fb-da8xx.txt | 37 ++++
drivers/video/da8xx-fb.c | 222 ++++++++++++++++-----
2 files changed, 206 insertions(+), 53 deletions(-)
create mode 100644 Documentation/devicetree/bindings/video/fb-da8xx.txt
--
1.7.12
^ permalink raw reply
* [PATCH v4 01/12] video: da8xx-fb: make io operations safe
From: Afzal Mohammed @ 2013-01-23 11:59 UTC (permalink / raw)
To: linux-fbdev, linux-omap, devicetree-discuss, linux-doc,
linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley, Mike Turquette
In-Reply-To: <cover.1358937685.git.afzal@ti.com>
Replace __raw_readl/__raw_writel with readl/writel; this driver is
reused on ARMv7 (AM335x SoC).
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
v2: new patch
drivers/video/da8xx-fb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 720604c..35a33ca 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -141,12 +141,12 @@ static int frame_done_flag;
static inline unsigned int lcdc_read(unsigned int addr)
{
- return (unsigned int)__raw_readl(da8xx_fb_reg_base + (addr));
+ return (unsigned int)readl(da8xx_fb_reg_base + (addr));
}
static inline void lcdc_write(unsigned int val, unsigned int addr)
{
- __raw_writel(val, da8xx_fb_reg_base + (addr));
+ writel(val, da8xx_fb_reg_base + (addr));
}
struct da8xx_fb_par {
--
1.7.12
^ permalink raw reply related
* RE: [PATCH v3 00/12] video: da8xx-fb: am335x DT support
From: Mohammed, Afzal @ 2013-01-23 12:27 UTC (permalink / raw)
To: Rob Clark, Koen Kooi
Cc: linux-fbdev@vger.kernel.org, linux-omap@vger.kernel.org,
linux-kernel@vger.kernel.org, Florian Tobias Schandinat,
Valkeinen, Tomi, Grant Likely, Rob Herring, Rob Landley,
Steffen Trumtrar, Mike Turquette
In-Reply-To: <CAF6AEGuyb26EZ_9=GP9gs0TZqUtiFv3D_7+wcDOHuKn2qUcytQ@mail.gmail.com>
SGksDQoNCk9uIFdlZCwgSmFuIDIzLCAyMDEzIGF0IDAwOjE1OjA5LCBSb2IgQ2xhcmsgd3JvdGU6
DQoNCj4gPiBXb3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8gZGVsZXRlIGRhOHh4LWZiLiogYW5kIHN3
aXRjaCB0byBSb2IgQ2xhcmtzIERSTSBiYXNlZCBkcml2ZXIgZm9yIHRoaXMgSVAgYmxvY2s/DQoN
Cj4gd2UgcHJvYmFibHkgY2FuJ3QgZGVsZXRlIGRhOHh4LWZiLCBidXQgSSB0aGluayBpdCB3b3Vs
ZCBiZSBvayB0byBvbmx5DQo+IHVzZSBpdCBmb3IgbGVnYWN5IHBsYXRmb3JtcyBub3QgeWV0IHBv
cnRlZCB0byBEVC4NCg0KV2UgY2FuJ3QgcmVtb3ZlIGRhOHh4LWZiIGFzIERBODMwIGlzIGEgbm9u
LURUIG9uZSBhbmQgREE4NTAgaXMgb25seSBnYWluaW5nDQpEVCBzdXBwb3J0Lg0KDQpBbmQgUm9i
LA0KDQpJIGFtIG5vdCBmYW1pbGlhciB3aXRoIGRybSBzZXR1cCwgd291bGQgYWxsIHRoZSB1c2Vy
IHNwYWNlIGZyYW1lIGJ1ZmZlciBiYXNlZA0KYXBwbGljYXRpb25zIHdvcmsgYXMgaXMgd2l0aCBk
cm0gZHJpdmVyPw0KDQpSZWdhcmRzDQpBZnphbA0K
^ permalink raw reply
* RE: [PATCH v2 12/12] video: da8xx-fb: set upstream clock rate (if reqd)
From: Mohammed, Afzal @ 2013-01-23 13:00 UTC (permalink / raw)
To: Nori, Sekhar, Mike Turquette
Cc: Florian Tobias Schandinat, Valkeinen, Tomi, Grant Likely,
Rob Herring, Rob Landley, linux-omap@vger.kernel.org,
linux-fbdev@vger.kernel.org, devicetree-discuss@lists.ozlabs.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
In-Reply-To: <50F63452.1060004@ti.com>
SGkgTWlrZSwNCg0KT24gV2VkLCBKYW4gMTYsIDIwMTMgYXQgMTA6MzI6MTAsIE5vcmksIFNla2hh
ciB3cm90ZToNCj4gT24gMS8xNS8yMDEzIDk6MDIgUE0sIE1pa2UgVHVycXVldHRlIHdyb3RlOg0K
PiA+IFF1b3RpbmcgQWZ6YWwgTW9oYW1tZWQgKDIwMTMtMDEtMTUgMDU6NDQ6MzYpDQoNCj4gPj4g
Tm90ZToNCj4gPj4gQSBiZXR0ZXIgKGlmIGFsbG93YWJsZSkgc29sdXRpb24gbWF5IGJlIHRvIHJl
cHJlc2VudCBjbG9jayBkaXZpZGVyIGluDQo+ID4+IExDREMgSVAgYXMgYSBiYXNpYyBkaXZpZGVy
IGNsb2NrIC0gdGhlIG9uZSBkZWZpbmVkIGluIGNvbW1vbiBjbG9jaw0KPiA+PiBmcmFtZXdvcmsu
IEJ1dCBmb3IgdGhpcyB0byBoYXBwZW4sIGFsbCB0aGUgcGxhdGZvcm0ncyB1c2luZyB0aGlzIGRy
aXZlcg0KPiA+PiBzaG91bGQgYmUgdXNpbmcgY29tbW9uIGNsb2NrIGZyYW1ld29yayAoRGFWaW5j
aSBpcyB5ZXQgdG8gYmUgY29udmVydGVkDQo+ID4+IHRvIHVzZSBjb21tb24gY2xvY2sgZnJhbWV3
b3JrKS4gQW5kIGl0IGhhcyB0byBiZSBkZXRlcm1pbmVkIHdoZXRoZXINCj4gPj4gY29tbW9uIGNs
b2NrIGZyYW1ld29yayBhbGxvd3MgdGhpcyBraW5kIG9mIGEgY2xvY2sgbW9kZWxsaW5nIGluc2lk
ZSBhDQo+ID4+IGRyaXZlciBhbmQgZm9yIHRoaXMgdG8gYmUgcGFydCBvZiBjbG9jayB0cmVlLiBB
ZHZhbnRhZ2Ugb2YgZG9pbmcgc28NCj4gPj4gd291bGQgYmUgYmV0dGVyIHJlc29sdXRpb24gZm9y
IHBpeGVsIGNsb2NrLCBldmVuIHRob3VnaCB3aXRob3V0IHRoaXMNCj4gPj4gZXhpc3RpbmcgdXNl
IGNhc2VzIGFyZSB3b3JraW5nIHByb3Blcmx5LiBPciBhbm90aGVyIGV4dHJlbWUgYWx0ZXJuYXRp
dmUNCj4gPj4gd291bGQgYmUgdG8gcmVwbGljYXRlIGNsay1kaXZpZGVyIG9mIGNvbW1vbiBjbG9j
ayBmcmFtZXdvcmsgaW5zaWRlIHRoZQ0KPiA+PiBkcml2ZXIsIGJ1dCB0aGF0IHByb2JhYmx5IGlz
IG5vdCBwcmVmZXJyZWQgYW5kIG5vdCB3b3J0aCBhcyBpdCB3b3VsZCBiZQ0KPiA+PiBkdXBsaWNh
dGlvbiBhbmQgd2l0aG91dCBtdWNoIGFkdmFudGFnZSB0byBleGlzdGluZyB1c2Vycy4NCg0KPiA+
IE1vZGVsaW5nIHRoZSBkaXZpZGVyIGluc2lkZSB5b3VyIElQIGJsb2NrIGFzIGEgY2xvY2sgaXMg
c3VwcG9ydGVkIGluIHRoZQ0KPiA+IGNvbW1vbiBjbG9jayBmcmFtZXdvcmsuICBMaW5raW5nIHVw
IHRoZXNlIHNvcnRzIG9mIGNsb2NrcyB0byB0aGUgY2xvY2sNCj4gPiB0cmVlIHdhcyBvbmUgb2Yg
dGhlIG9yaWdpbmFsIGRlc2lnbiBnb2FscyBvZiBDQ0YuDQoNCj4gPiBSZWdhcmRpbmcgRGFWaW5j
aTogY29udmVydGluZyB0aGF0IHBsYXRmb3JtIG92ZXIgdG8gdXNlIENDRiB3b3VsZCBiZSB0aGUN
Cj4gPiBiZXN0IGFwcHJvYWNoLg0KDQo+IFRoaXMgaXMgd29yayBpbiBwcm9ncmVzcy4gVGhlcmUg
YXJlIHBhdGNoZXMgdGhhdCBoYXZlIGJlZW4gcG9zdGVkLiBXb3JrDQo+IGhhcyBiZWVuIHNsb3cg
b24gdGhpcyB0aG91Z2ggZHVlIHRvIGxhY2sgb2YgYmFuZHdpZHRoLg0KDQo+ID4gQW4gYWx0ZXJu
YXRpdmUgd291bGQgYmUgdGhhdCB5b3UgY291bGQgYnJlYWsNCj4gPiBzaW5nbGUtaW1hZ2UgYm9v
dCBmb3IgQU0zMzV4IGFuZCBEYVZpbmNpLCBieSBoYXZpbmcgQU0zMzV4IHVzZSBDQ0YgYW5kDQo+
ID4gRGFWaW5jaSB1c2UgdGhlIGxlZ2FjeSBjbG9jayBmcmFtZXdvcmsuICBGcm9tIHRoZSBMQ0RD
IGRyaXZlcidzDQoNCj4gU2luZ2xlIGltYWdlIGZvciBEYVZpbmNpIGFuZCBBTTMzNXggaXMgbm90
IHBvc3NpYmxlIGFueXdheSBzaW5jZSBBUk12NQ0KPiBhbmQgQVJNdjYrIGNhbm5vdCBiZSBzdXBw
b3J0ZWQgaW4gYSBzaW5nbGUgaW1hZ2UuDQoNCj4gPiBwZXJzcGVjdGl2ZSB0aGlzIHNob3VsZCBu
b3QgbWF0dGVyIGFuZCBpcyBpbmRlZWQgdGhlIHB1cnBvc2Ugb2YgdGhlDQo+ID4gY2xrLmggYXBp
IGFuZCBjbGtkZXYgaW50ZXJmYWNlcywgaG93ZXZlciBsb29raW5nIGF0IHRoaXMgZHJpdmVyIEkg
Y2FuDQo+ID4gc2VlIHRoZXJlIHdvdWxkIHN0aWxsIGJlIGEgbG90IGlmZGVmLWVyeSBnb2luZyBv
bi4uLiBiZXR0ZXIgdG8ganVzdA0KPiA+IGNvbnZlcnQgZXZlcnl0aGluZyBvdmVyIHRvIENDRi4N
Cg0KPiBXYWl0aW5nIGZvciBEYVZpbmNpIENDRiB0byBjb21wbGV0ZSB3aWxsIGJlIHRvbyBsb25n
IGEgd2FpdC4gUHJvYmFibHkNCj4gY29udmVydCB0byBDQ0YganVzdCBmb3IgQU0zMzV4IEFUTS4g
VGhlcmUgd291bGQgYmUgc29tZSBpZmRlZidyeSBidXQNCj4gaG9wZWZ1bGx5IHRoYXQgbmVlZCBu
b3QgYmUgaW5zaWRlIGZ1bmN0aW9uIGJvZGllcy4gV291bGQgaGF2ZSB0byBzZWUgdGhlDQo+IGlt
cGxlbWVudGF0aW9uLCBJIGd1ZXNzLg0KDQp2NCBwb3N0ZWQgaGFzIHRoZSBkaXZpZGVyIGluIExD
REMgSVAgbW9kZWxlZCBieSBjbG9jayBub2RlIGZvciBDQ0YsIGZvcg0Kbm9uLUNDRiAoRGFWaW5j
aSksIGV4aXN0aW5nIGxvZ2ljIGlzIGtlcHQgYXMgaXMgd2l0aCB0aGUgaGVscCBvZiBpZmRlZidz
DQooYXMgRGFWaW5jaSBtYWludGFpbmVyIG1lbnRpb25lZCB0aGF0IERhVmluY2kgQ0NGIG1heSB0
YWtlIHNvbWUgdGltZSkNCg0KUmVnYXJkcw0KQWZ6YWwNCg0KDQo
^ permalink raw reply
* Re: [PATCH v3 00/12] video: da8xx-fb: am335x DT support
From: Rob Clark @ 2013-01-23 14:25 UTC (permalink / raw)
To: Mohammed, Afzal
Cc: Koen Kooi, linux-fbdev@vger.kernel.org,
linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org,
Florian Tobias Schandinat, Valkeinen, Tomi, Grant Likely,
Rob Herring, Rob Landley, Steffen Trumtrar, Mike Turquette
In-Reply-To: <C8443D0743D26F4388EA172BF4E2A7A93EA911BF@DBDE01.ent.ti.com>
On Wed, Jan 23, 2013 at 6:27 AM, Mohammed, Afzal <afzal@ti.com> wrote:
> Hi,
>
> On Wed, Jan 23, 2013 at 00:15:09, Rob Clark wrote:
>
>> > Wouldn't it be better to delete da8xx-fb.* and switch to Rob Clarks DRM based driver for this IP block?
>
>> we probably can't delete da8xx-fb, but I think it would be ok to only
>> use it for legacy platforms not yet ported to DT.
>
> We can't remove da8xx-fb as DA830 is a non-DT one and DA850 is only gaining
> DT support.
>
> And Rob,
>
> I am not familiar with drm setup, would all the user space frame buffer based
> applications work as is with drm driver?
drm does provide a legacy fbdev interface (needed for fbcon, for
example). I don't think da8xx-fb has any custom ioctls, so probably
what drm provides should be enough.
BR,
-R
> Regards
> Afzal
^ permalink raw reply
* [PATCH 0/2] fbcon+i915 locking fixes
From: Daniel Vetter @ 2013-01-23 16:25 UTC (permalink / raw)
To: Dave Airlie
Cc: Daniel Vetter, Intel Graphics Development, linux-fbdev-devel,
LKML, DRI Development
Hi Dave,
First patch is a resend of Alan's fbcon vs. fb notifier deadlock fix.
Without this lockdep is pretty much useless for debugging drm locking
issues, and it looks like quite a few bootup hangs could be blamed on this
one, too.
Since the fbdev maintainer seems to be awol, please merge this through
your drm tree. I've looked through the patch and the new locking seems to
be sane so feel free to smash a
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
onto it.
2nd patch is a locking bug in the i915 driver with the new kms locking.
Since the bug only happens in your drm-next tree, please apply the patch
there directly.
Thanks, Daniel
Alan Cox (1):
fb: Rework locking to fix lock ordering on takeover
Daniel Vetter (1):
drm/i915: fixup crtc locking in intel_release_load_detect_pipe
drivers/gpu/drm/i915/intel_display.c | 1 +
drivers/tty/vt/vt.c | 81 ++++++++++++++++++++++++++--------
drivers/video/console/fbcon.c | 30 ++++++++++++-
drivers/video/fbmem.c | 5 +--
drivers/video/fbsysfs.c | 3 ++
include/linux/console.h | 1 +
6 files changed, 98 insertions(+), 23 deletions(-)
--
1.7.10.4
^ permalink raw reply
* [PATCH 1/2] fb: Rework locking to fix lock ordering on takeover
From: Daniel Vetter @ 2013-01-23 16:25 UTC (permalink / raw)
To: Dave Airlie
Cc: Intel Graphics Development, DRI Development, LKML,
linux-fbdev-devel, Alan Cox, Alan Cox, Daniel Vetter
In-Reply-To: <1358958309-5342-1-git-send-email-daniel.vetter@ffwll.ch>
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
Adjust the console layer to allow a take over call where the caller already
holds the locks. Make the fb layer lock in order.
This s partly a band aid, the fb layer is terminally confused about the
locking rules it uses for its notifiers it seems.
Signed-off-by: Alan Cox <alan@linux.intel.com>
[danvet: Tiny whitespace cleanup.]
Reported-and-tested-by: Hugh Dickins <hughd@google.com>
Reported-and-tested-by: Sasha Levin <levinsasha928@gmail.com>
References: https://lkml.org/lkml/2012/10/25/516
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/tty/vt/vt.c | 81 +++++++++++++++++++++++++++++++----------
drivers/video/console/fbcon.c | 30 ++++++++++++++-
drivers/video/fbmem.c | 5 +--
drivers/video/fbsysfs.c | 3 ++
include/linux/console.h | 1 +
5 files changed, 97 insertions(+), 23 deletions(-)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 8fd8968..a38d9d1 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -2987,7 +2987,7 @@ int __init vty_init(const struct file_operations *console_fops)
static struct class *vtconsole_class;
-static int bind_con_driver(const struct consw *csw, int first, int last,
+static int do_bind_con_driver(const struct consw *csw, int first, int last,
int deflt)
{
struct module *owner = csw->owner;
@@ -2998,7 +2998,7 @@ static int bind_con_driver(const struct consw *csw, int first, int last,
if (!try_module_get(owner))
return -ENODEV;
- console_lock();
+ WARN_CONSOLE_UNLOCKED();
/* check if driver is registered */
for (i = 0; i < MAX_NR_CON_DRIVER; i++) {
@@ -3083,11 +3083,22 @@ static int bind_con_driver(const struct consw *csw, int first, int last,
retval = 0;
err:
- console_unlock();
module_put(owner);
return retval;
};
+
+static int bind_con_driver(const struct consw *csw, int first, int last,
+ int deflt)
+{
+ int ret;
+
+ console_lock();
+ ret = do_bind_con_driver(csw, first, last, deflt);
+ console_unlock();
+ return ret;
+}
+
#ifdef CONFIG_VT_HW_CONSOLE_BINDING
static int con_is_graphics(const struct consw *csw, int first, int last)
{
@@ -3199,9 +3210,9 @@ int unbind_con_driver(const struct consw *csw, int first, int last, int deflt)
if (!con_is_bound(csw))
con_driver->flag &= ~CON_DRIVER_FLAG_INIT;
- console_unlock();
/* ignore return value, binding should not fail */
- bind_con_driver(defcsw, first, last, deflt);
+ do_bind_con_driver(defcsw, first, last, deflt);
+ console_unlock();
err:
module_put(owner);
return retval;
@@ -3492,28 +3503,18 @@ int con_debug_leave(void)
}
EXPORT_SYMBOL_GPL(con_debug_leave);
-/**
- * register_con_driver - register console driver to console layer
- * @csw: console driver
- * @first: the first console to take over, minimum value is 0
- * @last: the last console to take over, maximum value is MAX_NR_CONSOLES -1
- *
- * DESCRIPTION: This function registers a console driver which can later
- * bind to a range of consoles specified by @first and @last. It will
- * also initialize the console driver by calling con_startup().
- */
-int register_con_driver(const struct consw *csw, int first, int last)
+static int do_register_con_driver(const struct consw *csw, int first, int last)
{
struct module *owner = csw->owner;
struct con_driver *con_driver;
const char *desc;
int i, retval = 0;
+ WARN_CONSOLE_UNLOCKED();
+
if (!try_module_get(owner))
return -ENODEV;
- console_lock();
-
for (i = 0; i < MAX_NR_CON_DRIVER; i++) {
con_driver = ®istered_con_driver[i];
@@ -3566,10 +3567,29 @@ int register_con_driver(const struct consw *csw, int first, int last)
}
err:
- console_unlock();
module_put(owner);
return retval;
}
+
+/**
+ * register_con_driver - register console driver to console layer
+ * @csw: console driver
+ * @first: the first console to take over, minimum value is 0
+ * @last: the last console to take over, maximum value is MAX_NR_CONSOLES -1
+ *
+ * DESCRIPTION: This function registers a console driver which can later
+ * bind to a range of consoles specified by @first and @last. It will
+ * also initialize the console driver by calling con_startup().
+ */
+int register_con_driver(const struct consw *csw, int first, int last)
+{
+ int retval;
+
+ console_lock();
+ retval = do_register_con_driver(csw, first, last);
+ console_unlock();
+ return retval;
+}
EXPORT_SYMBOL(register_con_driver);
/**
@@ -3625,6 +3645,29 @@ EXPORT_SYMBOL(unregister_con_driver);
*
* take_over_console is basically a register followed by unbind
*/
+int do_take_over_console(const struct consw *csw, int first, int last, int deflt)
+{
+ int err;
+
+ err = do_register_con_driver(csw, first, last);
+ /* if we get an busy error we still want to bind the console driver
+ * and return success, as we may have unbound the console driver
+ * but not unregistered it.
+ */
+ if (err == -EBUSY)
+ err = 0;
+ if (!err)
+ do_bind_con_driver(csw, first, last, deflt);
+
+ return err;
+}
+/*
+ * If we support more console drivers, this function is used
+ * when a driver wants to take over some existing consoles
+ * and become default driver for newly opened ones.
+ *
+ * take_over_console is basically a register followed by unbind
+ */
int take_over_console(const struct consw *csw, int first, int last, int deflt)
{
int err;
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index fdefa8f..c75f8ce 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -529,6 +529,34 @@ static int search_for_mapped_con(void)
return retval;
}
+static int do_fbcon_takeover(int show_logo)
+{
+ int err, i;
+
+ if (!num_registered_fb)
+ return -ENODEV;
+
+ if (!show_logo)
+ logo_shown = FBCON_LOGO_DONTSHOW;
+
+ for (i = first_fb_vc; i <= last_fb_vc; i++)
+ con2fb_map[i] = info_idx;
+
+ err = do_take_over_console(&fb_con, first_fb_vc, last_fb_vc,
+ fbcon_is_default);
+
+ if (err) {
+ for (i = first_fb_vc; i <= last_fb_vc; i++) {
+ con2fb_map[i] = -1;
+ }
+ info_idx = -1;
+ } else {
+ fbcon_has_console_bind = 1;
+ }
+
+ return err;
+}
+
static int fbcon_takeover(int show_logo)
{
int err, i;
@@ -3115,7 +3143,7 @@ static int fbcon_fb_registered(struct fb_info *info)
}
if (info_idx != -1)
- ret = fbcon_takeover(1);
+ ret = do_fbcon_takeover(1);
} else {
for (i = first_fb_vc; i <= last_fb_vc; i++) {
if (con2fb_map_boot[i] == idx)
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 3ff0105..d8d9831 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1650,7 +1650,9 @@ static int do_register_framebuffer(struct fb_info *fb_info)
event.info = fb_info;
if (!lock_fb_info(fb_info))
return -ENODEV;
+ console_lock();
fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event);
+ console_unlock();
unlock_fb_info(fb_info);
return 0;
}
@@ -1853,11 +1855,8 @@ int fb_new_modelist(struct fb_info *info)
err = 1;
if (!list_empty(&info->modelist)) {
- if (!lock_fb_info(info))
- return -ENODEV;
event.info = info;
err = fb_notifier_call_chain(FB_EVENT_NEW_MODELIST, &event);
- unlock_fb_info(info);
}
return err;
diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c
index a55e366..ef476b0 100644
--- a/drivers/video/fbsysfs.c
+++ b/drivers/video/fbsysfs.c
@@ -177,6 +177,8 @@ static ssize_t store_modes(struct device *device,
if (i * sizeof(struct fb_videomode) != count)
return -EINVAL;
+ if (!lock_fb_info(fb_info))
+ return -ENODEV;
console_lock();
list_splice(&fb_info->modelist, &old_list);
fb_videomode_to_modelist((const struct fb_videomode *)buf, i,
@@ -188,6 +190,7 @@ static ssize_t store_modes(struct device *device,
fb_destroy_modelist(&old_list);
console_unlock();
+ unlock_fb_info(fb_info);
return 0;
}
diff --git a/include/linux/console.h b/include/linux/console.h
index dedb082..4ef4307 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -78,6 +78,7 @@ int con_is_bound(const struct consw *csw);
int register_con_driver(const struct consw *csw, int first, int last);
int unregister_con_driver(const struct consw *csw);
int take_over_console(const struct consw *sw, int first, int last, int deflt);
+int do_take_over_console(const struct consw *sw, int first, int last, int deflt);
void give_up_console(const struct consw *sw);
#ifdef CONFIG_HW_CONSOLE
int con_debug_enter(struct vc_data *vc);
--
1.7.10.4
^ permalink raw reply related
* [PATCH 2/2] drm/i915: fixup per-crtc locking in intel_release_load_detect_pipe
From: Daniel Vetter @ 2013-01-23 16:25 UTC (permalink / raw)
To: Dave Airlie
Cc: Intel Graphics Development, DRI Development, LKML,
linux-fbdev-devel, Daniel Vetter
In-Reply-To: <1358958309-5342-1-git-send-email-daniel.vetter@ffwll.ch>
One of the early return cases missed the mutex unlocking. Hilarity
ensued.
This regression has been introduced in
commit 7b24056be6db7ce907baffdd4cf142ab774ea60c
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Wed Dec 12 00:35:33 2012 +0100
drm: don't hold crtc mutexes for connector ->detect callbacks
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59750
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/intel_display.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 26df9e3..ece4afd 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6522,6 +6522,7 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
drm_framebuffer_unreference(old->release_fb);
}
+ mutex_unlock(&crtc->mutex);
return;
}
--
1.7.10.4
^ permalink raw reply related
* Re: [PATCH 1/2] fb: Rework locking to fix lock ordering on takeover
From: Takashi Iwai @ 2013-01-23 16:38 UTC (permalink / raw)
To: Daniel Vetter
Cc: Dave Airlie, Intel Graphics Development, DRI Development, LKML,
linux-fbdev-devel, Alan Cox, Alan Cox
In-Reply-To: <1358958309-5342-2-git-send-email-daniel.vetter@ffwll.ch>
At Wed, 23 Jan 2013 17:25:08 +0100,
Daniel Vetter wrote:
>
> From: Alan Cox <alan@lxorguk.ukuu.org.uk>
>
> Adjust the console layer to allow a take over call where the caller already
> holds the locks. Make the fb layer lock in order.
>
> This s partly a band aid, the fb layer is terminally confused about the
> locking rules it uses for its notifiers it seems.
>
> Signed-off-by: Alan Cox <alan@linux.intel.com>
> [danvet: Tiny whitespace cleanup.]
> Reported-and-tested-by: Hugh Dickins <hughd@google.com>
> Reported-and-tested-by: Sasha Levin <levinsasha928@gmail.com>
> References: https://lkml.org/lkml/2012/10/25/516
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
FYI, the latest patch of this is found in mm tree:
http://ozlabs.org/~akpm/mmots/broken-out/fb-rework-locking-to-fix-lock-ordering-on-takeover.patch
Also I hit the same problem in another code paths (for unbind and
unregister):
http://marc.info/?t=135309396400003&r=1&w=2
My additional patch is found in mm tree, too:
http://ozlabs.org/~akpm/mmots/broken-out/fb-yet-another-band-aid-for-fixing-lockdep-mess.patch
Takashi
^ permalink raw reply
* Re: [PATCH 1/2] fb: Rework locking to fix lock ordering on takeover
From: Daniel Vetter @ 2013-01-23 16:49 UTC (permalink / raw)
To: Takashi Iwai
Cc: linux-fbdev-devel, Intel Graphics Development, LKML,
DRI Development, Andrew Morton, Alan Cox, Alan Cox
In-Reply-To: <s5hk3r3etwt.wl%tiwai@suse.de>
On Wed, Jan 23, 2013 at 5:38 PM, Takashi Iwai <tiwai@suse.de> wrote:
> At Wed, 23 Jan 2013 17:25:08 +0100,
> Daniel Vetter wrote:
>>
>> From: Alan Cox <alan@lxorguk.ukuu.org.uk>
>>
>> Adjust the console layer to allow a take over call where the caller already
>> holds the locks. Make the fb layer lock in order.
>>
>> This s partly a band aid, the fb layer is terminally confused about the
>> locking rules it uses for its notifiers it seems.
>>
>> Signed-off-by: Alan Cox <alan@linux.intel.com>
>> [danvet: Tiny whitespace cleanup.]
>> Reported-and-tested-by: Hugh Dickins <hughd@google.com>
>> Reported-and-tested-by: Sasha Levin <levinsasha928@gmail.com>
>> References: https://lkml.org/lkml/2012/10/25/516
>> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> FYI, the latest patch of this is found in mm tree:
> http://ozlabs.org/~akpm/mmots/broken-out/fb-rework-locking-to-fix-lock-ordering-on-takeover.patch
>
> Also I hit the same problem in another code paths (for unbind and
> unregister):
> http://marc.info/?t=135309396400003&r=1&w=2
>
> My additional patch is found in mm tree, too:
> http://ozlabs.org/~akpm/mmots/broken-out/fb-yet-another-band-aid-for-fixing-lockdep-mess.patch
Indeed, there's more stuff :( And I've missed the export_symbol fix
for the first patch. Still, is there any chance we can at least merge
the first one (I don't think that many people unload framebuffers)
into 3.8 with cc: stable? I'd like to get at least rid of the known
deadlocks at kms takeover time, since we have quite a few unexplained
such bug reports floating around ... Andrew, Dave?
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply
* Re: [PATCH v4 12/12] video: da8xx-fb: CCF clock divider handling
From: Mike Turquette @ 2013-01-23 20:22 UTC (permalink / raw)
To: Afzal Mohammed, linux-fbdev, linux-omap, devicetree-discuss,
linux-doc, linux-kernel
Cc: Florian Tobias Schandinat, Tomi Valkeinen, Grant Likely,
Rob Herring, Rob Landley
In-Reply-To: <fa8dab522507e087d5a94bac13dda71544911707.1358937685.git.afzal@ti.com>
Quoting Afzal Mohammed (2013-01-23 03:48:56)
<snip>
> +static inline void da8xx_fb_clkc_enable(void)
> +{
> if (lcd_revision = LCD_VERSION_2)
> lcdc_write(LCD_V2_DMA_CLK_EN | LCD_V2_LIDD_CLK_EN |
> LCD_V2_CORE_CLK_EN, LCD_CLK_ENABLE_REG);
> }
>
> -static inline void da8xx_fb_calc_config_clk_divider(struct da8xx_fb_par *par,
> +#ifdef CONFIG_COMMON_CLK
> +static inline int da8xx_fb_calc_config_clk_divider(struct da8xx_fb_par *par,
> + struct fb_videomode *mode)
> +{
> + int ret;
> +
> + ret = clk_set_rate(par->child_clk, PICOS2KHZ(mode->pixclock) * 1000);
> + if (IS_ERR_VALUE(ret)) {
> + dev_err(par->dev, "unable to setup pixel clock of %u ps",
> + mode->pixclock);
> + return ret;
> + }
> + da8xx_fb_clkc_enable();
It looks like you are using the legacy method to enable/disable the
clock and using the CCF basic divider to set the rate. This feels a bit
hacky to me. If you want to model your clock in CCF then you should
probably model the whole clock, not just the rate-change aspects of it.
Have you looked at the composite clock patches from Prashant? Those
might give you the divider+gate properties that you are looking for:
http://article.gmane.org/gmane.linux.kernel/1416697
Regards,
Mike
^ permalink raw reply
* Re: [PATCH v16 RESEND 0/7] of: add display helper
From: Dave Airlie @ 2013-01-24 0:15 UTC (permalink / raw)
To: Steffen Trumtrar
Cc: Rob Clark, devicetree-discuss, David Airlie, Rob Herring,
linux-fbdev, dri-devel, Laurent Pinchart, Thierry Reding,
Guennady Liakhovetski, linux-media, Tomi Valkeinen,
Stephen Warren, Florian Tobias Schandinat, Leela Krishna Amudala,
Mohammed, Afzal, kernel
In-Reply-To: <20130123091202.GA11828@pengutronix.de>
>> > Hi!
>> >
>> > There was still no maintainer, that commented, ack'd, nack'd, apply'd the
>> > series. So, this is just a resend.
>> > The patches were tested with:
>> >
>> > - v15 on Tegra by Thierry
>> > - sh-mobile-lcdcfb by Laurent
>> > - MX53QSB by Marek
>> > - Exynos: smdk5250 by Leela
>> > - AM335X EVM & AM335X EVM-SK by Afzal
>> > - imx6q: sabrelite, sabresd by Philipp and me
>> > - imx53: tqma53/mba53 by me
>>
>>
>> btw, you can add my tested-by for this series.. I've been using them
>> for the tilcdc lcd-panel output driver support.
>>
>
> Thanks. The more drivers the merrier ;-)
>
I'll probably merge these via my tree for lack of anyone else doing
it. I just don't want to end up as the fbdev maintainer by default,
maybe if we move the console stuff out of drivers/video to somewhere
else I'd be willing to look after it, but the thought of maintaining
fbdev drivers would drive me to a liver transplant.
Dave.
^ permalink raw reply
* Re: [PATCH v16 RESEND 0/7] of: add display helper
From: Leela Krishna Amudala @ 2013-01-24 5:26 UTC (permalink / raw)
To: Steffen Trumtrar
Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA, Mohammed, Afzal, David Airlie,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
Florian Tobias Schandinat,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Rob Clark,
Tomi Valkeinen, Laurent Pinchart, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
Guennady Liakhovetski, linux-media-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20130123091202.GA11828-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Steffen,
You can add my tested-by for this series.. :)
I have been using them for Exynos: smdk5250 board.
On Wed, Jan 23, 2013 at 2:42 PM, Steffen Trumtrar
<s.trumtrar@pengutronix.de> wrote:
> On Tue, Jan 22, 2013 at 03:50:48PM -0600, Rob Clark wrote:
>> On Mon, Jan 21, 2013 at 5:07 AM, Steffen Trumtrar
>> <s.trumtrar@pengutronix.de> wrote:
>> > Hi!
>> >
>> > There was still no maintainer, that commented, ack'd, nack'd, apply'd the
>> > series. So, this is just a resend.
>> > The patches were tested with:
>> >
>> > - v15 on Tegra by Thierry
>> > - sh-mobile-lcdcfb by Laurent
>> > - MX53QSB by Marek
>> > - Exynos: smdk5250 by Leela
>> > - AM335X EVM & AM335X EVM-SK by Afzal
>> > - imx6q: sabrelite, sabresd by Philipp and me
>> > - imx53: tqma53/mba53 by me
>>
>>
>> btw, you can add my tested-by for this series.. I've been using them
>> for the tilcdc lcd-panel output driver support.
>>
>
> Thanks. The more drivers the merrier ;-)
>
> Steffen
>
>> >
>> >
>> > Changes since v15:
>> > - move include/linux/{videomode,display_timing}.h to include/video
>> > - move include/linux/of_{videomode,display_timing}.h to include/video
>> > - reimplement flags: add VESA flags and data flags
>> > - let pixelclock in struct videomode be unsigned long
>> > - rename of_display_timings_exists to of_display_timings_exist
>> > - revise logging/error messages: replace __func__ with np->full_name
>> > - rename pixelclk-inverted to pixelclk-active
>> > - revise comments in code
>> >
>> > Changes since v14:
>> > - fix "const struct *" warning
>> > (reported by: Leela Krishna Amudala <l.krishna@samsung.com>)
>> > - return -EINVAL when htotal or vtotal are zero
>> > - remove unreachable code in of_get_display_timings
>> > - include headers in .c files and not implicit in .h
>> > - sort includes alphabetically
>> > - fix lower/uppercase in binding documentation
>> > - rebase onto v3.7-rc7
>> >
>> > Changes since v13:
>> > - fix "const struct *" warning
>> > (reported by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>)
>> > - prevent division by zero in fb_videomode_from_videomode
>> >
>> > Changes since v12:
>> > - rename struct display_timing to via_display_timing in via subsystem
>> > - fix refreshrate calculation
>> > - fix "const struct *" warnings
>> > (reported by: Manjunathappa, Prakash <prakash.pm@ti.com>)
>> > - some CodingStyle fixes
>> > - rewrite parts of commit messages and display-timings.txt
>> > - let display_timing_get_value get all values instead of just typical
>> >
>> > Changes since v11:
>> > - make pointers const where applicable
>> > - add reviewed-by Laurent Pinchart
>> >
>> > Changes since v10:
>> > - fix function name (drm_)display_mode_from_videomode
>> > - add acked-by, reviewed-by, tested-by
>> >
>> > Changes since v9:
>> > - don't leak memory when previous timings were correct
>> > - CodingStyle fixes
>> > - move blank lines around
>> >
>> > Changes since v8:
>> > - fix memory leaks
>> > - change API to be more consistent (foo_from_bar(struct bar, struct foo))
>> > - include headers were necessary
>> > - misc minor bugfixes
>> >
>> > Changes since v7:
>> > - move of_xxx to drivers/video
>> > - remove non-binding documentation from display-timings.txt
>> > - squash display_timings and videomode in one patch
>> > - misc minor fixes
>> >
>> > Changes since v6:
>> > - get rid of some empty lines etc.
>> > - move functions to their subsystems
>> > - split of_ from non-of_ functions
>> > - add at least some kerneldoc to some functions
>> >
>> > Changes since v5:
>> > - removed all display stuff and just describe timings
>> >
>> > Changes since v4:
>> > - refactored functions
>> >
>> > Changes since v3:
>> > - print error messages
>> > - free alloced memory
>> > - general cleanup
>> >
>> > Changes since v2:
>> > - use hardware-near property-names
>> > - provide a videomode structure
>> > - allow ranges for all properties (<min,typ,max>)
>> > - functions to get display_mode or fb_videomode
>> >
>> >
>> > Regards,
>> > Steffen
>> >
>> >
>> > Steffen Trumtrar (7):
>> > viafb: rename display_timing to via_display_timing
>> > video: add display_timing and videomode
>> > video: add of helper for display timings/videomode
>> > fbmon: add videomode helpers
>> > fbmon: add of_videomode helpers
>> > drm_modes: add videomode helpers
>> > drm_modes: add of_videomode helpers
>> >
>> > .../devicetree/bindings/video/display-timing.txt | 109 +++++++++
>> > drivers/gpu/drm/drm_modes.c | 70 ++++++
>> > drivers/video/Kconfig | 21 ++
>> > drivers/video/Makefile | 4 +
>> > drivers/video/display_timing.c | 24 ++
>> > drivers/video/fbmon.c | 94 ++++++++
>> > drivers/video/of_display_timing.c | 239 ++++++++++++++++++++
>> > drivers/video/of_videomode.c | 54 +++++
>> > drivers/video/via/hw.c | 6 +-
>> > drivers/video/via/hw.h | 2 +-
>> > drivers/video/via/lcd.c | 2 +-
>> > drivers/video/via/share.h | 2 +-
>> > drivers/video/via/via_modesetting.c | 8 +-
>> > drivers/video/via/via_modesetting.h | 6 +-
>> > drivers/video/videomode.c | 39 ++++
>> > include/drm/drmP.h | 9 +
>> > include/linux/fb.h | 8 +
>> > include/video/display_timing.h | 124 ++++++++++
>> > include/video/of_display_timing.h | 20 ++
>> > include/video/of_videomode.h | 18 ++
>> > include/video/videomode.h | 48 ++++
>> > 21 files changed, 894 insertions(+), 13 deletions(-)
>> > create mode 100644 Documentation/devicetree/bindings/video/display-timing.txt
>> > create mode 100644 drivers/video/display_timing.c
>> > create mode 100644 drivers/video/of_display_timing.c
>> > create mode 100644 drivers/video/of_videomode.c
>> > create mode 100644 drivers/video/videomode.c
>> > create mode 100644 include/video/display_timing.h
>> > create mode 100644 include/video/of_display_timing.h
>> > create mode 100644 include/video/of_videomode.h
>> > create mode 100644 include/video/videomode.h
>> >
>> > --
>> > 1.7.10.4
>> >
>>
>
> --
> Pengutronix e.K. | |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply
* Re: [PATCH 2/3] tegra: pwm-backlight: add tegra pwm-bl driver
From: Alex Courbot @ 2013-01-24 6:10 UTC (permalink / raw)
To: Thierry Reding, Richard Purdie
Cc: Stephen Warren,
linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Mark Zhang,
gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
In-Reply-To: <2178053.V0UsGT5PW9@percival>
On Wednesday 23 January 2013 17:45:39 Alex Courbot wrote:
> > I'm confused. Why would you want to call into pwm_bl directly? If we're
> > going to split this up into separate platform devices, why not look up a
> > given backlight device and use the backlight API on that? The pieces of
> > the puzzle are all there: you can use of_find_backlight_by_node() to
> > obtain a backlight device from a device tree node, so I'd expect the DT
> > to look something like this:
> > backlight: backlight {
> >
> > compatible = "pwm-backlight";
> > ...
> >
> > };
>
> This would still prevent any power control from the backlight driver. I.e.
> if someone sets the brightness to 0 through sysfs, we cannot power the
> backlight off as pwm-backlight cannot control more than the PWM without
> platform callbacks. Backlight could only be powered off as a result of a fb
> blank event.
In order to solve this, how about adding a backlight notifier call chain to
broadcast backlight events in a fashion similar to what is done in
fbmem/fbcon? Then backlight_update_status() could send events like
BACKLIGHT_EARLY_EVENT_UPDATE and BACKLIGHT_EVENT_UPDATE to which panel drivers
could subscribe in order to power the backlight up and down as needed.
Then as the backlight is mentioned in the panel's DT node,
> panel: panel {
> compatible = "...";
> ...
> backlight = <&backlight>;
> ...
> };
the panel's driver could listen to backlight-related events and do its stuff
transparently, without changing anything to the backlight drivers. This would
be a good way to replace pwm-backlight's callbacks for platforms that use the
DT, and would also be applicable to any backlight class device.
Generally speaking, having a mean to monitor backlights state in the kernel
does not seem too crazy, especially since we already have a way to notify user
space through backlight_generate_event().
Richard, does that sound ok to you?
Alex.
^ permalink raw reply
* [patch] backlight: s6e63m0: report ->gamma_table_count correctly
From: Dan Carpenter @ 2013-01-24 7:05 UTC (permalink / raw)
To: linux-fbdev
gamma_table has 3 arrays which each hold MAX_GAMMA_LEVEL pointers to
int.
The current code sets ->gamma_table_count to 6 on 64bit arches and to 3
on 32 bit arches. It should be 3 on everything.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
This is from reading the code. We use ->gamma_table_count in sysfs file
but other than that I'm not sure what it's for. I am not very familiar
with this code.
diff --git a/drivers/video/backlight/s6e63m0.c b/drivers/video/backlight/s6e63m0.c
index 2126b96..9c2677f 100644
--- a/drivers/video/backlight/s6e63m0.c
+++ b/drivers/video/backlight/s6e63m0.c
@@ -766,7 +766,7 @@ static int s6e63m0_probe(struct spi_device *spi)
* know that.
*/
lcd->gamma_table_count - sizeof(gamma_table) / (MAX_GAMMA_LEVEL * sizeof(int));
+ sizeof(gamma_table) / (MAX_GAMMA_LEVEL * sizeof(int *));
ret = device_create_file(&(spi->dev), &dev_attr_gamma_mode);
if (ret < 0)
^ permalink raw reply related
* Re: [PATCH v16 RESEND 0/7] of: add display helper
From: Steffen Trumtrar @ 2013-01-24 7:56 UTC (permalink / raw)
To: Dave Airlie
Cc: Rob Clark, devicetree-discuss, David Airlie, Rob Herring,
linux-fbdev, dri-devel, Laurent Pinchart, Thierry Reding,
Guennady Liakhovetski, linux-media, Tomi Valkeinen,
Stephen Warren, Florian Tobias Schandinat, Leela Krishna Amudala,
Mohammed, Afzal, kernel
In-Reply-To: <CAPM=9txadRcm4j7_GryvxgosEhF8S3-1rGxqR_bw8UXMaoVWug@mail.gmail.com>
On Thu, Jan 24, 2013 at 10:15:54AM +1000, Dave Airlie wrote:
> >> > Hi!
> >> >
> >> > There was still no maintainer, that commented, ack'd, nack'd, apply'd the
> >> > series. So, this is just a resend.
> >> > The patches were tested with:
> >> >
> >> > - v15 on Tegra by Thierry
> >> > - sh-mobile-lcdcfb by Laurent
> >> > - MX53QSB by Marek
> >> > - Exynos: smdk5250 by Leela
> >> > - AM335X EVM & AM335X EVM-SK by Afzal
> >> > - imx6q: sabrelite, sabresd by Philipp and me
> >> > - imx53: tqma53/mba53 by me
> >>
> >>
> >> btw, you can add my tested-by for this series.. I've been using them
> >> for the tilcdc lcd-panel output driver support.
> >>
> >
> > Thanks. The more drivers the merrier ;-)
> >
>
> I'll probably merge these via my tree for lack of anyone else doing
> it. I just don't want to end up as the fbdev maintainer by default,
\o/ very good to hear. Thanks.
> maybe if we move the console stuff out of drivers/video to somewhere
Okay. That confused me for a second, but it doesn't seem to be directed at
me *phew*.
> else I'd be willing to look after it, but the thought of maintaining
> fbdev drivers would drive me to a liver transplant.
>
> Dave.
>
Regards,
Steffen
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply
* Re: [PATCH v16 RESEND 0/7] of: add display helper
From: Steffen Trumtrar @ 2013-01-24 8:19 UTC (permalink / raw)
To: Leela Krishna Amudala
Cc: linux-fbdev, Mohammed, Afzal, David Airlie, devicetree-discuss,
Florian Tobias Schandinat, dri-devel, Rob Clark, Tomi Valkeinen,
Laurent Pinchart, kernel, Guennady Liakhovetski, linux-media
In-Reply-To: <CAL1wa8d6wXdxgVJ=c2ma2Adm-RkF3S5ga219dSrh1fFo0L9X8w@mail.gmail.com>
On Thu, Jan 24, 2013 at 10:44:50AM +0530, Leela Krishna Amudala wrote:
> Steffen,
>
> You can add my tested-by for this series.. :)
> I have been using them for Exynos: smdk5250 board.
>
Thanks. I'll use that opportunity for a v17 that is rebased onto 3.8-rc4.
Regards,
Steffen
> On Wed, Jan 23, 2013 at 2:42 PM, Steffen Trumtrar
> <s.trumtrar@pengutronix.de> wrote:
> > On Tue, Jan 22, 2013 at 03:50:48PM -0600, Rob Clark wrote:
> >> On Mon, Jan 21, 2013 at 5:07 AM, Steffen Trumtrar
> >> <s.trumtrar@pengutronix.de> wrote:
> >> > Hi!
> >> >
> >> > There was still no maintainer, that commented, ack'd, nack'd, apply'd the
> >> > series. So, this is just a resend.
> >> > The patches were tested with:
> >> >
> >> > - v15 on Tegra by Thierry
> >> > - sh-mobile-lcdcfb by Laurent
> >> > - MX53QSB by Marek
> >> > - Exynos: smdk5250 by Leela
> >> > - AM335X EVM & AM335X EVM-SK by Afzal
> >> > - imx6q: sabrelite, sabresd by Philipp and me
> >> > - imx53: tqma53/mba53 by me
> >>
> >>
> >> btw, you can add my tested-by for this series.. I've been using them
> >> for the tilcdc lcd-panel output driver support.
> >>
> >
> > Thanks. The more drivers the merrier ;-)
> >
> > Steffen
> >
> >> >
> >> >
> >> > Changes since v15:
> >> > - move include/linux/{videomode,display_timing}.h to include/video
> >> > - move include/linux/of_{videomode,display_timing}.h to include/video
> >> > - reimplement flags: add VESA flags and data flags
> >> > - let pixelclock in struct videomode be unsigned long
> >> > - rename of_display_timings_exists to of_display_timings_exist
> >> > - revise logging/error messages: replace __func__ with np->full_name
> >> > - rename pixelclk-inverted to pixelclk-active
> >> > - revise comments in code
> >> >
> >> > Changes since v14:
> >> > - fix "const struct *" warning
> >> > (reported by: Leela Krishna Amudala <l.krishna@samsung.com>)
> >> > - return -EINVAL when htotal or vtotal are zero
> >> > - remove unreachable code in of_get_display_timings
> >> > - include headers in .c files and not implicit in .h
> >> > - sort includes alphabetically
> >> > - fix lower/uppercase in binding documentation
> >> > - rebase onto v3.7-rc7
> >> >
> >> > Changes since v13:
> >> > - fix "const struct *" warning
> >> > (reported by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>)
> >> > - prevent division by zero in fb_videomode_from_videomode
> >> >
> >> > Changes since v12:
> >> > - rename struct display_timing to via_display_timing in via subsystem
> >> > - fix refreshrate calculation
> >> > - fix "const struct *" warnings
> >> > (reported by: Manjunathappa, Prakash <prakash.pm@ti.com>)
> >> > - some CodingStyle fixes
> >> > - rewrite parts of commit messages and display-timings.txt
> >> > - let display_timing_get_value get all values instead of just typical
> >> >
> >> > Changes since v11:
> >> > - make pointers const where applicable
> >> > - add reviewed-by Laurent Pinchart
> >> >
> >> > Changes since v10:
> >> > - fix function name (drm_)display_mode_from_videomode
> >> > - add acked-by, reviewed-by, tested-by
> >> >
> >> > Changes since v9:
> >> > - don't leak memory when previous timings were correct
> >> > - CodingStyle fixes
> >> > - move blank lines around
> >> >
> >> > Changes since v8:
> >> > - fix memory leaks
> >> > - change API to be more consistent (foo_from_bar(struct bar, struct foo))
> >> > - include headers were necessary
> >> > - misc minor bugfixes
> >> >
> >> > Changes since v7:
> >> > - move of_xxx to drivers/video
> >> > - remove non-binding documentation from display-timings.txt
> >> > - squash display_timings and videomode in one patch
> >> > - misc minor fixes
> >> >
> >> > Changes since v6:
> >> > - get rid of some empty lines etc.
> >> > - move functions to their subsystems
> >> > - split of_ from non-of_ functions
> >> > - add at least some kerneldoc to some functions
> >> >
> >> > Changes since v5:
> >> > - removed all display stuff and just describe timings
> >> >
> >> > Changes since v4:
> >> > - refactored functions
> >> >
> >> > Changes since v3:
> >> > - print error messages
> >> > - free alloced memory
> >> > - general cleanup
> >> >
> >> > Changes since v2:
> >> > - use hardware-near property-names
> >> > - provide a videomode structure
> >> > - allow ranges for all properties (<min,typ,max>)
> >> > - functions to get display_mode or fb_videomode
> >> >
> >> >
> >> > Regards,
> >> > Steffen
> >> >
> >> >
> >> > Steffen Trumtrar (7):
> >> > viafb: rename display_timing to via_display_timing
> >> > video: add display_timing and videomode
> >> > video: add of helper for display timings/videomode
> >> > fbmon: add videomode helpers
> >> > fbmon: add of_videomode helpers
> >> > drm_modes: add videomode helpers
> >> > drm_modes: add of_videomode helpers
> >> >
> >> > .../devicetree/bindings/video/display-timing.txt | 109 +++++++++
> >> > drivers/gpu/drm/drm_modes.c | 70 ++++++
> >> > drivers/video/Kconfig | 21 ++
> >> > drivers/video/Makefile | 4 +
> >> > drivers/video/display_timing.c | 24 ++
> >> > drivers/video/fbmon.c | 94 ++++++++
> >> > drivers/video/of_display_timing.c | 239 ++++++++++++++++++++
> >> > drivers/video/of_videomode.c | 54 +++++
> >> > drivers/video/via/hw.c | 6 +-
> >> > drivers/video/via/hw.h | 2 +-
> >> > drivers/video/via/lcd.c | 2 +-
> >> > drivers/video/via/share.h | 2 +-
> >> > drivers/video/via/via_modesetting.c | 8 +-
> >> > drivers/video/via/via_modesetting.h | 6 +-
> >> > drivers/video/videomode.c | 39 ++++
> >> > include/drm/drmP.h | 9 +
> >> > include/linux/fb.h | 8 +
> >> > include/video/display_timing.h | 124 ++++++++++
> >> > include/video/of_display_timing.h | 20 ++
> >> > include/video/of_videomode.h | 18 ++
> >> > include/video/videomode.h | 48 ++++
> >> > 21 files changed, 894 insertions(+), 13 deletions(-)
> >> > create mode 100644 Documentation/devicetree/bindings/video/display-timing.txt
> >> > create mode 100644 drivers/video/display_timing.c
> >> > create mode 100644 drivers/video/of_display_timing.c
> >> > create mode 100644 drivers/video/of_videomode.c
> >> > create mode 100644 drivers/video/videomode.c
> >> > create mode 100644 include/video/display_timing.h
> >> > create mode 100644 include/video/of_display_timing.h
> >> > create mode 100644 include/video/of_videomode.h
> >> > create mode 100644 include/video/videomode.h
> >> >
> >> > --
> >> > 1.7.10.4
> >> >
> >>
> >
> > --
> > Pengutronix e.K. | |
> > Industrial Linux Solutions | http://www.pengutronix.de/ |
> > Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
> _______________________________________________
> devicetree-discuss mailing list
> devicetree-discuss@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/devicetree-discuss
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox