[PATCH v4] omap4-fb: add driver
Alexander Aring
alex.aring at gmail.com
Fri Jun 14 02:29:11 EDT 2013
Hi,
On Fri, Jun 14, 2013 at 12:40:39AM +0200, Christoph Fritz wrote:
> This patch adds omap4 display controller support.
>
> Signed-off-by: Christoph Fritz <chf.fritz at googlemail.com>
> ---
> changes since v2:
> - use dev_request_mem_region_by_name()
> changes since v3:
> - remove register struct
> - use uncached screen_base
> ---
> arch/arm/mach-omap/Makefile | 1 +
> arch/arm/mach-omap/include/mach/omap4-fb.h | 46 +++
> arch/arm/mach-omap/omap4_fb.c | 27 ++
> drivers/video/Kconfig | 8 +
> drivers/video/Makefile | 1 +
> drivers/video/omap4.c | 505 ++++++++++++++++++++++++++++
> drivers/video/omap4.h | 179 ++++++++++
> 7 files changed, 767 insertions(+)
> create mode 100644 arch/arm/mach-omap/include/mach/omap4-fb.h
> create mode 100644 arch/arm/mach-omap/omap4_fb.c
> create mode 100644 drivers/video/omap4.c
> create mode 100644 drivers/video/omap4.h
>
> diff --git a/arch/arm/mach-omap/Makefile b/arch/arm/mach-omap/Makefile
> index 94e42c6..e70ddbd 100644
> --- a/arch/arm/mach-omap/Makefile
> +++ b/arch/arm/mach-omap/Makefile
> @@ -28,6 +28,7 @@ obj-$(CONFIG_OMAP3_CLOCK_CONFIG) += omap3_clock.o
> pbl-$(CONFIG_OMAP3_CLOCK_CONFIG) += omap3_clock.o
> obj-$(CONFIG_OMAP_GPMC) += gpmc.o devices-gpmc-nand.o
> obj-$(CONFIG_SHELL_NONE) += xload.o
> +obj-$(CONFIG_DRIVER_VIDEO_OMAP4) += omap4_fb.o
> obj-$(CONFIG_I2C_TWL6030) += omap4_twl6030_mmc.o
> obj-$(CONFIG_OMAP4_USBBOOT) += omap4_rom_usb.o
> obj-y += gpio.o
> diff --git a/arch/arm/mach-omap/include/mach/omap4-fb.h b/arch/arm/mach-omap/include/mach/omap4-fb.h
> new file mode 100644
> index 0000000..5c0a54b
> --- /dev/null
> +++ b/arch/arm/mach-omap/include/mach/omap4-fb.h
> @@ -0,0 +1,46 @@
...
> + fb_write(1, fbi->dispc, O4_DISPC_VID1_PIXEL_INC);
> +
> + fb_write(0xfff, fbi->dispc, O4_DISPC_VID1_PRELOAD);
> +
> + fb_write(DSS_DISPC_VIDn_ATTRIBUTES_VIDFORMAT(fmt) |
> + DSS_DISPC_VIDn_ATTRIBUTES_VIDBURSTSIZE_8x128 |
> + DSS_DISPC_VIDn_ATTRIBUTES_ZORDERENABLE |
> + DSS_DISPC_VIDn_ATTRIBUTES_CHANNELOUT2_SECONDARY_LCD,
> + fbi->dispc, O4_DISPC_VID1_ATTRIBUTES);
> +
> + while (fb_read(fbi->dispc, O4_DISPC_CONTROL2) & DSS_DISPC_CONTROL_GOLCD)
> + ; /* noop */
For busy waiting on statusbits I would prefer a mechanism like this:
start = get_time_ns();
while (condition) {
...
if (is_timeout(start, waiting_time)) {
dev_err(dev, "foo"
return -ETIMEOUT;
}
mdelay(interval);
...
}
I mean it avoid deadlocks in barebox and it's better to start linux
without a display instead of a deadlock in barebox.
On the other hand you need a waiting_time which works with all displays
together. Don't know if there any hardware dependency.
}
> +
> + fb_write(fb_read(fbi->dispc, O4_DISPC_CONTROL2) |
> + DSS_DISPC_CONTROL_GOLCD,
> + fbi->dispc, O4_DISPC_CONTROL2);
> +
> + fbi->cur_display = new_display;
> + info->xres = mode->xres;
> + info->yres = mode->yres;
> +
> + rc = 0;
> +
> +out:
> + return rc;
> +}
...
> +
> + omap4fb_reset(fbi);
> +
> + dev_add_param(fbi->dev, "bootargs", NULL, NULL, 0);
> +
Jean-Christophe PLAGNIOL-VILLARD said why we need this here in the last
mails. I don't saw any answer to this and asking myself... what do this
function?
Regards
Alex
More information about the barebox
mailing list