diff --git arch/arm/mach-s3c2410/include/mach/gpio.h arch/arm/mach-s3c2410/include/mach/gpio.h index 15f0b3e..06ed354 100644 --- arch/arm/mach-s3c2410/include/mach/gpio.h +++ arch/arm/mach-s3c2410/include/mach/gpio.h @@ -16,6 +16,8 @@ #define gpio_cansleep __gpio_cansleep #define gpio_to_irq __gpio_to_irq +#define irq_to_gpio s3c2410_gpio_getirq + /* some boards require extra gpio capacity to support external * devices that need GPIO. */ diff --git arch/arm/mach-s3c2440/Kconfig arch/arm/mach-s3c2440/Kconfig index b0995ed..54f4b24 100644 --- arch/arm/mach-s3c2440/Kconfig +++ arch/arm/mach-s3c2440/Kconfig @@ -107,6 +107,7 @@ config MACH_MINI2440 select S3C_DEV_USB_HOST select TOUCHSCREEN_S3C2410 select TOUCHSCREEN_FILTER + select S3C24XX_SPI_BUS0_GPE11_GPE12_GPE13 help Say Y here to select support for the MINI2440. Is a 10cm x 10cm board available via various sources. It can come with a 3.5" or 7" touch LCD. diff --git arch/arm/mach-s3c2440/mach-mini2440.c arch/arm/mach-s3c2440/mach-mini2440.c index 9eb96fb..09efafa 100644 --- arch/arm/mach-s3c2440/mach-mini2440.c +++ arch/arm/mach-s3c2440/mach-mini2440.c @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -47,7 +49,6 @@ #include #include #include - /* * This is compiled conditionaly, as: * 1) not everyone needs the touchscreen @@ -611,6 +612,27 @@ static struct i2c_board_info mini2440_i2c_devs[] = { }, }; +/* SPI devices */ +static struct s3c2410_spi_info mini2440_spi0_pdata = { + .pin_cs = S3C2410_GPG(2), + .num_cs = 1, + .bus_num = 0, + .gpio_setup = &s3c24xx_spi_gpiocfg_bus0_gpe11_12_13, +}; + + +static struct spi_board_info mini2440_spi_devs[] __initdata = { +#if defined(CONFIG_SCA3000) + { /* sca3000 accel */ + .modalias = "sca3000_d01", /* choose correct revision */ + .chip_select = 0, + .max_speed_hz = 1 * 1000 * 1000, + .bus_num = 0, + } +#endif +}; + + static struct platform_device *mini2440_devices[] = { &s3c_device_usb, &s3c_device_wdt, @@ -618,6 +640,7 @@ static struct platform_device *mini2440_devices[] = { &s3c_device_i2c0, &s3c_device_rtc, &s3c_device_usbgadget, + &s3c_device_spi0, &mini2440_device_eth, &mini2440_led1, &mini2440_led2, @@ -793,11 +816,17 @@ static void __init mini2440_init(void) printk("\n"); s3c24xx_fb_set_platdata(&mini2440_fb_info); } + s3c24xx_udc_set_platdata(&mini2440_udc_cfg); s3c_i2c0_set_platdata(NULL); i2c_register_board_info(0, mini2440_i2c_devs, ARRAY_SIZE(mini2440_i2c_devs)); + s3c_device_spi0.dev.platform_data = &mini2440_spi0_pdata; + + spi_register_board_info(mini2440_spi_devs, + ARRAY_SIZE(mini2440_spi_devs)); + #ifdef CONFIG_TOUCHSCREEN_S3C2410 if (features.done & FEATURE_TOUCH) set_s3c2410ts_info(&mini2440_ts_cfg);