18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * linux/arch/arm/mach-omap2/devices.c
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * OMAP2 platform device setup/initialization
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#include <linux/kernel.h>
98c2ecf20Sopenharmony_ci#include <linux/init.h>
108c2ecf20Sopenharmony_ci#include <linux/platform_device.h>
118c2ecf20Sopenharmony_ci#include <linux/io.h>
128c2ecf20Sopenharmony_ci#include <linux/clk.h>
138c2ecf20Sopenharmony_ci#include <linux/dma-mapping.h>
148c2ecf20Sopenharmony_ci#include <linux/err.h>
158c2ecf20Sopenharmony_ci#include <linux/slab.h>
168c2ecf20Sopenharmony_ci#include <linux/of.h>
178c2ecf20Sopenharmony_ci#include <linux/pinctrl/machine.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#include <asm/mach-types.h>
208c2ecf20Sopenharmony_ci#include <asm/mach/map.h>
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci#include <linux/omap-dma.h>
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci#include "iomap.h"
258c2ecf20Sopenharmony_ci#include "omap_hwmod.h"
268c2ecf20Sopenharmony_ci#include "omap_device.h"
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci#include "soc.h"
298c2ecf20Sopenharmony_ci#include "common.h"
308c2ecf20Sopenharmony_ci#include "control.h"
318c2ecf20Sopenharmony_ci#include "display.h"
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci#define L3_MODULES_MAX_LEN 12
348c2ecf20Sopenharmony_ci#define L3_MODULES 3
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci/*-------------------------------------------------------------------------*/
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_VIDEO_OMAP2_VOUT)
398c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_FB_OMAP2)
408c2ecf20Sopenharmony_cistatic struct resource omap_vout_resource[3 - CONFIG_FB_OMAP2_NUM_FBS] = {
418c2ecf20Sopenharmony_ci};
428c2ecf20Sopenharmony_ci#else
438c2ecf20Sopenharmony_cistatic struct resource omap_vout_resource[2] = {
448c2ecf20Sopenharmony_ci};
458c2ecf20Sopenharmony_ci#endif
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_cistatic u64 omap_vout_dma_mask = DMA_BIT_MASK(32);
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_cistatic struct platform_device omap_vout_device = {
508c2ecf20Sopenharmony_ci	.name		= "omap_vout",
518c2ecf20Sopenharmony_ci	.num_resources	= ARRAY_SIZE(omap_vout_resource),
528c2ecf20Sopenharmony_ci	.resource 	= &omap_vout_resource[0],
538c2ecf20Sopenharmony_ci	.id		= -1,
548c2ecf20Sopenharmony_ci	.dev		= {
558c2ecf20Sopenharmony_ci		.dma_mask		= &omap_vout_dma_mask,
568c2ecf20Sopenharmony_ci		.coherent_dma_mask	= DMA_BIT_MASK(32),
578c2ecf20Sopenharmony_ci	},
588c2ecf20Sopenharmony_ci};
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ciint __init omap_init_vout(void)
618c2ecf20Sopenharmony_ci{
628c2ecf20Sopenharmony_ci	return platform_device_register(&omap_vout_device);
638c2ecf20Sopenharmony_ci}
648c2ecf20Sopenharmony_ci#else
658c2ecf20Sopenharmony_ciint __init omap_init_vout(void) { return 0; }
668c2ecf20Sopenharmony_ci#endif
67