From patchwork Wed May 18 11:10:09 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damian Hobson-Garcia X-Patchwork-Id: 793442 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.3) with ESMTP id p4IBDGCa012239 for ; Wed, 18 May 2011 11:13:18 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932873Ab1ERLI5 (ORCPT ); Wed, 18 May 2011 07:08:57 -0400 Received: from mail-pw0-f46.google.com ([209.85.160.46]:32953 "EHLO mail-pw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932125Ab1ERLI4 (ORCPT ); Wed, 18 May 2011 07:08:56 -0400 Received: by pwi15 with SMTP id 15so696637pwi.19 for ; Wed, 18 May 2011 04:08:56 -0700 (PDT) Received: by 10.68.35.198 with SMTP id k6mr2829590pbj.460.1305716936243; Wed, 18 May 2011 04:08:56 -0700 (PDT) Received: from localhost.localdomain (mailhost.igel.co.jp [219.106.231.130]) by mx.google.com with ESMTPS id l9sm996508pbc.14.2011.05.18.04.08.54 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 18 May 2011 04:08:55 -0700 (PDT) From: Damian Hobson-Garcia To: lethal@linux-sh.org Cc: linux-sh@vger.kernel.org, magnus.damm@gmail.com, taki@igel.co.jp, matsu@igel.co.jp, Damian Hobson-Garcia Subject: [PATCH 4/6 v2] sh_mobile_meram: MERAM platform data for LCDC Date: Wed, 18 May 2011 20:10:09 +0900 Message-Id: <1305717011-20742-5-git-send-email-dhobsong@igel.co.jp> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1305717011-20742-1-git-send-email-dhobsong@igel.co.jp> References: <1305717011-20742-1-git-send-email-dhobsong@igel.co.jp> Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Wed, 18 May 2011 11:13:18 +0000 (UTC) Based on the patch by Takanari Hayama Add the necessary platform data to add MERAM functionality to LCDC Includes platform data for both the AP4EVB and mackerel Signed-off-by: Damian Hobson-Garcia --- Changed from V1 ===== * Changed .id from -1 to 0 in platform data * Added mackerel platform data arch/arm/mach-shmobile/board-ap4evb.c | 73 ++++++++++++++++++++++++++++++ arch/arm/mach-shmobile/board-mackerel.c | 74 +++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index 1e35fa9..d7bbca9 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c @@ -249,6 +249,31 @@ static int slot_cn7_get_cd(struct platform_device *pdev) { return !gpio_get_value(GPIO_PORT41); } +#ifdef CONFIG_FB_SH_MOBILE_MERAM +/* MERAM */ +static struct sh_mobile_meram_info meram_info = { + .addr_mode = SH_MOBILE_MERAM_MODE1, +}; + +static struct resource meram_resources[] = { + [0] = { + .name = "MERAM", + .start = 0xe8000000, + .end = 0xe81fffff, + .flags = IORESOURCE_MEM, + }, +}; + +static struct platform_device meram_device = { + .name = "sh_mobile_meram", + .id = 0, + .num_resources = ARRAY_SIZE(meram_resources), + .resource = meram_resources, + .dev = { + .platform_data = &meram_info, + }, +}; +#endif /* SH_MMCIF */ static struct resource sh_mmcif_resources[] = { @@ -431,13 +456,35 @@ const static struct fb_videomode ap4evb_lcdc_modes[] = { #endif }, }; +#ifdef CONFIG_FB_SH_MOBILE_MERAM +static struct sh_mobile_meram_cfg lcd_meram_cfg = { + .icb[0] = { + .marker_icb = 28, + .cache_icb = 24, + .meram_offset = 0x0, + .meram_size = 0x40, + }, + .icb[1] = { + .marker_icb = 29, + .cache_icb = 25, + .meram_offset = 0x40, + .meram_size = 0x40, + }, +}; +#endif static struct sh_mobile_lcdc_info lcdc_info = { +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_dev = &meram_info, +#endif .ch[0] = { .chan = LCDC_CHAN_MAINLCD, .bpp = 16, .lcd_cfg = ap4evb_lcdc_modes, .num_cfg = ARRAY_SIZE(ap4evb_lcdc_modes), +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_cfg = &lcd_meram_cfg, +#endif } }; @@ -708,15 +755,38 @@ static struct platform_device fsi_device = { static struct platform_device fsi_ak4643_device = { .name = "sh_fsi2_a_ak4643", }; +#ifdef CONFIG_FB_SH_MOBILE_MERAM +static struct sh_mobile_meram_cfg hdmi_meram_cfg = { + .icb[0] = { + .marker_icb = 30, + .cache_icb = 26, + .meram_offset = 0x80, + .meram_size = 0x100, + }, + .icb[1] = { + .marker_icb = 31, + .cache_icb = 27, + .meram_offset = 0x180, + .meram_size = 0x100, + }, +}; +#endif static struct sh_mobile_lcdc_info sh_mobile_lcdc1_info = { .clock_source = LCDC_CLK_EXTERNAL, +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_dev = &meram_info, +#endif .ch[0] = { .chan = LCDC_CHAN_MAINLCD, .bpp = 16, .interface_type = RGB24, .clock_divider = 1, .flags = LCDC_FLAGS_DWPOL, +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_cfg = &hdmi_meram_cfg, +#endif + } }; @@ -945,6 +1015,9 @@ static struct platform_device *ap4evb_devices[] __initdata = { &csi2_device, &ceu_device, &ap4evb_camera, +#ifdef CONFIG_FB_SH_MOBILE_MERAM + &meram_device, +#endif }; static void __init hdmi_init_pm_clock(void) diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index 7da2ca2..1117ca5 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c @@ -279,6 +279,32 @@ static struct platform_device smc911x_device = { }, }; +#ifdef CONFIG_FB_SH_MOBILE_MERAM +/* MERAM */ +static struct sh_mobile_meram_info mackerel_meram_info = { + .addr_mode = SH_MOBILE_MERAM_MODE1, +}; + +static struct resource meram_resources[] = { + [0] = { + .name = "MERAM", + .start = 0xe8000000, + .end = 0xe81fffff, + .flags = IORESOURCE_MEM, + }, +}; + +static struct platform_device meram_device = { + .name = "sh_mobile_meram", + .id = 0, + .num_resources = ARRAY_SIZE(meram_resources), + .resource = meram_resources, + .dev = { + .platform_data = &mackerel_meram_info, + }, +}; +#endif + /* LCDC */ static struct fb_videomode mackerel_lcdc_modes[] = { { @@ -307,7 +333,27 @@ static int mackerel_get_brightness(void *board_data) return gpio_get_value(GPIO_PORT31); } +#ifdef CONFIG_FB_SH_MOBILE_MERAM +static struct sh_mobile_meram_cfg lcd_meram_cfg = { + .icb[0] = { + .marker_icb = 28, + .cache_icb = 24, + .meram_offset = 0x0, + .meram_size = 0x40, + }, + .icb[1] = { + .marker_icb = 29, + .cache_icb = 25, + .meram_offset = 0x40, + .meram_size = 0x40, + }, +}; +#endif + static struct sh_mobile_lcdc_info lcdc_info = { +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_dev = &mackerel_meram_info, +#endif .clock_source = LCDC_CLK_BUS, .ch[0] = { .chan = LCDC_CHAN_MAINLCD, @@ -327,6 +373,9 @@ static struct sh_mobile_lcdc_info lcdc_info = { .name = "sh_mobile_lcdc_bl", .max_brightness = 1, }, +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_cfg = &lcd_meram_cfg, +#endif } }; @@ -353,8 +402,27 @@ static struct platform_device lcdc_device = { }, }; +#ifdef CONFIG_FB_SH_MOBILE_MERAM +static struct sh_mobile_meram_cfg hdmi_meram_cfg = { + .icb[0] = { + .marker_icb = 30, + .cache_icb = 26, + .meram_offset = 0x80, + .meram_size = 0x100, + }, + .icb[1] = { + .marker_icb = 31, + .cache_icb = 27, + .meram_offset = 0x180, + .meram_size = 0x100, + }, +}; +#endif /* HDMI */ static struct sh_mobile_lcdc_info hdmi_lcdc_info = { +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_dev = &mackerel_meram_info, +#endif .clock_source = LCDC_CLK_EXTERNAL, .ch[0] = { .chan = LCDC_CHAN_MAINLCD, @@ -362,6 +430,9 @@ static struct sh_mobile_lcdc_info hdmi_lcdc_info = { .interface_type = RGB24, .clock_divider = 1, .flags = LCDC_FLAGS_DWPOL, +#ifdef CONFIG_FB_SH_MOBILE_MERAM + .meram_cfg = &hdmi_meram_cfg, +#endif } }; @@ -949,6 +1020,9 @@ static struct platform_device *mackerel_devices[] __initdata = { &mackerel_camera, &hdmi_lcdc_device, &hdmi_device, +#ifdef CONFIG_FB_SH_MOBILE_MERAM + &meram_device, +#endif }; /* Keypad Initialization */