|
@@ -760,3 +760,194 @@ static struct bfin5xx_spi_chip mmc_spi_chip_info = {
|
|
|
|
|
|
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
|
|
|
#include <linux/spi/ad7877.h>
|
|
|
+static const struct ad7877_platform_data bfin_ad7877_ts_info = {
|
|
|
+ .model = 7877,
|
|
|
+ .vref_delay_usecs = 50, /* internal, no capacitor */
|
|
|
+ .x_plate_ohms = 419,
|
|
|
+ .y_plate_ohms = 486,
|
|
|
+ .pressure_max = 1000,
|
|
|
+ .pressure_min = 0,
|
|
|
+ .stopacq_polarity = 1,
|
|
|
+ .first_conversion_delay = 3,
|
|
|
+ .acquisition_time = 1,
|
|
|
+ .averaging = 1,
|
|
|
+ .pen_down_acc_interval = 1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_TOUCHSCREEN_AD7879) || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE)
|
|
|
+#include <linux/spi/ad7879.h>
|
|
|
+static const struct ad7879_platform_data bfin_ad7879_ts_info = {
|
|
|
+ .model = 7879, /* Model = AD7879 */
|
|
|
+ .x_plate_ohms = 620, /* 620 Ohm from the touch datasheet */
|
|
|
+ .pressure_max = 10000,
|
|
|
+ .pressure_min = 0,
|
|
|
+ .first_conversion_delay = 3, /* wait 512us before do a first conversion */
|
|
|
+ .acquisition_time = 1, /* 4us acquisition time per sample */
|
|
|
+ .median = 2, /* do 8 measurements */
|
|
|
+ .averaging = 1, /* take the average of 4 middle samples */
|
|
|
+ .pen_down_acc_interval = 255, /* 9.4 ms */
|
|
|
+ .gpio_export = 1, /* Export GPIO to gpiolib */
|
|
|
+ .gpio_base = -1, /* Dynamic allocation */
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_INPUT_ADXL34X) || defined(CONFIG_INPUT_ADXL34X_MODULE)
|
|
|
+#include <linux/input/adxl34x.h>
|
|
|
+static const struct adxl34x_platform_data adxl34x_info = {
|
|
|
+ .x_axis_offset = 0,
|
|
|
+ .y_axis_offset = 0,
|
|
|
+ .z_axis_offset = 0,
|
|
|
+ .tap_threshold = 0x31,
|
|
|
+ .tap_duration = 0x10,
|
|
|
+ .tap_latency = 0x60,
|
|
|
+ .tap_window = 0xF0,
|
|
|
+ .tap_axis_control = ADXL_TAP_X_EN | ADXL_TAP_Y_EN | ADXL_TAP_Z_EN,
|
|
|
+ .act_axis_control = 0xFF,
|
|
|
+ .activity_threshold = 5,
|
|
|
+ .inactivity_threshold = 3,
|
|
|
+ .inactivity_time = 4,
|
|
|
+ .free_fall_threshold = 0x7,
|
|
|
+ .free_fall_time = 0x20,
|
|
|
+ .data_rate = 0x8,
|
|
|
+ .data_range = ADXL_FULL_RES,
|
|
|
+
|
|
|
+ .ev_type = EV_ABS,
|
|
|
+ .ev_code_x = ABS_X, /* EV_REL */
|
|
|
+ .ev_code_y = ABS_Y, /* EV_REL */
|
|
|
+ .ev_code_z = ABS_Z, /* EV_REL */
|
|
|
+
|
|
|
+ .ev_code_tap = {BTN_TOUCH, BTN_TOUCH, BTN_TOUCH}, /* EV_KEY x,y,z */
|
|
|
+
|
|
|
+/* .ev_code_ff = KEY_F,*/ /* EV_KEY */
|
|
|
+/* .ev_code_act_inactivity = KEY_A,*/ /* EV_KEY */
|
|
|
+ .power_mode = ADXL_AUTO_SLEEP | ADXL_LINK,
|
|
|
+ .fifo_mode = ADXL_FIFO_STREAM,
|
|
|
+ .orientation_enable = ADXL_EN_ORIENTATION_3D,
|
|
|
+ .deadzone_angle = ADXL_DEADZONE_ANGLE_10p8,
|
|
|
+ .divisor_length = ADXL_LP_FILTER_DIVISOR_16,
|
|
|
+ /* EV_KEY {+Z, +Y, +X, -X, -Y, -Z} */
|
|
|
+ .ev_codes_orient_3d = {BTN_Z, BTN_Y, BTN_X, BTN_A, BTN_B, BTN_C},
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
|
|
|
+static struct bfin5xx_spi_chip enc28j60_spi_chip_info = {
|
|
|
+ .enable_dma = 1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
|
|
|
+#include <linux/spi/adf702x.h>
|
|
|
+#define TXREG 0x0160A470
|
|
|
+static const u32 adf7021_regs[] = {
|
|
|
+ 0x09608FA0,
|
|
|
+ 0x00575011,
|
|
|
+ 0x00A7F092,
|
|
|
+ 0x2B141563,
|
|
|
+ 0x81F29E94,
|
|
|
+ 0x00003155,
|
|
|
+ 0x050A4F66,
|
|
|
+ 0x00000007,
|
|
|
+ 0x00000008,
|
|
|
+ 0x000231E9,
|
|
|
+ 0x3296354A,
|
|
|
+ 0x891A2B3B,
|
|
|
+ 0x00000D9C,
|
|
|
+ 0x0000000D,
|
|
|
+ 0x0000000E,
|
|
|
+ 0x0000000F,
|
|
|
+};
|
|
|
+
|
|
|
+static struct adf702x_platform_data adf7021_platform_data = {
|
|
|
+ .regs_base = (void *)SPORT1_TCR1,
|
|
|
+ .dma_ch_rx = CH_SPORT1_RX,
|
|
|
+ .dma_ch_tx = CH_SPORT1_TX,
|
|
|
+ .irq_sport_err = IRQ_SPORT1_ERROR,
|
|
|
+ .gpio_int_rfs = GPIO_PF8,
|
|
|
+ .pin_req = {P_SPORT1_DTPRI, P_SPORT1_RFS, P_SPORT1_DRPRI,
|
|
|
+ P_SPORT1_RSCLK, P_SPORT1_TSCLK, 0},
|
|
|
+ .adf702x_model = MODEL_ADF7021,
|
|
|
+ .adf702x_regs = adf7021_regs,
|
|
|
+ .tx_reg = TXREG,
|
|
|
+};
|
|
|
+static inline void adf702x_mac_init(void)
|
|
|
+{
|
|
|
+ eth_random_addr(adf7021_platform_data.mac_addr);
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void adf702x_mac_init(void) {}
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
|
|
|
+#include <linux/spi/ads7846.h>
|
|
|
+static int ads7873_get_pendown_state(void)
|
|
|
+{
|
|
|
+ return gpio_get_value(GPIO_PF6);
|
|
|
+}
|
|
|
+
|
|
|
+static struct ads7846_platform_data __initdata ad7873_pdata = {
|
|
|
+ .model = 7873, /* AD7873 */
|
|
|
+ .x_max = 0xfff,
|
|
|
+ .y_max = 0xfff,
|
|
|
+ .x_plate_ohms = 620,
|
|
|
+ .debounce_max = 1,
|
|
|
+ .debounce_rep = 0,
|
|
|
+ .debounce_tol = (~0),
|
|
|
+ .get_pendown_state = ads7873_get_pendown_state,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_MTD_DATAFLASH) \
|
|
|
+ || defined(CONFIG_MTD_DATAFLASH_MODULE)
|
|
|
+
|
|
|
+static struct mtd_partition bfin_spi_dataflash_partitions[] = {
|
|
|
+ {
|
|
|
+ .name = "bootloader(spi)",
|
|
|
+ .size = 0x00040000,
|
|
|
+ .offset = 0,
|
|
|
+ .mask_flags = MTD_CAP_ROM
|
|
|
+ }, {
|
|
|
+ .name = "linux kernel(spi)",
|
|
|
+ .size = 0x180000,
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ }, {
|
|
|
+ .name = "file system(spi)",
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct flash_platform_data bfin_spi_dataflash_data = {
|
|
|
+ .name = "SPI Dataflash",
|
|
|
+ .parts = bfin_spi_dataflash_partitions,
|
|
|
+ .nr_parts = ARRAY_SIZE(bfin_spi_dataflash_partitions),
|
|
|
+};
|
|
|
+
|
|
|
+/* DataFlash chip */
|
|
|
+static struct bfin5xx_spi_chip data_flash_chip_info = {
|
|
|
+ .enable_dma = 0, /* use dma transfer with this chip*/
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_AD7476) || defined(CONFIG_AD7476_MODULE)
|
|
|
+static struct bfin5xx_spi_chip spi_ad7476_chip_info = {
|
|
|
+ .enable_dma = 0, /* use dma transfer with this chip*/
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
|
|
+#if defined(CONFIG_MTD_M25P80) \
|
|
|
+ || defined(CONFIG_MTD_M25P80_MODULE)
|
|
|
+ {
|
|
|
+ /* the modalias must be the same as spi device driver name */
|
|
|
+ .modalias = "m25p80", /* Name of spi_driver for this device */
|
|
|
+ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
|
|
|
+ .bus_num = 0, /* Framework bus number */
|
|
|
+ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
|
|
|
+ .platform_data = &bfin_spi_flash_data,
|
|
|
+ .controller_data = &spi_flash_chip_info,
|
|
|
+ .mode = SPI_MODE_3,
|
|
|
+ },
|
|
|
+#endif
|
|
|
+#if defined(CONFIG_MTD_DATAFLASH) \
|