162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * linux/arch/arm/mach-omap2/devices.c
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * OMAP2 platform device setup/initialization
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/kernel.h>
962306a36Sopenharmony_ci#include <linux/init.h>
1062306a36Sopenharmony_ci#include <linux/platform_device.h>
1162306a36Sopenharmony_ci#include <linux/io.h>
1262306a36Sopenharmony_ci#include <linux/clk.h>
1362306a36Sopenharmony_ci#include <linux/dma-mapping.h>
1462306a36Sopenharmony_ci#include <linux/err.h>
1562306a36Sopenharmony_ci#include <linux/slab.h>
1662306a36Sopenharmony_ci#include <linux/of.h>
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#include <asm/mach-types.h>
1962306a36Sopenharmony_ci#include <asm/mach/map.h>
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#include <linux/omap-dma.h>
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci#include "iomap.h"
2462306a36Sopenharmony_ci#include "omap_hwmod.h"
2562306a36Sopenharmony_ci#include "omap_device.h"
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci#include "soc.h"
2862306a36Sopenharmony_ci#include "common.h"
2962306a36Sopenharmony_ci#include "control.h"
3062306a36Sopenharmony_ci#include "display.h"
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci#define L3_MODULES_MAX_LEN 12
3362306a36Sopenharmony_ci#define L3_MODULES 3
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci/*-------------------------------------------------------------------------*/
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_VIDEO_OMAP2_VOUT)
3862306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_FB_OMAP2)
3962306a36Sopenharmony_cistatic struct resource omap_vout_resource[3 - CONFIG_FB_OMAP2_NUM_FBS] = {
4062306a36Sopenharmony_ci};
4162306a36Sopenharmony_ci#else
4262306a36Sopenharmony_cistatic struct resource omap_vout_resource[2] = {
4362306a36Sopenharmony_ci};
4462306a36Sopenharmony_ci#endif
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_cistatic u64 omap_vout_dma_mask = DMA_BIT_MASK(32);
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cistatic struct platform_device omap_vout_device = {
4962306a36Sopenharmony_ci	.name		= "omap_vout",
5062306a36Sopenharmony_ci	.num_resources	= ARRAY_SIZE(omap_vout_resource),
5162306a36Sopenharmony_ci	.resource 	= &omap_vout_resource[0],
5262306a36Sopenharmony_ci	.id		= -1,
5362306a36Sopenharmony_ci	.dev		= {
5462306a36Sopenharmony_ci		.dma_mask		= &omap_vout_dma_mask,
5562306a36Sopenharmony_ci		.coherent_dma_mask	= DMA_BIT_MASK(32),
5662306a36Sopenharmony_ci	},
5762306a36Sopenharmony_ci};
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciint __init omap_init_vout(void)
6062306a36Sopenharmony_ci{
6162306a36Sopenharmony_ci	return platform_device_register(&omap_vout_device);
6262306a36Sopenharmony_ci}
6362306a36Sopenharmony_ci#else
6462306a36Sopenharmony_ciint __init omap_init_vout(void) { return 0; }
6562306a36Sopenharmony_ci#endif
66