ARM: omap1: remove osk-mistral add-on board support
As Aaro Koskinen points out, nobody should have this one any more, and I noticed the code is rather ugly, so let's removed it but keep the rest of the OSK support that is still used. Link: https://lore.kernel.org/linux-arm-kernel/20221020193511.GB3019@t60.musicnaut.iki.fi/ Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Родитель
0d7bb85e94
Коммит
21a3e6eed4
|
@ -120,14 +120,6 @@ config MACH_OMAP_OSK
|
|||
TI OMAP 5912 OSK (OMAP Starter Kit) board support. Say Y here
|
||||
if you have such a board.
|
||||
|
||||
config OMAP_OSK_MISTRAL
|
||||
bool "Mistral QVGA board Support"
|
||||
depends on MACH_OMAP_OSK
|
||||
help
|
||||
The OSK supports an optional add-on board with a Quarter-VGA
|
||||
touchscreen, PDA-ish buttons, a resume button, bicolor LED,
|
||||
and camera connector. Say Y here if you have this board.
|
||||
|
||||
config MACH_OMAP_PALMTE
|
||||
bool "Palm Tungsten E"
|
||||
depends on ARCH_OMAP15XX
|
||||
|
|
|
@ -339,267 +339,6 @@ static struct omap_usb_config osk_usb_config __initdata = {
|
|||
.pins[0] = 2,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
||||
static const struct omap_lcd_config osk_lcd_config __initconst = {
|
||||
.ctrl_name = "internal",
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
||||
|
||||
#include <linux/input.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/ads7846.h>
|
||||
|
||||
#include <linux/platform_data/keypad-omap.h>
|
||||
|
||||
static const struct property_entry mistral_at24_properties[] = {
|
||||
PROPERTY_ENTRY_U32("pagesize", 16),
|
||||
{ }
|
||||
};
|
||||
|
||||
static const struct software_node mistral_at24_node = {
|
||||
.properties = mistral_at24_properties,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata mistral_i2c_board_info[] = {
|
||||
{
|
||||
/* NOTE: powered from LCD supply */
|
||||
I2C_BOARD_INFO("24c04", 0x50),
|
||||
.swnode = &mistral_at24_node,
|
||||
},
|
||||
/* TODO when driver support is ready:
|
||||
* - optionally ov9640 camera sensor at 0x30
|
||||
*/
|
||||
};
|
||||
|
||||
static const unsigned int osk_keymap[] = {
|
||||
/* KEY(col, row, code) */
|
||||
KEY(0, 0, KEY_F1), /* SW4 */
|
||||
KEY(3, 0, KEY_UP), /* (sw2/up) */
|
||||
KEY(1, 1, KEY_LEFTCTRL), /* SW5 */
|
||||
KEY(2, 1, KEY_LEFT), /* (sw2/left) */
|
||||
KEY(0, 2, KEY_SPACE), /* SW3 */
|
||||
KEY(1, 2, KEY_ESC), /* SW6 */
|
||||
KEY(2, 2, KEY_DOWN), /* (sw2/down) */
|
||||
KEY(2, 3, KEY_ENTER), /* (sw2/select) */
|
||||
KEY(3, 3, KEY_RIGHT), /* (sw2/right) */
|
||||
};
|
||||
|
||||
static const struct matrix_keymap_data osk_keymap_data = {
|
||||
.keymap = osk_keymap,
|
||||
.keymap_size = ARRAY_SIZE(osk_keymap),
|
||||
};
|
||||
|
||||
static struct omap_kp_platform_data osk_kp_data = {
|
||||
.rows = 8,
|
||||
.cols = 8,
|
||||
.keymap_data = &osk_keymap_data,
|
||||
.delay = 9,
|
||||
};
|
||||
|
||||
static struct resource osk5912_kp_resources[] = {
|
||||
[0] = {
|
||||
.start = INT_KEYBOARD,
|
||||
.end = INT_KEYBOARD,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device osk5912_kp_device = {
|
||||
.name = "omap-keypad",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &osk_kp_data,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(osk5912_kp_resources),
|
||||
.resource = osk5912_kp_resources,
|
||||
};
|
||||
|
||||
static struct omap_backlight_config mistral_bl_data = {
|
||||
.default_intensity = 0xa0,
|
||||
};
|
||||
|
||||
static struct platform_device mistral_bl_device = {
|
||||
.name = "omap-bl",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &mistral_bl_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device osk5912_lcd_device = {
|
||||
.name = "lcd_osk",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static const struct gpio_led mistral_gpio_led_pins[] = {
|
||||
{
|
||||
.name = "mistral:red",
|
||||
.default_trigger = "heartbeat",
|
||||
.gpio = 3,
|
||||
},
|
||||
{
|
||||
.name = "mistral:green",
|
||||
.default_trigger = "cpu0",
|
||||
.gpio = OMAP_MPUIO(4),
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_led_platform_data mistral_gpio_led_data = {
|
||||
.leds = mistral_gpio_led_pins,
|
||||
.num_leds = ARRAY_SIZE(mistral_gpio_led_pins),
|
||||
};
|
||||
|
||||
static struct platform_device mistral_gpio_leds = {
|
||||
.name = "leds-gpio",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &mistral_gpio_led_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *mistral_devices[] __initdata = {
|
||||
&osk5912_kp_device,
|
||||
&mistral_bl_device,
|
||||
&osk5912_lcd_device,
|
||||
&mistral_gpio_leds,
|
||||
};
|
||||
|
||||
static int mistral_get_pendown_state(void)
|
||||
{
|
||||
return !gpio_get_value(4);
|
||||
}
|
||||
|
||||
static const struct ads7846_platform_data mistral_ts_info = {
|
||||
.model = 7846,
|
||||
.vref_delay_usecs = 100, /* internal, no capacitor */
|
||||
.x_plate_ohms = 419,
|
||||
.y_plate_ohms = 486,
|
||||
.get_pendown_state = mistral_get_pendown_state,
|
||||
};
|
||||
|
||||
static struct spi_board_info __initdata mistral_boardinfo[] = { {
|
||||
/* MicroWire (bus 2) CS0 has an ads7846e */
|
||||
.modalias = "ads7846",
|
||||
.platform_data = &mistral_ts_info,
|
||||
.max_speed_hz = 120000 /* max sample rate at 3V */
|
||||
* 26 /* command + data + overhead */,
|
||||
.bus_num = 2,
|
||||
.chip_select = 0,
|
||||
} };
|
||||
|
||||
static irqreturn_t
|
||||
osk_mistral_wake_interrupt(int irq, void *ignored)
|
||||
{
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static void __init osk_mistral_init(void)
|
||||
{
|
||||
/* NOTE: we could actually tell if there's a Mistral board
|
||||
* attached, e.g. by trying to read something from the ads7846.
|
||||
* But this arch_init() code is too early for that, since we
|
||||
* can't talk to the ads or even the i2c eeprom.
|
||||
*/
|
||||
|
||||
/* parallel camera interface */
|
||||
omap_cfg_reg(J15_1610_CAM_LCLK);
|
||||
omap_cfg_reg(J18_1610_CAM_D7);
|
||||
omap_cfg_reg(J19_1610_CAM_D6);
|
||||
omap_cfg_reg(J14_1610_CAM_D5);
|
||||
omap_cfg_reg(K18_1610_CAM_D4);
|
||||
omap_cfg_reg(K19_1610_CAM_D3);
|
||||
omap_cfg_reg(K15_1610_CAM_D2);
|
||||
omap_cfg_reg(K14_1610_CAM_D1);
|
||||
omap_cfg_reg(L19_1610_CAM_D0);
|
||||
omap_cfg_reg(L18_1610_CAM_VS);
|
||||
omap_cfg_reg(L15_1610_CAM_HS);
|
||||
omap_cfg_reg(M19_1610_CAM_RSTZ);
|
||||
omap_cfg_reg(Y15_1610_CAM_OUTCLK);
|
||||
|
||||
/* serial camera interface */
|
||||
omap_cfg_reg(H19_1610_CAM_EXCLK);
|
||||
omap_cfg_reg(W13_1610_CCP_CLKM);
|
||||
omap_cfg_reg(Y12_1610_CCP_CLKP);
|
||||
/* CCP_DATAM CONFLICTS WITH UART1.TX (and serial console) */
|
||||
/* omap_cfg_reg(Y14_1610_CCP_DATAM); */
|
||||
omap_cfg_reg(W14_1610_CCP_DATAP);
|
||||
|
||||
/* CAM_PWDN */
|
||||
if (gpio_request(11, "cam_pwdn") == 0) {
|
||||
omap_cfg_reg(N20_1610_GPIO11);
|
||||
gpio_direction_output(11, 0);
|
||||
} else
|
||||
pr_debug("OSK+Mistral: CAM_PWDN is awol\n");
|
||||
|
||||
|
||||
/* omap_cfg_reg(P19_1610_GPIO6); */ /* BUSY */
|
||||
gpio_request(6, "ts_busy");
|
||||
gpio_direction_input(6);
|
||||
|
||||
omap_cfg_reg(P20_1610_GPIO4); /* PENIRQ */
|
||||
gpio_request(4, "ts_int");
|
||||
gpio_direction_input(4);
|
||||
irq_set_irq_type(gpio_to_irq(4), IRQ_TYPE_EDGE_FALLING);
|
||||
|
||||
mistral_boardinfo[0].irq = gpio_to_irq(4);
|
||||
spi_register_board_info(mistral_boardinfo,
|
||||
ARRAY_SIZE(mistral_boardinfo));
|
||||
|
||||
/* the sideways button (SW1) is for use as a "wakeup" button
|
||||
*
|
||||
* NOTE: The Mistral board has the wakeup button (SW1) wired
|
||||
* to the LCD 3.3V rail, which is powered down during suspend.
|
||||
* To allow this button to wake up the omap, work around this
|
||||
* HW bug by rewiring SW1 to use the main 3.3V rail.
|
||||
*/
|
||||
omap_cfg_reg(N15_1610_MPUIO2);
|
||||
if (gpio_request(OMAP_MPUIO(2), "wakeup") == 0) {
|
||||
int ret = 0;
|
||||
int irq = gpio_to_irq(OMAP_MPUIO(2));
|
||||
|
||||
gpio_direction_input(OMAP_MPUIO(2));
|
||||
irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
|
||||
/* share the IRQ in case someone wants to use the
|
||||
* button for more than wakeup from system sleep.
|
||||
*/
|
||||
ret = request_irq(irq,
|
||||
&osk_mistral_wake_interrupt,
|
||||
IRQF_SHARED, "mistral_wakeup",
|
||||
&osk_mistral_wake_interrupt);
|
||||
if (ret != 0) {
|
||||
gpio_free(OMAP_MPUIO(2));
|
||||
printk(KERN_ERR "OSK+Mistral: no wakeup irq, %d?\n",
|
||||
ret);
|
||||
} else
|
||||
enable_irq_wake(irq);
|
||||
} else
|
||||
printk(KERN_ERR "OSK+Mistral: wakeup button is awol\n");
|
||||
|
||||
/* LCD: backlight, and power; power controls other devices on the
|
||||
* board, like the touchscreen, EEPROM, and wakeup (!) switch.
|
||||
*/
|
||||
omap_cfg_reg(PWL);
|
||||
if (gpio_request(2, "lcd_pwr") == 0)
|
||||
gpio_direction_output(2, 1);
|
||||
|
||||
/*
|
||||
* GPIO based LEDs
|
||||
*/
|
||||
omap_cfg_reg(P18_1610_GPIO3);
|
||||
omap_cfg_reg(MPUIO4);
|
||||
|
||||
i2c_register_board_info(1, mistral_i2c_board_info,
|
||||
ARRAY_SIZE(mistral_i2c_board_info));
|
||||
|
||||
platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices));
|
||||
}
|
||||
#else
|
||||
static void __init osk_mistral_init(void) { }
|
||||
#endif
|
||||
|
||||
#define EMIFS_CS3_VAL (0x88013141)
|
||||
|
||||
static void __init osk_init(void)
|
||||
|
@ -642,12 +381,6 @@ static void __init osk_init(void)
|
|||
osk_i2c_board_info[0].irq = gpio_to_irq(OMAP_MPUIO(1));
|
||||
omap_register_i2c_bus(1, 400, osk_i2c_board_info,
|
||||
ARRAY_SIZE(osk_i2c_board_info));
|
||||
osk_mistral_init();
|
||||
|
||||
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
||||
omapfb_set_lcd_config(&osk_lcd_config);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
MACHINE_START(OMAP_OSK, "TI-OSK")
|
||||
|
|
Загрузка…
Ссылка в новой задаче