117 lines
2.6 KiB
C
117 lines
2.6 KiB
C
/* linux/arch/arm/mach-msm/board-swordfish-panel.c
|
|
*
|
|
* Copyright (c) 2009 Google Inc.
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* 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.
|
|
*
|
|
* Author: Dima Zavin <dima@android.com>
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/err.h>
|
|
|
|
#include <asm/io.h>
|
|
#include <asm/mach-types.h>
|
|
|
|
#include <mach/msm_fb.h>
|
|
|
|
#include "board-swordfish.h"
|
|
#include "devices.h"
|
|
|
|
#define CLK_NS_TO_RATE(ns) (1000000000UL / (ns))
|
|
|
|
int swordfish_panel_blank(struct msm_lcdc_panel_ops *ops)
|
|
{
|
|
/* TODO: Turn backlight off? */
|
|
return 0;
|
|
}
|
|
|
|
int swordfish_panel_unblank(struct msm_lcdc_panel_ops *ops)
|
|
{
|
|
/* TODO: Turn backlight on? */
|
|
return 0;
|
|
}
|
|
|
|
int swordfish_panel_init(struct msm_lcdc_panel_ops *ops)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static struct resource resources_msm_fb[] = {
|
|
{
|
|
.start = MSM_FB_BASE,
|
|
.end = MSM_FB_BASE + MSM_FB_SIZE,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
};
|
|
|
|
static struct msm_lcdc_timing swordfish_lcdc_timing = {
|
|
.clk_rate = CLK_NS_TO_RATE(26),
|
|
.hsync_pulse_width = 60,
|
|
.hsync_back_porch = 81,
|
|
.hsync_front_porch = 81,
|
|
.hsync_skew = 0,
|
|
.vsync_pulse_width = 2,
|
|
.vsync_back_porch = 20,
|
|
.vsync_front_porch = 27,
|
|
.vsync_act_low = 0,
|
|
.hsync_act_low = 0,
|
|
.den_act_low = 0,
|
|
};
|
|
|
|
static struct msm_fb_data swordfish_lcdc_fb_data = {
|
|
.xres = 800,
|
|
.yres = 480,
|
|
.width = 94,
|
|
.height = 57,
|
|
.output_format = 0,
|
|
};
|
|
|
|
static struct msm_lcdc_panel_ops swordfish_lcdc_panel_ops = {
|
|
.init = swordfish_panel_init,
|
|
.blank = swordfish_panel_blank,
|
|
.unblank = swordfish_panel_unblank,
|
|
};
|
|
|
|
static struct msm_lcdc_platform_data swordfish_lcdc_platform_data = {
|
|
.panel_ops = &swordfish_lcdc_panel_ops,
|
|
.timing = &swordfish_lcdc_timing,
|
|
.fb_id = 0,
|
|
.fb_data = &swordfish_lcdc_fb_data,
|
|
.fb_resource = &resources_msm_fb[0],
|
|
};
|
|
|
|
static struct platform_device swordfish_lcdc_device = {
|
|
.name = "msm_mdp_lcdc",
|
|
.id = -1,
|
|
.dev = {
|
|
.platform_data = &swordfish_lcdc_platform_data,
|
|
},
|
|
};
|
|
|
|
int __init swordfish_init_panel(void)
|
|
{
|
|
int rc;
|
|
if (!machine_is_swordfish())
|
|
return 0;
|
|
|
|
if ((rc = platform_device_register(&msm_device_mdp)) != 0)
|
|
return rc;
|
|
|
|
if ((rc = platform_device_register(&swordfish_lcdc_device)) != 0)
|
|
return rc;
|
|
|
|
return 0;
|
|
}
|
|
|
|
device_initcall(swordfish_init_panel);
|