Search
SailfishOS Open Build Service
>
Projects
>
home:sledge
:
beagle
>
kernel-adaptation-dm3730
> 0022-board-medistream-added-parameter-to-skip-framebuffer.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File 0022-board-medistream-added-parameter-to-skip-framebuffer.patch of Package kernel-adaptation-dm3730
From db72b18d6852fd8183c18e0ba6694b84cb37ac8a Mon Sep 17 00:00:00 2001 From: MediStream-Devel-VM <info@berlinux-solutions.de> Date: Thu, 22 Nov 2012 17:17:44 +0100 Subject: [PATCH 5/5] board-medistream: -added parameter to skip framebuffer clearing -added buzzer gpio --- arch/arm/mach-omap2/board-medistream.c | 195 +++++++++++++++++-------------- 1 files changed, 107 insertions(+), 88 deletions(-) diff --git a/arch/arm/mach-omap2/board-medistream.c b/arch/arm/mach-omap2/board-medistream.c index c1255c8..0191255 100644 --- a/arch/arm/mach-omap2/board-medistream.c +++ b/arch/arm/mach-omap2/board-medistream.c @@ -61,14 +61,23 @@ #include <media/omap3isp.h> #include "devices.h" -#define MEDISTREAM_EHCI_VBUS 22 -#define MEDISTREAM_EHCI_SELECT 61 +/* + * fbskip parameter to skip display init + */ +int fbskip = 0; +EXPORT_SYMBOL(fbskip); +static int __init early_parse_fbskip(char *p) { + fbskip = 1; + return 0; +} +early_param("fbskip", early_parse_fbskip); -#define MEDISTREAM_ETHR_START 0x2c000000 -#define MEDISTREAM_ETHR_SIZE 1024 +#define MEDISTREAM_ETHR_START 0x2c000000 +#define MEDISTREAM_ETHR_SIZE 1024 #define MEDISTREAM_ETHR_GPIO_IRQ 29 -#define MEDISTREAM_SMSC911X_CS 5 +#define MEDISTREAM_SMSC911X_CS 5 +#define MEDISTREAM_BUZZER_GPIO 138 #define MEDISTREAM_POWER_FEEDBACK_GPIO 41 enum { @@ -119,7 +128,7 @@ static struct mtd_partition medistream_nand_partitions[] = { }, { .name = "File System", - .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */ + .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */ .size = MTDPART_SIZ_FULL, }, }; @@ -143,6 +152,43 @@ static inline void __init medistream_init_smsc911x(void) static inline void __init medistream_init_smsc911x(void) { return; } #endif +/* buzzer button */ +#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) +#include <linux/gpio_keys.h> + +static struct gpio_keys_button gpio_buttons[] = { + { + .code = KEY_F1, + .gpio = MEDISTREAM_BUZZER_GPIO, + .desc = "bestapp", + .wakeup = 0, + .type = EV_KEY, + .active_low = 1, + }, +}; + +static struct gpio_keys_platform_data gpio_keys_pdata = { + .buttons = gpio_buttons, + .nbuttons = ARRAY_SIZE(gpio_buttons), +}; + +static struct platform_device gpio_keys_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &gpio_keys_pdata, + }, +}; + +static void __init medistream_init_keys(void) +{ + platform_device_register(&gpio_keys_device); +} + +#else +static inline void __init medistream_init_keys(void) { return; } +#endif + /* * MEDISTREAM LCD Panel control signals */ @@ -150,38 +196,22 @@ static inline void __init medistream_init_smsc911x(void) { return; } #define MEDISTREAM_LCD_ENABLE_GPIO 134 static struct gpio medistream_dss_gpios[] __initdata = { - { MEDISTREAM_LED_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, "led_enable" }, - { MEDISTREAM_LCD_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, "lcd_enable" }, + { MEDISTREAM_LED_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, "led_enable" }, + { MEDISTREAM_LCD_ENABLE_GPIO, GPIOF_OUT_INIT_HIGH, "lcd_enable" }, }; -static int lcd_enabled; - -static void __init medistream_display_init(void) -{ - omap_mux_init_gpio(MEDISTREAM_LED_ENABLE_GPIO, OMAP_PIN_INPUT); - omap_mux_init_gpio(MEDISTREAM_LCD_ENABLE_GPIO, OMAP_PIN_INPUT_PULLUP); - - if(gpio_request_array(medistream_dss_gpios, - ARRAY_SIZE(medistream_dss_gpios))) { - printk(KERN_ERR "failed to get lcd_panel_* gpios\n"); - } -} - static int medistream_enable_lcd(struct omap_dss_device *dssdev) { - gpio_set_value(MEDISTREAM_LED_ENABLE_GPIO, 0); - gpio_set_value(MEDISTREAM_LCD_ENABLE_GPIO, 1); + gpio_direction_output(MEDISTREAM_LED_ENABLE_GPIO, 0); + gpio_direction_output(MEDISTREAM_LCD_ENABLE_GPIO, 1); - lcd_enabled = 1; return 0; } static void medistream_disable_lcd(struct omap_dss_device *dssdev) { - gpio_set_value(MEDISTREAM_LED_ENABLE_GPIO, 1); - gpio_set_value(MEDISTREAM_LCD_ENABLE_GPIO, 0); - - lcd_enabled = 0; + gpio_direction_output(MEDISTREAM_LED_ENABLE_GPIO, 1); + gpio_direction_output(MEDISTREAM_LCD_ENABLE_GPIO, 0); } static struct omap_dss_device medistream_lcd_device = { @@ -205,6 +235,13 @@ static struct omap_dss_board_info medistream_dss_data = { .default_device = &medistream_lcd_device, }; +static void __init medistream_display_init(void) +{ + omap_display_init(&medistream_dss_data); + + gpio_request_array(medistream_dss_gpios, ARRAY_SIZE(medistream_dss_gpios)); +} + static struct regulator_consumer_supply medistream_vmmc1_supply[] = { REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"), }; @@ -248,13 +285,13 @@ static struct omap2_hsmmc_info mmc[] = { .mmc = 1, .caps = MMC_CAP_4_BIT_DATA, .gpio_cd = -EINVAL, - .gpio_wp = 27, //65, + .gpio_wp = 27, .deferred = true, }, {} /* Terminator */ }; -static int medistream_twl_gpio_setup(struct device *dev, +static int __init medistream_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { omap_mux_init_gpio(65, OMAP_PIN_INPUT); @@ -331,8 +368,8 @@ static struct omap_board_config_kernel medistream_config[] __initdata = { static struct usbhs_omap_board_data usbhs_bdata __initdata = { .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, //OMAP_USBHS_PORT_MODE_UNUSED, - .port_mode[1] = OMAP_EHCI_PORT_MODE_TLL, //OMAP_EHCI_PORT_MODE_PHY, - .port_mode[2] = OMAP_EHCI_PORT_MODE_TLL, //OMAP_USBHS_PORT_MODE_UNUSED, + .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, //OMAP_EHCI_PORT_MODE_PHY, + .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, //OMAP_USBHS_PORT_MODE_UNUSED, .phy_reset = true, @@ -344,19 +381,20 @@ static struct usbhs_omap_board_data usbhs_bdata __initdata = { #ifdef CONFIG_OMAP_MUX static struct omap_board_mux medistream_board_mux[] __initdata = { - OMAP3_MUX(ETK_D10, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), /* GPIO24, USB */ - OMAP3_MUX(ETK_D12, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), /* GPIO26, LCD backlight */ - OMAP3_MUX(ETK_D15, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), /* GPIO29, ETH0 */ - OMAP3_MUX(SDMMC2_DAT2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), /* GPIO134, LCD_EN */ + OMAP3_MUX(ETK_D10, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), /* GPIO24, USB */ + OMAP3_MUX(ETK_D12, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), /* GPIO26, LED_ENABLE */ + OMAP3_MUX(ETK_D15, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), /* GPIO29, ETH0 */ + OMAP3_MUX(SDMMC2_DAT2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), /* GPIO134, LCD_ENABLE */ + OMAP3_MUX(SDMMC2_DAT6, OMAP_MUX_MODE4 | OMAP_PIN_INPUT), /* GPIO138, BUZZER_BUTTON */ /* Configure MCBSP3 pins to UART2 mux*/ - OMAP3_MUX(MCBSP3_DX, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT | OMAP_PULL_ENA |OMAP_PULL_UP ), + OMAP3_MUX(MCBSP3_DX, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT | OMAP_PULL_ENA | OMAP_PULL_UP ), OMAP3_MUX(MCBSP3_DR, OMAP_MUX_MODE1 | OMAP_PIN_INPUT), OMAP3_MUX(MCBSP3_CLKX, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT), OMAP3_MUX(MCBSP3_FSX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT), /* power feedback pin */ - OMAP3_MUX(GPMC_A8, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT |OMAP_PULL_ENA |OMAP_PULL_UP), + OMAP3_MUX(GPMC_A8, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT | OMAP_PULL_ENA | OMAP_PULL_UP), { .reg_offset = OMAP_MUX_TERMINATOR }, }; @@ -368,16 +406,12 @@ static void medistream_poweroff(void) { u8 val; // set powerfeedback pin to low - gpio_set_value(MEDISTREAM_POWER_FEEDBACK_GPIO, 0); + gpio_request_one(MEDISTREAM_POWER_FEEDBACK_GPIO, GPIOF_OUT_INIT_LOW, "power"); // set DEVOFF bit of PWR_P1_SW_EVENTS - if(twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &val, 0x10)) { - printk(KERN_WARNING "I2C error while reading TWL4030" "PM_MASTER P1_SW_EVENTS\n"); - } + twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &val, 0x10); val |= 0x01; - if(twl_i2c_write_u8(TWL4030_MODULE_PM_MASTER, val, 0x10)) { - printk(KERN_WARNING "I2C error while writing TWL4030" "PM_MASTER P1_SW_EVENTS\n"); - } + twl_i2c_write_u8(TWL4030_MODULE_PM_MASTER, val, 0x10); } static struct omap_musb_board_data musb_board_data = { @@ -387,12 +421,6 @@ static struct omap_musb_board_data musb_board_data = { .extvbus = 1, }; -static struct gpio medistream_ehci_gpios[] __initdata = { - { MEDISTREAM_EHCI_VBUS, GPIOF_OUT_INIT_HIGH, "enable EHCI VBUS" }, - { MEDISTREAM_EHCI_SELECT, GPIOF_OUT_INIT_LOW, "select EHCI port" }, - { MEDISTREAM_POWER_FEEDBACK_GPIO, GPIOF_OUT_INIT_HIGH, "POWER FEEDBACK" }, -}; - static struct isp_platform_data medistream_isp_data = { NULL, NULL }; @@ -408,7 +436,7 @@ static void __init medistream_opp_init(void) } /* Custom OPP enabled for all xM versions */ - if (cpu_is_omap3630()) { + if (medistream_version == MEDISTREAM_BOARD_GEN_2) { struct device *mpu_dev, *iva_dev; mpu_dev = omap_device_get_by_hwmod_name("mpu"); @@ -453,25 +481,15 @@ static void __init medistream_init(void) omap_board_config = medistream_config; omap_board_config_size = ARRAY_SIZE(medistream_config); - if (gpio_request(24,"GPIO24") < 0) - printk(KERN_ERR "Can't get GPIO24 for USB reset\n"); - gpio_direction_output(24, 1); - gpio_set_value(24, 1); - - if (gpio_request(28,"GPIO24")<0) - printk(KERN_ERR "Can't get GPIO28 for USB phy reset\n"); - gpio_direction_output(28, 1); - gpio_set_value(28, 1); + /* set powerfeedback pin to high */ + gpio_request_one(MEDISTREAM_POWER_FEEDBACK_GPIO, GPIOF_OUT_INIT_HIGH, "power"); - omap_mux_init_gpio(137, OMAP_PIN_OUTPUT); - if (gpio_request(137,"eth_rst")<0) - printk(KERN_ERR "Can't get 137 eth_rst\n"); - gpio_direction_output(137, 1); - gpio_set_value(137, 1); omap_hsmmc_init(mmc); + /* pull up eth reset gpio */ + gpio_request_one(137, GPIOF_OUT_INIT_HIGH, "eth_rst"); - medistream_i2c_init(); + omap_hsmmc_init(mmc); - omap_display_init(&medistream_dss_data); + medistream_i2c_init(); omap_serial_init(); omap_sdrc_init(mt46h32m32lf6_sdrc_params, NULL); @@ -479,48 +497,49 @@ static void __init medistream_init(void) /* MEDISTREAM uses ISP1504 phy and so register nop transceiver */ usb_nop_xceiv_register(); -#if 0 - /* enable EHCI VBUS using GPIO22 */ - omap_mux_init_gpio(MEDISTREAM_EHCI_VBUS, OMAP_PIN_INPUT_PULLUP); - /* Select EHCI port on main board */ - omap_mux_init_gpio(MEDISTREAM_EHCI_SELECT, - OMAP_PIN_INPUT_PULLUP); - gpio_request_array(medistream_ehci_gpios, - ARRAY_SIZE(medistream_ehci_gpios)); - - /* setup EHCI phy reset config */ - omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP); - usbhs_bdata.reset_gpio_port[1] = 21; -#endif - usb_musb_init(&musb_board_data); usbhs_init(&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, medistream_nand_partitions, ARRAY_SIZE(medistream_nand_partitions)); +#if 0 /* Ensure SDRC pins are mux'd for self-refresh */ omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); +#endif medistream_init_smsc911x(); medistream_display_init(); medistream_opp_init(); + medistream_init_keys(); omap3_init_camera(&medistream_isp_data); /* set dpll2_ck to 460MHz */ dpll2_ck = clk_get(NULL, "dpll2_ck"); - if (IS_ERR(dpll2_ck)) { - pr_err("Cannot request dpll2_ck\n"); - return; + if (!IS_ERR(dpll2_ck)) { + clk_set_rate(dpll2_ck, 460000000); + clk_enable(dpll2_ck); + } +} + +#if 0 +static void __init medistream_init_early(void) +{ + struct omap_hwmod *dss_core; + + omap3_init_early(); + + dss_core = omap_hwmod_lookup("dss_core"); + if(dss_core) { + omap_hwmod_no_setup_reset(dss_core); } - clk_set_rate(dpll2_ck, 460000000); - clk_enable(dpll2_ck); } +#endif MACHINE_START(MEDISTREAM, "Bewatec MediStream") - /* Maintainer: Syed Mohammed Khasim - Texas Instruments */ + /* Maintainer: Matthias Hardt - BerLinux Solutions GmbH */ .atag_offset = 0x100, .reserve = omap_reserve, .map_io = omap3_map_io, -- 1.7.5.4