Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0d55cc1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull fbdev changes from Tomi Valkeinen:
 "Nothing particularly stands out in this pull request.  The biggest
  part of the changes are cleanups.

  Maybe one fix to mention is the "fb: reorder the lock sequence to fix
  potential dead lock" which hopefully fixes the fb locking issues
  reported by multiple persons.

  There are also a few commits that have changes to arch/arm/mach-at91
  and arch/avr32, which have been acked by the maintainers"

* tag 'fbdev-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (143 commits)
  fb: reorder the lock sequence to fix potential dead lock
  fbdev: shmobile-lcdcfb: Convert to clk_prepare/unprepare
  fbdev: shmobile-hdmi: Convert to clk_prepare/unprepare
  omapdss: Add new panel driver for Topolly td028ttec1 LCD.
  video: exynos_mipi_dsi: Unlock the mutex before returning
  video: da8xx-fb: remove unwanted define
  video: Remove unnecessary semicolons
  simplefb: use write-combined remapping
  simplefb: fix unmapping fb during destruction
  OMAPDSS: connector-dvi: fix releasing i2c_adapter
  OMAPDSS: DSI: fix perf measuring ifdefs
  framebuffer: Use fb_<level>
  framebuffer: Add fb_<level> convenience logging macros
  efifb: prevent null-deref when iterating dmi_list
  fbdev: fix error return code in metronomefb_probe()
  video: xilinxfb: Fix for "Use standard variable name convention"
  OMAPDSS: Fix de_level in videomode_to_omap_video_timings()
  video: xilinxfb: Simplify error path
  video: xilinxfb: Use devm_kzalloc instead of kzalloc
  video: xilinxfb: Use standard variable name convention
  ...
parents 549608ea 3a41c5db
Loading
Loading
Loading
Loading
+75 −0
Original line number Diff line number Diff line
Atmel LCDC Framebuffer
-----------------------------------------------------

Required properties:
- compatible :
	"atmel,at91sam9261-lcdc" , 
	"atmel,at91sam9263-lcdc" ,
	"atmel,at91sam9g10-lcdc" ,
	"atmel,at91sam9g45-lcdc" ,
	"atmel,at91sam9g45es-lcdc" ,
	"atmel,at91sam9rl-lcdc" ,
	"atmel,at32ap-lcdc"
- reg : Should contain 1 register ranges(address and length)
- interrupts : framebuffer controller interrupt
- display: a phandle pointing to the display node

Required nodes:
- display: a display node is required to initialize the lcd panel
	This should be in the board dts.
- default-mode: a videomode within the display with timing parameters
	as specified below.

Example:

	fb0: fb@0x00500000 {
		compatible = "atmel,at91sam9g45-lcdc";
		reg = <0x00500000 0x1000>;
		interrupts = <23 3 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_fb>;
		display = <&display0>;
		status = "okay";
		#address-cells = <1>;
		#size-cells = <1>;

	};

Atmel LCDC Display
-----------------------------------------------------
Required properties (as per of_videomode_helper):

 - atmel,dmacon: dma controler configuration
 - atmel,lcdcon2: lcd controler configuration
 - atmel,guard-time: lcd guard time (Delay in frame periods)
 - bits-per-pixel: lcd panel bit-depth.

Optional properties (as per of_videomode_helper):
 - atmel,lcdcon-backlight: enable backlight
 - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG"
 - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed)

Example:
	display0: display {
		bits-per-pixel = <32>;
		atmel,lcdcon-backlight;
		atmel,dmacon = <0x1>;
		atmel,lcdcon2 = <0x80008002>;
		atmel,guard-time = <9>;
		atmel,lcd-wiring-mode = <1>;

		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
				clock-frequency = <9000000>;
				hactive = <480>;
				vactive = <272>;
				hback-porch = <1>;
				hfront-porch = <1>;
				vback-porch = <40>;
				vfront-porch = <1>;
				hsync-len = <45>;
				vsync-len = <1>;
			};
		};
	};
+3 −3
Original line number Diff line number Diff line
@@ -465,7 +465,7 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)

#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32);
static struct atmel_lcdfb_info lcdc_data;
static struct atmel_lcdfb_pdata lcdc_data;

static struct resource lcdc_resources[] = {
	[0] = {
@@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = {
	.num_resources	= ARRAY_SIZE(lcdc_resources),
};

void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
{
	if (!data) {
		return;
@@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
	platform_device_register(&at91_lcdc_device);
}
#else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif


+3 −3
Original line number Diff line number Diff line
@@ -832,7 +832,7 @@ void __init at91_add_device_can(struct at91_can_data *data) {}

#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32);
static struct atmel_lcdfb_info lcdc_data;
static struct atmel_lcdfb_pdata lcdc_data;

static struct resource lcdc_resources[] = {
	[0] = {
@@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = {
	.num_resources	= ARRAY_SIZE(lcdc_resources),
};

void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
{
	if (!data)
		return;
@@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
	platform_device_register(&at91_lcdc_device);
}
#else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif


+3 −3
Original line number Diff line number Diff line
@@ -965,7 +965,7 @@ void __init at91_add_device_isi(struct isi_platform_data *data,

#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32);
static struct atmel_lcdfb_info lcdc_data;
static struct atmel_lcdfb_pdata lcdc_data;

static struct resource lcdc_resources[] = {
	[0] = {
@@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = {
	.num_resources	= ARRAY_SIZE(lcdc_resources),
};

void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
{
	if (!data)
		return;
@@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
	platform_device_register(&at91_lcdc_device);
}
#else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif


+3 −3
Original line number Diff line number Diff line
@@ -498,7 +498,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) {}

#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32);
static struct atmel_lcdfb_info lcdc_data;
static struct atmel_lcdfb_pdata lcdc_data;

static struct resource lcdc_resources[] = {
	[0] = {
@@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = {
	.num_resources	= ARRAY_SIZE(lcdc_resources),
};

void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
{
	if (!data) {
		return;
@@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
	platform_device_register(&at91_lcdc_device);
}
#else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif


Loading