1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-or-later 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * File: arch/arm/plat-omap/fb.c 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Framebuffer device registration for TI OMAP platforms 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Copyright (C) 2006 Nokia Corporation 8*4882a593Smuzhiyun * Author: Imre Deak <imre.deak@nokia.com> 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/module.h> 12*4882a593Smuzhiyun #include <linux/kernel.h> 13*4882a593Smuzhiyun #include <linux/mm.h> 14*4882a593Smuzhiyun #include <linux/init.h> 15*4882a593Smuzhiyun #include <linux/platform_device.h> 16*4882a593Smuzhiyun #include <linux/memblock.h> 17*4882a593Smuzhiyun #include <linux/io.h> 18*4882a593Smuzhiyun #include <linux/omapfb.h> 19*4882a593Smuzhiyun #include <linux/dma-mapping.h> 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #include <asm/mach/map.h> 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #if IS_ENABLED(CONFIG_FB_OMAP) 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun static bool omapfb_lcd_configured; 26*4882a593Smuzhiyun static struct omapfb_platform_data omapfb_config; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun static u64 omap_fb_dma_mask = ~(u32)0; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun static struct platform_device omap_fb_device = { 31*4882a593Smuzhiyun .name = "omapfb", 32*4882a593Smuzhiyun .id = -1, 33*4882a593Smuzhiyun .dev = { 34*4882a593Smuzhiyun .dma_mask = &omap_fb_dma_mask, 35*4882a593Smuzhiyun .coherent_dma_mask = DMA_BIT_MASK(32), 36*4882a593Smuzhiyun .platform_data = &omapfb_config, 37*4882a593Smuzhiyun }, 38*4882a593Smuzhiyun .num_resources = 0, 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun omapfb_set_lcd_config(const struct omap_lcd_config * config)41*4882a593Smuzhiyunvoid __init omapfb_set_lcd_config(const struct omap_lcd_config *config) 42*4882a593Smuzhiyun { 43*4882a593Smuzhiyun omapfb_config.lcd = *config; 44*4882a593Smuzhiyun omapfb_lcd_configured = true; 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun omap_init_fb(void)47*4882a593Smuzhiyunstatic int __init omap_init_fb(void) 48*4882a593Smuzhiyun { 49*4882a593Smuzhiyun /* 50*4882a593Smuzhiyun * If the board file has not set the lcd config with 51*4882a593Smuzhiyun * omapfb_set_lcd_config(), don't bother registering the omapfb device 52*4882a593Smuzhiyun */ 53*4882a593Smuzhiyun if (!omapfb_lcd_configured) 54*4882a593Smuzhiyun return 0; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun return platform_device_register(&omap_fb_device); 57*4882a593Smuzhiyun } 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun arch_initcall(omap_init_fb); 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #else 62*4882a593Smuzhiyun omapfb_set_lcd_config(const struct omap_lcd_config * config)63*4882a593Smuzhiyunvoid __init omapfb_set_lcd_config(const struct omap_lcd_config *config) 64*4882a593Smuzhiyun { 65*4882a593Smuzhiyun } 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #endif 68