[PATCH v2 3/3] ARM: shmobile: marzen: Add Display Unit support

Simon Horman horms at verge.net.au
Tue Mar 26 21:01:43 PDT 2013


On Thu, Mar 14, 2013 at 03:35:46PM +0100, Laurent Pinchart wrote:
> Only the DU0 VGA output is currently supported. Support for the DU0 LVDS
> and DU1 LVDS outputs will require information about the panels that will
> be connected to those outputs.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
> ---
>  arch/arm/configs/marzen_defconfig     |  2 ++
>  arch/arm/mach-shmobile/board-marzen.c | 65 +++++++++++++++++++++++++++++++++++
>  2 files changed, 67 insertions(+)
> 
> diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig
> index afb17d6..76f9402 100644
> --- a/arch/arm/configs/marzen_defconfig
> +++ b/arch/arm/configs/marzen_defconfig
> @@ -79,6 +79,8 @@ CONFIG_GPIO_SYSFS=y
>  CONFIG_THERMAL=y
>  CONFIG_RCAR_THERMAL=y
>  CONFIG_SSB=y
> +CONFIG_DRM=y
> +CONFIG_DRM_RCAR_DU=y
>  CONFIG_USB=y
>  CONFIG_USB_RCAR_PHY=y
>  CONFIG_MMC=y
> diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
> index cdcb799..0020506 100644
> --- a/arch/arm/mach-shmobile/board-marzen.c
> +++ b/arch/arm/mach-shmobile/board-marzen.c
> @@ -38,6 +38,7 @@
>  #include <linux/usb/ehci_pdriver.h>
>  #include <linux/usb/ohci_pdriver.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/platform_data/rcar-du.h>
>  #include <mach/hardware.h>
>  #include <mach/r8a7779.h>
>  #include <mach/common.h>
> @@ -147,6 +148,38 @@ static struct platform_device hspi_device = {
>  	.num_resources	= ARRAY_SIZE(hspi_resources),
>  };
>  
> +/* DU */
> +static struct resource rcar_du_resources[] = {
> +	[0] = {
> +		.name	= "Display Unit",
> +		.start	= 0xfff80000,
> +		.end	= 0xfffb1007,
> +		.flags	= IORESOURCE_MEM,
> +	},
> +	[1] = {
> +		.start	= gic_spi(31),
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +};
> +
> +static struct rcar_du_platform_data rcar_du_pdata = {
> +	.encoders = {
> +		[0] = {
> +			.encoder = RCAR_DU_ENCODER_VGA,
> +		},
> +	},
> +};
> +
> +static struct platform_device rcar_du_device = {
> +	.name		= "rcar-du",
> +	.num_resources	= ARRAY_SIZE(rcar_du_resources),
> +	.resource	= rcar_du_resources,
> +	.dev	= {
> +		.platform_data = &rcar_du_pdata,
> +		.coherent_dma_mask = ~0,
> +	},
> +};
> +
>  /* USB PHY */
>  static struct resource usb_phy_resources[] = {
>  	[0] = {
> @@ -173,6 +206,7 @@ static struct platform_device *marzen_devices[] __initdata = {
>  	&thermal_device,
>  	&hspi_device,
>  	&usb_phy_device,
> +	&rcar_du_device,
>  };
>  
>  /* USB */
> @@ -363,6 +397,37 @@ static void __init marzen_init(void)
>  	gpio_request(GPIO_FN_HSPI_TX0,	NULL);
>  	gpio_request(GPIO_FN_HSPI_RX0,	NULL);
>  
> +	/* Display Unit 0 (CN10: ARGB0) */
> +	gpio_request(GPIO_FN_DU0_DR7, NULL);
> +	gpio_request(GPIO_FN_DU0_DR6, NULL);
> +	gpio_request(GPIO_FN_DU0_DR5, NULL);
> +	gpio_request(GPIO_FN_DU0_DR4, NULL);
> +	gpio_request(GPIO_FN_DU0_DR3, NULL);
> +	gpio_request(GPIO_FN_DU0_DR2, NULL);
> +	gpio_request(GPIO_FN_DU0_DR1, NULL);
> +	gpio_request(GPIO_FN_DU0_DR0, NULL);
> +	gpio_request(GPIO_FN_DU0_DG7, NULL);
> +	gpio_request(GPIO_FN_DU0_DG6, NULL);
> +	gpio_request(GPIO_FN_DU0_DG5, NULL);
> +	gpio_request(GPIO_FN_DU0_DG4, NULL);
> +	gpio_request(GPIO_FN_DU0_DG3, NULL);
> +	gpio_request(GPIO_FN_DU0_DG2, NULL);
> +	gpio_request(GPIO_FN_DU0_DG1, NULL);
> +	gpio_request(GPIO_FN_DU0_DG0, NULL);
> +	gpio_request(GPIO_FN_DU0_DB7, NULL);
> +	gpio_request(GPIO_FN_DU0_DB6, NULL);
> +	gpio_request(GPIO_FN_DU0_DB5, NULL);
> +	gpio_request(GPIO_FN_DU0_DB4, NULL);
> +	gpio_request(GPIO_FN_DU0_DB3, NULL);
> +	gpio_request(GPIO_FN_DU0_DB2, NULL);
> +	gpio_request(GPIO_FN_DU0_DB1, NULL);
> +	gpio_request(GPIO_FN_DU0_DB0, NULL);
> +	gpio_request(GPIO_FN_DU0_EXVSYNC_DU0_VSYNC, NULL);
> +	gpio_request(GPIO_FN_DU0_EXHSYNC_DU0_HSYNC, NULL);
> +	gpio_request(GPIO_FN_DU0_DOTCLKOUT0, NULL);
> +	gpio_request(GPIO_FN_DU0_DOTCLKOUT1, NULL);
> +	gpio_request(GPIO_FN_DU0_DISP, NULL);
> +
>  	/* USB (CN21) */
>  	gpio_request(GPIO_FN_USB_OVC0, NULL);
>  	gpio_request(GPIO_FN_USB_OVC1, NULL);

Hi Laurent,

do you have a version of this patch that will work in conjunction with
recent pinctrl changes and adds an entry/entries to marzen_pinctrl_map[]
instead of calling gpio_request?



More information about the dri-devel mailing list