diff options
| author | Tony Lindgren <tony@atomide.com> | 2012-12-16 11:39:40 -0800 | 
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2012-12-17 10:50:40 -0800 | 
| commit | 16d60bb86e45aa7513007b4788f16fa2b968f9dd (patch) | |
| tree | 4a9acd6ba700f3484156ade2d7baf72909b0012c /arch/arm/mach-omap2/fb.c | |
| parent | 50f29fbd39835e3fd21c60a798f03f2692146ccb (diff) | |
| download | olio-linux-3.10-16d60bb86e45aa7513007b4788f16fa2b968f9dd.tar.xz olio-linux-3.10-16d60bb86e45aa7513007b4788f16fa2b968f9dd.zip  | |
ARM: OMAP: Split fb.c to remove last remaining cpu_is_omap usage
Looks like we missed plat-omap/fb.c for cpu_is_omap usage
mach-omap2. This is the last user of cpu_is_omap, so let's
quickly fix it up so we can finally remove plat/cpu.h for
omap2lus.
We want to limit cpu_is_omap macro usage to mach-omap2 only so
we can make plat/cpu.h private. After this we can finally drop
plat/cpu.h for omap2+.
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/fb.c')
| -rw-r--r-- | arch/arm/mach-omap2/fb.c | 118 | 
1 files changed, 118 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/fb.c b/arch/arm/mach-omap2/fb.c new file mode 100644 index 00000000000..d9bd965f6d0 --- /dev/null +++ b/arch/arm/mach-omap2/fb.c @@ -0,0 +1,118 @@ +/* + * Framebuffer device registration for TI OMAP platforms + * + * Copyright (C) 2006 Nokia Corporation + * Author: Imre Deak <imre.deak@nokia.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. + */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/mm.h> +#include <linux/init.h> +#include <linux/platform_device.h> +#include <linux/memblock.h> +#include <linux/io.h> +#include <linux/omapfb.h> +#include <linux/dma-mapping.h> + +#include <asm/mach/map.h> + +#include "soc.h" + +#ifdef CONFIG_OMAP2_VRFB + +/* + * The first memory resource is the register region for VRFB, + * the rest are VRFB virtual memory areas for each VRFB context. + */ + +static const struct resource omap2_vrfb_resources[] = { +	DEFINE_RES_MEM_NAMED(0x68008000u, 0x40, "vrfb-regs"), +	DEFINE_RES_MEM_NAMED(0x70000000u, 0x4000000, "vrfb-area-0"), +	DEFINE_RES_MEM_NAMED(0x74000000u, 0x4000000, "vrfb-area-1"), +	DEFINE_RES_MEM_NAMED(0x78000000u, 0x4000000, "vrfb-area-2"), +	DEFINE_RES_MEM_NAMED(0x7c000000u, 0x4000000, "vrfb-area-3"), +}; + +static const struct resource omap3_vrfb_resources[] = { +	DEFINE_RES_MEM_NAMED(0x6C000180u, 0xc0, "vrfb-regs"), +	DEFINE_RES_MEM_NAMED(0x70000000u, 0x4000000, "vrfb-area-0"), +	DEFINE_RES_MEM_NAMED(0x74000000u, 0x4000000, "vrfb-area-1"), +	DEFINE_RES_MEM_NAMED(0x78000000u, 0x4000000, "vrfb-area-2"), +	DEFINE_RES_MEM_NAMED(0x7c000000u, 0x4000000, "vrfb-area-3"), +	DEFINE_RES_MEM_NAMED(0xe0000000u, 0x4000000, "vrfb-area-4"), +	DEFINE_RES_MEM_NAMED(0xe4000000u, 0x4000000, "vrfb-area-5"), +	DEFINE_RES_MEM_NAMED(0xe8000000u, 0x4000000, "vrfb-area-6"), +	DEFINE_RES_MEM_NAMED(0xec000000u, 0x4000000, "vrfb-area-7"), +	DEFINE_RES_MEM_NAMED(0xf0000000u, 0x4000000, "vrfb-area-8"), +	DEFINE_RES_MEM_NAMED(0xf4000000u, 0x4000000, "vrfb-area-9"), +	DEFINE_RES_MEM_NAMED(0xf8000000u, 0x4000000, "vrfb-area-10"), +	DEFINE_RES_MEM_NAMED(0xfc000000u, 0x4000000, "vrfb-area-11"), +}; + +static int __init omap_init_vrfb(void) +{ +	struct platform_device *pdev; +	const struct resource *res; +	unsigned int num_res; + +	if (cpu_is_omap24xx()) { +		res = omap2_vrfb_resources; +		num_res = ARRAY_SIZE(omap2_vrfb_resources); +	} else if (cpu_is_omap34xx()) { +		res = omap3_vrfb_resources; +		num_res = ARRAY_SIZE(omap3_vrfb_resources); +	} else { +		return 0; +	} + +	pdev = platform_device_register_resndata(NULL, "omapvrfb", -1, +			res, num_res, NULL, 0); + +	if (IS_ERR(pdev)) +		return PTR_ERR(pdev); +	else +		return 0; +} + +arch_initcall(omap_init_vrfb); +#endif + +#if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) + +static u64 omap_fb_dma_mask = ~(u32)0; +static struct omapfb_platform_data omapfb_config; + +static struct platform_device omap_fb_device = { +	.name		= "omapfb", +	.id		= -1, +	.dev = { +		.dma_mask		= &omap_fb_dma_mask, +		.coherent_dma_mask	= DMA_BIT_MASK(32), +		.platform_data		= &omapfb_config, +	}, +	.num_resources = 0, +}; + +static int __init omap_init_fb(void) +{ +	return platform_device_register(&omap_fb_device); +} + +arch_initcall(omap_init_fb); + +#endif  |