cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mach-smartq7.c (3652B)


      1// SPDX-License-Identifier: GPL-2.0
      2//
      3// Copyright (C) 2010 Maurus Cuelenaere
      4
      5#include <linux/fb.h>
      6#include <linux/gpio.h>
      7#include <linux/gpio_keys.h>
      8#include <linux/init.h>
      9#include <linux/input.h>
     10#include <linux/leds.h>
     11#include <linux/platform_device.h>
     12
     13#include <asm/mach-types.h>
     14#include <asm/mach/arch.h>
     15
     16#include <video/samsung_fimd.h>
     17#include "irqs.h"
     18#include "map.h"
     19#include "regs-gpio.h"
     20#include "gpio-samsung.h"
     21
     22#include "cpu.h"
     23#include "devs.h"
     24#include "fb.h"
     25#include "gpio-cfg.h"
     26
     27#include "s3c64xx.h"
     28#include "mach-smartq.h"
     29
     30static struct gpio_led smartq7_leds[] = {
     31	{
     32		.name			= "smartq7:red",
     33		.active_low		= 1,
     34		.gpio			= S3C64XX_GPN(8),
     35	},
     36	{
     37		.name			= "smartq7:green",
     38		.active_low		= 1,
     39		.gpio			= S3C64XX_GPN(9),
     40	},
     41};
     42
     43static struct gpio_led_platform_data smartq7_led_data = {
     44	.num_leds = ARRAY_SIZE(smartq7_leds),
     45	.leds = smartq7_leds,
     46};
     47
     48static struct platform_device smartq7_leds_device = {
     49	.name			= "leds-gpio",
     50	.id			= -1,
     51	.dev.platform_data	= &smartq7_led_data,
     52};
     53
     54/* Labels according to the SmartQ manual */
     55static struct gpio_keys_button smartq7_buttons[] = {
     56	{
     57		.gpio			= S3C64XX_GPL(14),
     58		.code			= KEY_POWER,
     59		.desc			= "Power",
     60		.active_low		= 1,
     61		.debounce_interval	= 5,
     62		.type                   = EV_KEY,
     63	},
     64	{
     65		.gpio			= S3C64XX_GPN(2),
     66		.code			= KEY_FN,
     67		.desc			= "Function",
     68		.active_low		= 1,
     69		.debounce_interval	= 5,
     70		.type                   = EV_KEY,
     71	},
     72	{
     73		.gpio			= S3C64XX_GPN(3),
     74		.code			= KEY_KPMINUS,
     75		.desc			= "Minus",
     76		.active_low		= 1,
     77		.debounce_interval	= 5,
     78		.type                   = EV_KEY,
     79	},
     80	{
     81		.gpio			= S3C64XX_GPN(4),
     82		.code			= KEY_KPPLUS,
     83		.desc			= "Plus",
     84		.active_low		= 1,
     85		.debounce_interval	= 5,
     86		.type                   = EV_KEY,
     87	},
     88	{
     89		.gpio			= S3C64XX_GPN(12),
     90		.code			= KEY_ENTER,
     91		.desc			= "Enter",
     92		.active_low		= 1,
     93		.debounce_interval	= 5,
     94		.type                   = EV_KEY,
     95	},
     96	{
     97		.gpio			= S3C64XX_GPN(15),
     98		.code			= KEY_ESC,
     99		.desc			= "Cancel",
    100		.active_low		= 1,
    101		.debounce_interval	= 5,
    102		.type                   = EV_KEY,
    103	},
    104};
    105
    106static struct gpio_keys_platform_data smartq7_buttons_data  = {
    107	.buttons	= smartq7_buttons,
    108	.nbuttons	= ARRAY_SIZE(smartq7_buttons),
    109};
    110
    111static struct platform_device smartq7_buttons_device  = {
    112	.name		= "gpio-keys",
    113	.id		= 0,
    114	.num_resources	= 0,
    115	.dev		= {
    116		.platform_data	= &smartq7_buttons_data,
    117	}
    118};
    119
    120static struct s3c_fb_pd_win smartq7_fb_win0 = {
    121	.max_bpp	= 32,
    122	.default_bpp	= 16,
    123	.xres		= 800,
    124	.yres		= 480,
    125};
    126
    127static struct fb_videomode smartq7_lcd_timing = {
    128	.left_margin	= 3,
    129	.right_margin	= 5,
    130	.upper_margin	= 1,
    131	.lower_margin	= 20,
    132	.hsync_len	= 10,
    133	.vsync_len	= 3,
    134	.xres		= 800,
    135	.yres		= 480,
    136	.refresh	= 80,
    137};
    138
    139static struct s3c_fb_platdata smartq7_lcd_pdata __initdata = {
    140	.setup_gpio	= s3c64xx_fb_gpio_setup_24bpp,
    141	.vtiming	= &smartq7_lcd_timing,
    142	.win[0]		= &smartq7_fb_win0,
    143	.vidcon0	= VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
    144	.vidcon1	= VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
    145			  VIDCON1_INV_VCLK,
    146};
    147
    148static struct platform_device *smartq7_devices[] __initdata = {
    149	&smartq7_leds_device,
    150	&smartq7_buttons_device,
    151};
    152
    153static void __init smartq7_machine_init(void)
    154{
    155	s3c_fb_set_platdata(&smartq7_lcd_pdata);
    156
    157	smartq_machine_init();
    158
    159	platform_add_devices(smartq7_devices, ARRAY_SIZE(smartq7_devices));
    160}
    161
    162MACHINE_START(SMARTQ7, "SmartQ 7")
    163	/* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */
    164	.atag_offset	= 0x100,
    165	.nr_irqs	= S3C64XX_NR_IRQS,
    166	.init_irq	= s3c6410_init_irq,
    167	.map_io		= smartq_map_io,
    168	.init_machine	= smartq7_machine_init,
    169	.init_time	= s3c64xx_timer_init,
    170MACHINE_END