2 * Copyright 2004-2009 Analog Devices Inc.
3 * 2005 National ICT Australia (NICTA)
4 * Aidan Williams <aidan@nicta.com.au>
6 * Licensed under the GPL-2 or later.
9 #include <linux/device.h>
10 #include <linux/kernel.h>
11 #include <linux/platform_device.h>
13 #include <linux/mtd/mtd.h>
14 #include <linux/mtd/nand.h>
15 #include <linux/mtd/partitions.h>
16 #include <linux/mtd/plat-ram.h>
17 #include <linux/mtd/physmap.h>
18 #include <linux/spi/spi.h>
19 #include <linux/spi/flash.h>
20 #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
21 #include <linux/usb/isp1362.h>
23 #include <linux/i2c.h>
24 #include <linux/i2c/adp5588.h>
25 #include <linux/etherdevice.h>
26 #include <linux/ata_platform.h>
27 #include <linux/irq.h>
28 #include <linux/interrupt.h>
29 #include <linux/usb/sl811.h>
30 #include <linux/spi/mmc_spi.h>
31 #include <linux/leds.h>
32 #include <linux/input.h>
34 #include <asm/bfin5xx_spi.h>
35 #include <asm/reboot.h>
36 #include <asm/portmux.h>
38 #ifdef CONFIG_REGULATOR_ADP_SWITCH
39 #include <linux/regulator/adp_switch.h>
41 #ifdef CONFIG_REGULATOR_AD5398
42 #include <linux/regulator/ad5398.h>
44 #include <linux/regulator/consumer.h>
45 #include <linux/regulator/userspace-consumer.h>
48 * Name the Board for the /proc/cpuinfo
50 const char bfin_board_name[] = "ADI BF537-STAMP";
53 * Driver needs to know address, irq and flag pin.
56 #if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
57 #include <linux/usb/isp1760.h>
58 static struct resource bfin_isp1760_resources[] = {
61 .end = 0x203C0000 + 0x000fffff,
62 .flags = IORESOURCE_MEM,
67 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
71 static struct isp1760_platform_data isp1760_priv = {
76 .dack_polarity_high = 0,
77 .dreq_polarity_high = 0,
80 static struct platform_device bfin_isp1760_device = {
84 .platform_data = &isp1760_priv,
86 .num_resources = ARRAY_SIZE(bfin_isp1760_resources),
87 .resource = bfin_isp1760_resources,
91 #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
92 #include <linux/gpio_keys.h>
94 static struct gpio_keys_button bfin_gpio_keys_table[] = {
95 {BTN_0, GPIO_PF2, 1, "gpio-keys: BTN0"},
96 {BTN_1, GPIO_PF3, 1, "gpio-keys: BTN1"},
97 {BTN_2, GPIO_PF4, 1, "gpio-keys: BTN2"},
98 {BTN_3, GPIO_PF5, 1, "gpio-keys: BTN3"},
101 static struct gpio_keys_platform_data bfin_gpio_keys_data = {
102 .buttons = bfin_gpio_keys_table,
103 .nbuttons = ARRAY_SIZE(bfin_gpio_keys_table),
106 static struct platform_device bfin_device_gpiokeys = {
109 .platform_data = &bfin_gpio_keys_data,
114 #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
115 static struct resource bfin_pcmcia_cf_resources[] = {
117 .start = 0x20310000, /* IO PORT */
119 .flags = IORESOURCE_MEM,
121 .start = 0x20311000, /* Attribute Memory */
123 .flags = IORESOURCE_MEM,
127 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
129 .start = 6, /* Card Detect PF6 */
131 .flags = IORESOURCE_IRQ,
135 static struct platform_device bfin_pcmcia_cf_device = {
136 .name = "bfin_cf_pcmcia",
138 .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
139 .resource = bfin_pcmcia_cf_resources,
143 #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
144 static struct platform_device rtc_device = {
150 #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
151 #include <linux/smc91x.h>
153 static struct smc91x_platdata smc91x_info = {
154 .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
155 .leda = RPC_LED_100_10,
156 .ledb = RPC_LED_TX_RX,
159 static struct resource smc91x_resources[] = {
161 .name = "smc91x-regs",
163 .end = 0x20300300 + 16,
164 .flags = IORESOURCE_MEM,
169 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
172 static struct platform_device smc91x_device = {
175 .num_resources = ARRAY_SIZE(smc91x_resources),
176 .resource = smc91x_resources,
178 .platform_data = &smc91x_info,
183 #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
184 static struct resource dm9000_resources[] = {
187 .end = 0x203FB800 + 1,
188 .flags = IORESOURCE_MEM,
192 .end = 0x203FB804 + 1,
193 .flags = IORESOURCE_MEM,
198 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
202 static struct platform_device dm9000_device = {
205 .num_resources = ARRAY_SIZE(dm9000_resources),
206 .resource = dm9000_resources,
210 #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
211 static struct resource sl811_hcd_resources[] = {
215 .flags = IORESOURCE_MEM,
219 .flags = IORESOURCE_MEM,
223 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
227 #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
228 void sl811_port_power(struct device *dev, int is_on)
230 gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
231 gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
235 static struct sl811_platform_data sl811_priv = {
237 .power = 250, /* == 500mA */
238 #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
239 .port_power = &sl811_port_power,
243 static struct platform_device sl811_hcd_device = {
247 .platform_data = &sl811_priv,
249 .num_resources = ARRAY_SIZE(sl811_hcd_resources),
250 .resource = sl811_hcd_resources,
254 #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
255 static struct resource isp1362_hcd_resources[] = {
259 .flags = IORESOURCE_MEM,
263 .flags = IORESOURCE_MEM,
267 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
271 static struct isp1362_platform_data isp1362_priv = {
276 .int_edge_triggered = 0,
277 .remote_wakeup_connected = 0,
278 .no_power_switching = 1,
279 .power_switching_mode = 0,
282 static struct platform_device isp1362_hcd_device = {
283 .name = "isp1362-hcd",
286 .platform_data = &isp1362_priv,
288 .num_resources = ARRAY_SIZE(isp1362_hcd_resources),
289 .resource = isp1362_hcd_resources,
293 #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
294 unsigned short bfin_can_peripherals[] = {
295 P_CAN0_RX, P_CAN0_TX, 0
298 static struct resource bfin_can_resources[] = {
302 .flags = IORESOURCE_MEM,
307 .flags = IORESOURCE_IRQ,
312 .flags = IORESOURCE_IRQ,
315 .start = IRQ_CAN_ERROR,
316 .end = IRQ_CAN_ERROR,
317 .flags = IORESOURCE_IRQ,
321 static struct platform_device bfin_can_device = {
323 .num_resources = ARRAY_SIZE(bfin_can_resources),
324 .resource = bfin_can_resources,
326 .platform_data = &bfin_can_peripherals, /* Passed to driver */
331 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
332 static struct platform_device bfin_mii_bus = {
333 .name = "bfin_mii_bus",
336 static struct platform_device bfin_mac_device = {
338 .dev.platform_data = &bfin_mii_bus,
342 #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
343 static struct resource net2272_bfin_resources[] = {
346 .end = 0x20300000 + 0x100,
347 .flags = IORESOURCE_MEM,
351 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
355 static struct platform_device net2272_bfin_device = {
358 .num_resources = ARRAY_SIZE(net2272_bfin_resources),
359 .resource = net2272_bfin_resources,
363 #if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
364 #ifdef CONFIG_MTD_PARTITIONS
365 const char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
367 static struct mtd_partition bfin_plat_nand_partitions[] = {
369 .name = "linux kernel(nand)",
373 .name = "file system(nand)",
374 .size = MTDPART_SIZ_FULL,
375 .offset = MTDPART_OFS_APPEND,
380 #define BFIN_NAND_PLAT_CLE 2
381 #define BFIN_NAND_PLAT_ALE 1
382 static void bfin_plat_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
384 struct nand_chip *this = mtd->priv;
386 if (cmd == NAND_CMD_NONE)
390 writeb(cmd, this->IO_ADDR_W + (1 << BFIN_NAND_PLAT_CLE));
392 writeb(cmd, this->IO_ADDR_W + (1 << BFIN_NAND_PLAT_ALE));
395 #define BFIN_NAND_PLAT_READY GPIO_PF3
396 static int bfin_plat_nand_dev_ready(struct mtd_info *mtd)
398 return gpio_get_value(BFIN_NAND_PLAT_READY);
401 static struct platform_nand_data bfin_plat_nand_data = {
405 #ifdef CONFIG_MTD_PARTITIONS
406 .part_probe_types = part_probes,
407 .partitions = bfin_plat_nand_partitions,
408 .nr_partitions = ARRAY_SIZE(bfin_plat_nand_partitions),
412 .cmd_ctrl = bfin_plat_nand_cmd_ctrl,
413 .dev_ready = bfin_plat_nand_dev_ready,
417 #define MAX(x, y) (x > y ? x : y)
418 static struct resource bfin_plat_nand_resources = {
420 .end = 0x20212000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)),
421 .flags = IORESOURCE_MEM,
424 static struct platform_device bfin_async_nand_device = {
428 .resource = &bfin_plat_nand_resources,
430 .platform_data = &bfin_plat_nand_data,
434 static void bfin_plat_nand_init(void)
436 gpio_request(BFIN_NAND_PLAT_READY, "bfin_nand_plat");
439 static void bfin_plat_nand_init(void) {}
442 #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
443 static struct mtd_partition stamp_partitions[] = {
445 .name = "bootloader(nor)",
449 .name = "linux kernel(nor)",
451 .offset = MTDPART_OFS_APPEND,
453 .name = "file system(nor)",
454 .size = 0x400000 - 0x40000 - 0x180000 - 0x10000,
455 .offset = MTDPART_OFS_APPEND,
457 .name = "MAC Address(nor)",
458 .size = MTDPART_SIZ_FULL,
460 .mask_flags = MTD_WRITEABLE,
464 static struct physmap_flash_data stamp_flash_data = {
466 .parts = stamp_partitions,
467 .nr_parts = ARRAY_SIZE(stamp_partitions),
468 #ifdef CONFIG_ROMKERNEL
469 .probe_type = "map_rom",
473 static struct resource stamp_flash_resource = {
476 .flags = IORESOURCE_MEM,
479 static struct platform_device stamp_flash_device = {
480 .name = "physmap-flash",
483 .platform_data = &stamp_flash_data,
486 .resource = &stamp_flash_resource,
490 #if defined(CONFIG_MTD_M25P80) \
491 || defined(CONFIG_MTD_M25P80_MODULE)
492 static struct mtd_partition bfin_spi_flash_partitions[] = {
494 .name = "bootloader(spi)",
497 .mask_flags = MTD_CAP_ROM
499 .name = "linux kernel(spi)",
501 .offset = MTDPART_OFS_APPEND,
503 .name = "file system(spi)",
504 .size = MTDPART_SIZ_FULL,
505 .offset = MTDPART_OFS_APPEND,
509 static struct flash_platform_data bfin_spi_flash_data = {
511 .parts = bfin_spi_flash_partitions,
512 .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
513 /* .type = "m25p64", */
516 /* SPI flash chip (m25p64) */
517 static struct bfin5xx_spi_chip spi_flash_chip_info = {
518 .enable_dma = 0, /* use dma transfer with this chip*/
523 #if defined(CONFIG_BFIN_SPI_ADC) \
524 || defined(CONFIG_BFIN_SPI_ADC_MODULE)
526 static struct bfin5xx_spi_chip spi_adc_chip_info = {
527 .enable_dma = 1, /* use dma transfer with this chip*/
532 #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
533 || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
534 static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
540 #if defined(CONFIG_SND_BF5XX_SOC_AD193X) \
541 || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
542 static struct bfin5xx_spi_chip ad1938_spi_chip_info = {
548 #if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) \
549 || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE)
550 static struct bfin5xx_spi_chip adav801_spi_chip_info = {
556 #if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE)
557 #include <linux/input/ad714x.h>
558 static struct bfin5xx_spi_chip ad7147_spi_chip_info = {
563 static struct ad714x_slider_plat ad7147_spi_slider_plat[] = {
571 static struct ad714x_button_plat ad7147_spi_button_plat[] = {
573 .keycode = BTN_FORWARD,
583 .keycode = BTN_MIDDLE,
588 .keycode = BTN_RIGHT,
598 static struct ad714x_platform_data ad7147_spi_platform_data = {
601 .slider = ad7147_spi_slider_plat,
602 .button = ad7147_spi_button_plat,
604 {0xFBFF, 0x1FFF, 0, 0x2626, 1600, 1600, 1600, 1600},
605 {0xEFFF, 0x1FFF, 0, 0x2626, 1650, 1650, 1650, 1650},
606 {0xFFFF, 0x1FFE, 0, 0x2626, 1650, 1650, 1650, 1650},
607 {0xFFFF, 0x1FFB, 0, 0x2626, 1650, 1650, 1650, 1650},
608 {0xFFFF, 0x1FEF, 0, 0x2626, 1650, 1650, 1650, 1650},
609 {0xFFFF, 0x1FBF, 0, 0x2626, 1650, 1650, 1650, 1650},
610 {0xFFFF, 0x1EFF, 0, 0x2626, 1650, 1650, 1650, 1650},
611 {0xFFFF, 0x1BFF, 0, 0x2626, 1600, 1600, 1600, 1600},
612 {0xFF7B, 0x3FFF, 0x506, 0x2626, 1100, 1100, 1150, 1150},
613 {0xFDFE, 0x3FFF, 0x606, 0x2626, 1100, 1100, 1150, 1150},
614 {0xFEBA, 0x1FFF, 0x1400, 0x2626, 1200, 1200, 1300, 1300},
615 {0xFFEF, 0x1FFF, 0x0, 0x2626, 1100, 1100, 1150, 1150},
617 .sys_cfg_reg = {0x2B2, 0x0, 0x3233, 0x819, 0x832, 0xCFF, 0xCFF, 0x0},
621 #if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
622 #include <linux/input/ad714x.h>
623 static struct ad714x_button_plat ad7142_i2c_button_plat[] = {
645 static struct ad714x_platform_data ad7142_i2c_platform_data = {
647 .button = ad7142_i2c_button_plat,
649 /* fixme: figure out right setting for all comoponent according
650 * to hardware feature of EVAL-AD7142EB board */
651 {0xE7FF, 0x3FFF, 0x0005, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
652 {0xFDBF, 0x3FFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
653 {0xFFFF, 0x2DFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
654 {0xFFFF, 0x37BF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
655 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
656 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
657 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
658 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
659 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
660 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
661 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
662 {0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
664 .sys_cfg_reg = {0x0B2, 0x0, 0x690, 0x664, 0x290F, 0xF, 0xF, 0x0},
668 #if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
669 static struct bfin5xx_spi_chip ad2s90_spi_chip_info = {
675 #if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
676 unsigned short ad2s120x_platform_data[] = {
677 /* used as SAMPLE and RDVEL */
678 GPIO_PF5, GPIO_PF6, 0
681 static struct bfin5xx_spi_chip ad2s120x_spi_chip_info = {
687 #if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
688 unsigned short ad2s1210_platform_data[] = {
689 /* use as SAMPLE, A0, A1 */
690 GPIO_PF7, GPIO_PF8, GPIO_PF9,
691 # if defined(CONFIG_AD2S1210_GPIO_INPUT) || defined(CONFIG_AD2S1210_GPIO_OUTPUT)
692 /* the RES0 and RES1 pins */
698 static struct bfin5xx_spi_chip ad2s1210_spi_chip_info = {
704 #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
705 #define MMC_SPI_CARD_DETECT_INT IRQ_PF5
707 static int bfin_mmc_spi_init(struct device *dev,
708 irqreturn_t (*detect_int)(int, void *), void *data)
710 return request_irq(MMC_SPI_CARD_DETECT_INT, detect_int,
711 IRQF_TRIGGER_FALLING, "mmc-spi-detect", data);
714 static void bfin_mmc_spi_exit(struct device *dev, void *data)
716 free_irq(MMC_SPI_CARD_DETECT_INT, data);
719 static struct mmc_spi_platform_data bfin_mmc_spi_pdata = {
720 .init = bfin_mmc_spi_init,
721 .exit = bfin_mmc_spi_exit,
722 .detect_delay = 100, /* msecs */
725 static struct bfin5xx_spi_chip mmc_spi_chip_info = {
732 #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
733 #include <linux/spi/ad7877.h>
734 static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
739 static const struct ad7877_platform_data bfin_ad7877_ts_info = {
741 .vref_delay_usecs = 50, /* internal, no capacitor */
744 .pressure_max = 1000,
746 .stopacq_polarity = 1,
747 .first_conversion_delay = 3,
748 .acquisition_time = 1,
750 .pen_down_acc_interval = 1,
754 #if defined(CONFIG_TOUCHSCREEN_AD7879) || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE)
755 #include <linux/spi/ad7879.h>
756 static const struct ad7879_platform_data bfin_ad7879_ts_info = {
757 .model = 7879, /* Model = AD7879 */
758 .x_plate_ohms = 620, /* 620 Ohm from the touch datasheet */
759 .pressure_max = 10000,
761 .first_conversion_delay = 3, /* wait 512us before do a first conversion */
762 .acquisition_time = 1, /* 4us acquisition time per sample */
763 .median = 2, /* do 8 measurements */
764 .averaging = 1, /* take the average of 4 middle samples */
765 .pen_down_acc_interval = 255, /* 9.4 ms */
766 .gpio_export = 1, /* Export GPIO to gpiolib */
767 .gpio_base = -1, /* Dynamic allocation */
771 #if defined(CONFIG_INPUT_ADXL34X) || defined(CONFIG_INPUT_ADXL34X_MODULE)
772 #include <linux/input/adxl34x.h>
773 static const struct adxl34x_platform_data adxl34x_info = {
777 .tap_threshold = 0x31,
778 .tap_duration = 0x10,
781 .tap_axis_control = ADXL_TAP_X_EN | ADXL_TAP_Y_EN | ADXL_TAP_Z_EN,
782 .act_axis_control = 0xFF,
783 .activity_threshold = 5,
784 .inactivity_threshold = 3,
785 .inactivity_time = 4,
786 .free_fall_threshold = 0x7,
787 .free_fall_time = 0x20,
789 .data_range = ADXL_FULL_RES,
792 .ev_code_x = ABS_X, /* EV_REL */
793 .ev_code_y = ABS_Y, /* EV_REL */
794 .ev_code_z = ABS_Z, /* EV_REL */
796 .ev_code_tap = {BTN_TOUCH, BTN_TOUCH, BTN_TOUCH}, /* EV_KEY x,y,z */
798 /* .ev_code_ff = KEY_F,*/ /* EV_KEY */
799 /* .ev_code_act_inactivity = KEY_A,*/ /* EV_KEY */
800 .power_mode = ADXL_AUTO_SLEEP | ADXL_LINK,
801 .fifo_mode = ADXL_FIFO_STREAM,
802 .orientation_enable = ADXL_EN_ORIENTATION_3D,
803 .deadzone_angle = ADXL_DEADZONE_ANGLE_10p8,
804 .divisor_length = ADXL_LP_FILTER_DIVISOR_16,
805 /* EV_KEY {+Z, +Y, +X, -X, -Y, -Z} */
806 .ev_codes_orient_3d = {BTN_Z, BTN_Y, BTN_X, BTN_A, BTN_B, BTN_C},
810 #if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
811 static struct bfin5xx_spi_chip spi_ad7879_chip_info = {
817 #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
818 static struct bfin5xx_spi_chip spidev_chip_info = {
824 #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
825 static struct bfin5xx_spi_chip lq035q1_spi_chip_info = {
831 #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
832 static struct bfin5xx_spi_chip enc28j60_spi_chip_info = {
838 #if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
839 static struct bfin5xx_spi_chip adf7021_spi_chip_info = {
843 #include <linux/spi/adf702x.h>
844 #define TXREG 0x0160A470
845 static const u32 adf7021_regs[] = {
864 static struct adf702x_platform_data adf7021_platform_data = {
865 .regs_base = (void *)SPORT1_TCR1,
866 .dma_ch_rx = CH_SPORT1_RX,
867 .dma_ch_tx = CH_SPORT1_TX,
868 .irq_sport_err = IRQ_SPORT1_ERROR,
869 .gpio_int_rfs = GPIO_PF8,
870 .pin_req = {P_SPORT1_DTPRI, P_SPORT1_RFS, P_SPORT1_DRPRI,
871 P_SPORT1_RSCLK, P_SPORT1_TSCLK, 0},
872 .adf702x_model = MODEL_ADF7021,
873 .adf702x_regs = adf7021_regs,
876 static inline void adf702x_mac_init(void)
878 random_ether_addr(adf7021_platform_data.mac_addr);
881 static inline void adf702x_mac_init(void) {}
884 #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
885 #include <linux/spi/ads7846.h>
886 static struct bfin5xx_spi_chip ad7873_spi_chip_info = {
890 static int ads7873_get_pendown_state(void)
892 return gpio_get_value(GPIO_PF6);
895 static struct ads7846_platform_data __initdata ad7873_pdata = {
896 .model = 7873, /* AD7873 */
902 .debounce_tol = (~0),
903 .get_pendown_state = ads7873_get_pendown_state,
907 #if defined(CONFIG_MTD_DATAFLASH) \
908 || defined(CONFIG_MTD_DATAFLASH_MODULE)
910 static struct mtd_partition bfin_spi_dataflash_partitions[] = {
912 .name = "bootloader(spi)",
915 .mask_flags = MTD_CAP_ROM
917 .name = "linux kernel(spi)",
919 .offset = MTDPART_OFS_APPEND,
921 .name = "file system(spi)",
922 .size = MTDPART_SIZ_FULL,
923 .offset = MTDPART_OFS_APPEND,
927 static struct flash_platform_data bfin_spi_dataflash_data = {
928 .name = "SPI Dataflash",
929 .parts = bfin_spi_dataflash_partitions,
930 .nr_parts = ARRAY_SIZE(bfin_spi_dataflash_partitions),
934 static struct bfin5xx_spi_chip data_flash_chip_info = {
935 .enable_dma = 0, /* use dma transfer with this chip*/
940 #if defined(CONFIG_INPUT_ADXL34X_SPI) || defined(CONFIG_INPUT_ADXL34X_SPI_MODULE)
941 static struct bfin5xx_spi_chip spi_adxl34x_chip_info = {
942 .enable_dma = 0, /* use dma transfer with this chip*/
947 static struct spi_board_info bfin_spi_board_info[] __initdata = {
948 #if defined(CONFIG_MTD_M25P80) \
949 || defined(CONFIG_MTD_M25P80_MODULE)
951 /* the modalias must be the same as spi device driver name */
952 .modalias = "m25p80", /* Name of spi_driver for this device */
953 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
954 .bus_num = 0, /* Framework bus number */
955 .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
956 .platform_data = &bfin_spi_flash_data,
957 .controller_data = &spi_flash_chip_info,
961 #if defined(CONFIG_MTD_DATAFLASH) \
962 || defined(CONFIG_MTD_DATAFLASH_MODULE)
963 { /* DataFlash chip */
964 .modalias = "mtd_dataflash",
965 .max_speed_hz = 33250000, /* max spi clock (SCK) speed in HZ */
966 .bus_num = 0, /* Framework bus number */
967 .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
968 .platform_data = &bfin_spi_dataflash_data,
969 .controller_data = &data_flash_chip_info,
973 #if defined(CONFIG_BFIN_SPI_ADC) \
974 || defined(CONFIG_BFIN_SPI_ADC_MODULE)
976 .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
977 .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
978 .bus_num = 0, /* Framework bus number */
979 .chip_select = 1, /* Framework chip select. */
980 .platform_data = NULL, /* No spi_driver specific config */
981 .controller_data = &spi_adc_chip_info,
985 #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
986 || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
988 .modalias = "ad183x",
989 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
992 .platform_data = "ad1836", /* only includes chip name for the moment */
993 .controller_data = &ad1836_spi_chip_info,
998 #if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
1000 .modalias = "ad193x",
1001 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
1004 .controller_data = &ad1938_spi_chip_info,
1009 #if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE)
1011 .modalias = "adav80x",
1012 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
1015 .controller_data = &adav801_spi_chip_info,
1020 #if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE)
1022 .modalias = "ad714x_captouch",
1023 .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */
1028 .platform_data = &ad7147_spi_platform_data,
1029 .controller_data = &ad7147_spi_chip_info,
1033 #if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
1035 .modalias = "ad2s90",
1037 .chip_select = 3, /* change it for your board */
1039 .platform_data = NULL,
1040 .controller_data = &ad2s90_spi_chip_info,
1044 #if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
1046 .modalias = "ad2s120x",
1048 .chip_select = 4, /* CS, change it for your board */
1049 .platform_data = ad2s120x_platform_data,
1050 .controller_data = &ad2s120x_spi_chip_info,
1054 #if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
1056 .modalias = "ad2s1210",
1057 .max_speed_hz = 8192000,
1059 .chip_select = 4, /* CS, change it for your board */
1060 .platform_data = ad2s1210_platform_data,
1061 .controller_data = &ad2s1210_spi_chip_info,
1065 #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
1067 .modalias = "mmc_spi",
1068 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
1071 .platform_data = &bfin_mmc_spi_pdata,
1072 .controller_data = &mmc_spi_chip_info,
1076 #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
1078 .modalias = "ad7877",
1079 .platform_data = &bfin_ad7877_ts_info,
1081 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
1084 .controller_data = &spi_ad7877_chip_info,
1087 #if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
1089 .modalias = "ad7879",
1090 .platform_data = &bfin_ad7879_ts_info,
1092 .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */
1095 .controller_data = &spi_ad7879_chip_info,
1096 .mode = SPI_CPHA | SPI_CPOL,
1099 #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
1101 .modalias = "spidev",
1102 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
1105 .controller_data = &spidev_chip_info,
1108 #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
1110 .modalias = "bfin-lq035q1-spi",
1111 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
1114 .controller_data = &lq035q1_spi_chip_info,
1115 .mode = SPI_CPHA | SPI_CPOL,
1118 #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
1120 .modalias = "enc28j60",
1121 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
1124 .chip_select = GPIO_PF10 + MAX_CTRL_CS, /* GPIO controlled SSEL */
1125 .controller_data = &enc28j60_spi_chip_info,
1129 #if defined(CONFIG_INPUT_ADXL34X_SPI) || defined(CONFIG_INPUT_ADXL34X_SPI_MODULE)
1131 .modalias = "adxl34x",
1132 .platform_data = &adxl34x_info,
1134 .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */
1137 .controller_data = &spi_adxl34x_chip_info,
1141 #if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
1143 .modalias = "adf702x",
1144 .max_speed_hz = 16000000, /* max spi clock (SCK) speed in HZ */
1146 .chip_select = GPIO_PF10 + MAX_CTRL_CS, /* GPIO controlled SSEL */
1147 .controller_data = &adf7021_spi_chip_info,
1148 .platform_data = &adf7021_platform_data,
1152 #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
1154 .modalias = "ads7846",
1155 .max_speed_hz = 2000000, /* max spi clock (SCK) speed in HZ */
1158 .chip_select = GPIO_PF10 + MAX_CTRL_CS, /* GPIO controlled SSEL */
1159 .controller_data = &ad7873_spi_chip_info,
1160 .platform_data = &ad7873_pdata,
1166 #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
1167 /* SPI controller data */
1168 static struct bfin5xx_spi_master bfin_spi0_info = {
1169 .num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS,
1170 .enable_dma = 1, /* master has the ability to do dma transfer */
1171 .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
1175 static struct resource bfin_spi0_resource[] = {
1177 .start = SPI0_REGBASE,
1178 .end = SPI0_REGBASE + 0xFF,
1179 .flags = IORESOURCE_MEM,
1184 .flags = IORESOURCE_DMA,
1189 .flags = IORESOURCE_IRQ,
1193 static struct platform_device bfin_spi0_device = {
1195 .id = 0, /* Bus number */
1196 .num_resources = ARRAY_SIZE(bfin_spi0_resource),
1197 .resource = bfin_spi0_resource,
1199 .platform_data = &bfin_spi0_info, /* Passed to driver */
1202 #endif /* spi master and devices */
1204 #if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
1206 /* SPORT SPI controller data */
1207 static struct bfin5xx_spi_master bfin_sport_spi0_info = {
1208 .num_chipselect = 1, /* master only supports one device */
1209 .enable_dma = 0, /* master don't support DMA */
1210 .pin_req = {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_DRPRI,
1211 P_SPORT0_RSCLK, P_SPORT0_TFS, P_SPORT0_RFS, 0},
1214 static struct resource bfin_sport_spi0_resource[] = {
1216 .start = SPORT0_TCR1,
1217 .end = SPORT0_TCR1 + 0xFF,
1218 .flags = IORESOURCE_MEM,
1221 .start = IRQ_SPORT0_ERROR,
1222 .end = IRQ_SPORT0_ERROR,
1223 .flags = IORESOURCE_IRQ,
1227 static struct platform_device bfin_sport_spi0_device = {
1228 .name = "bfin-sport-spi",
1229 .id = 1, /* Bus number */
1230 .num_resources = ARRAY_SIZE(bfin_sport_spi0_resource),
1231 .resource = bfin_sport_spi0_resource,
1233 .platform_data = &bfin_sport_spi0_info, /* Passed to driver */
1237 static struct bfin5xx_spi_master bfin_sport_spi1_info = {
1238 .num_chipselect = 1, /* master only supports one device */
1239 .enable_dma = 0, /* master don't support DMA */
1240 .pin_req = {P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_DRPRI,
1241 P_SPORT1_RSCLK, P_SPORT1_TFS, P_SPORT1_RFS, 0},
1244 static struct resource bfin_sport_spi1_resource[] = {
1246 .start = SPORT1_TCR1,
1247 .end = SPORT1_TCR1 + 0xFF,
1248 .flags = IORESOURCE_MEM,
1251 .start = IRQ_SPORT1_ERROR,
1252 .end = IRQ_SPORT1_ERROR,
1253 .flags = IORESOURCE_IRQ,
1257 static struct platform_device bfin_sport_spi1_device = {
1258 .name = "bfin-sport-spi",
1259 .id = 2, /* Bus number */
1260 .num_resources = ARRAY_SIZE(bfin_sport_spi1_resource),
1261 .resource = bfin_sport_spi1_resource,
1263 .platform_data = &bfin_sport_spi1_info, /* Passed to driver */
1267 #endif /* sport spi master and devices */
1269 #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
1270 static struct platform_device bfin_fb_device = {
1271 .name = "bf537-lq035",
1275 #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
1276 #include <asm/bfin-lq035q1.h>
1278 static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
1279 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
1280 .ppi_mode = USE_RGB565_16_BIT_PPI,
1281 .use_bl = 0, /* let something else control the LCD Blacklight */
1282 .gpio_bl = GPIO_PF7,
1285 static struct resource bfin_lq035q1_resources[] = {
1287 .start = IRQ_PPI_ERROR,
1288 .end = IRQ_PPI_ERROR,
1289 .flags = IORESOURCE_IRQ,
1293 static struct platform_device bfin_lq035q1_device = {
1294 .name = "bfin-lq035q1",
1296 .num_resources = ARRAY_SIZE(bfin_lq035q1_resources),
1297 .resource = bfin_lq035q1_resources,
1299 .platform_data = &bfin_lq035q1_data,
1304 #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
1305 #ifdef CONFIG_SERIAL_BFIN_UART0
1306 static struct resource bfin_uart0_resources[] = {
1309 .end = UART0_GCTL+2,
1310 .flags = IORESOURCE_MEM,
1313 .start = IRQ_UART0_RX,
1314 .end = IRQ_UART0_RX+1,
1315 .flags = IORESOURCE_IRQ,
1318 .start = IRQ_UART0_ERROR,
1319 .end = IRQ_UART0_ERROR,
1320 .flags = IORESOURCE_IRQ,
1323 .start = CH_UART0_TX,
1325 .flags = IORESOURCE_DMA,
1328 .start = CH_UART0_RX,
1330 .flags = IORESOURCE_DMA,
1332 #ifdef CONFIG_BFIN_UART0_CTSRTS
1336 .flags = IORESOURCE_IO,
1341 .flags = IORESOURCE_IO,
1346 unsigned short bfin_uart0_peripherals[] = {
1347 P_UART0_TX, P_UART0_RX, 0
1350 static struct platform_device bfin_uart0_device = {
1351 .name = "bfin-uart",
1353 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
1354 .resource = bfin_uart0_resources,
1356 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
1360 #ifdef CONFIG_SERIAL_BFIN_UART1
1361 static struct resource bfin_uart1_resources[] = {
1364 .end = UART1_GCTL+2,
1365 .flags = IORESOURCE_MEM,
1368 .start = IRQ_UART1_RX,
1369 .end = IRQ_UART1_RX+1,
1370 .flags = IORESOURCE_IRQ,
1373 .start = IRQ_UART1_ERROR,
1374 .end = IRQ_UART1_ERROR,
1375 .flags = IORESOURCE_IRQ,
1378 .start = CH_UART1_TX,
1380 .flags = IORESOURCE_DMA,
1383 .start = CH_UART1_RX,
1385 .flags = IORESOURCE_DMA,
1389 unsigned short bfin_uart1_peripherals[] = {
1390 P_UART1_TX, P_UART1_RX, 0
1393 static struct platform_device bfin_uart1_device = {
1394 .name = "bfin-uart",
1396 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
1397 .resource = bfin_uart1_resources,
1399 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
1405 #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
1406 #ifdef CONFIG_BFIN_SIR0
1407 static struct resource bfin_sir0_resources[] = {
1409 .start = 0xFFC00400,
1411 .flags = IORESOURCE_MEM,
1414 .start = IRQ_UART0_RX,
1415 .end = IRQ_UART0_RX+1,
1416 .flags = IORESOURCE_IRQ,
1419 .start = CH_UART0_RX,
1420 .end = CH_UART0_RX+1,
1421 .flags = IORESOURCE_DMA,
1425 static struct platform_device bfin_sir0_device = {
1428 .num_resources = ARRAY_SIZE(bfin_sir0_resources),
1429 .resource = bfin_sir0_resources,
1432 #ifdef CONFIG_BFIN_SIR1
1433 static struct resource bfin_sir1_resources[] = {
1435 .start = 0xFFC02000,
1437 .flags = IORESOURCE_MEM,
1440 .start = IRQ_UART1_RX,
1441 .end = IRQ_UART1_RX+1,
1442 .flags = IORESOURCE_IRQ,
1445 .start = CH_UART1_RX,
1446 .end = CH_UART1_RX+1,
1447 .flags = IORESOURCE_DMA,
1451 static struct platform_device bfin_sir1_device = {
1454 .num_resources = ARRAY_SIZE(bfin_sir1_resources),
1455 .resource = bfin_sir1_resources,
1460 #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
1461 static struct resource bfin_twi0_resource[] = {
1463 .start = TWI0_REGBASE,
1464 .end = TWI0_REGBASE,
1465 .flags = IORESOURCE_MEM,
1470 .flags = IORESOURCE_IRQ,
1474 static struct platform_device i2c_bfin_twi_device = {
1475 .name = "i2c-bfin-twi",
1477 .num_resources = ARRAY_SIZE(bfin_twi0_resource),
1478 .resource = bfin_twi0_resource,
1482 #if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
1483 static const unsigned short adp5588_keymap[ADP5588_KEYMAPSIZE] = {
1497 [13] = KEY_BACKSLASH,
1509 [26] = KEY_LEFTBRACE,
1510 [27] = KEY_RIGHTBRACE,
1523 [41] = KEY_SEMICOLON,
1524 [42] = KEY_APOSTROPHE,
1525 [43] = KEY_BACKSLASH,
1545 [65] = KEY_BACKSPACE,
1558 static struct adp5588_kpad_platform_data adp5588_kpad_data = {
1561 .keymap = adp5588_keymap,
1562 .keymapsize = ARRAY_SIZE(adp5588_keymap),
1567 #if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
1568 #include <linux/mfd/adp5520.h>
1571 * ADP5520/5501 Backlight Data
1574 static struct adp5520_backlight_platform_data adp5520_backlight_data = {
1575 .fade_in = ADP5520_FADE_T_1200ms,
1576 .fade_out = ADP5520_FADE_T_1200ms,
1577 .fade_led_law = ADP5520_BL_LAW_LINEAR,
1579 .abml_filt = ADP5520_BL_AMBL_FILT_640ms,
1580 .l1_daylight_max = ADP5520_BL_CUR_mA(15),
1581 .l1_daylight_dim = ADP5520_BL_CUR_mA(0),
1582 .l2_office_max = ADP5520_BL_CUR_mA(7),
1583 .l2_office_dim = ADP5520_BL_CUR_mA(0),
1584 .l3_dark_max = ADP5520_BL_CUR_mA(3),
1585 .l3_dark_dim = ADP5520_BL_CUR_mA(0),
1586 .l2_trip = ADP5520_L2_COMP_CURR_uA(700),
1587 .l2_hyst = ADP5520_L2_COMP_CURR_uA(50),
1588 .l3_trip = ADP5520_L3_COMP_CURR_uA(80),
1589 .l3_hyst = ADP5520_L3_COMP_CURR_uA(20),
1593 * ADP5520/5501 LEDs Data
1596 static struct led_info adp5520_leds[] = {
1598 .name = "adp5520-led1",
1599 .default_trigger = "none",
1600 .flags = FLAG_ID_ADP5520_LED1_ADP5501_LED0 | ADP5520_LED_OFFT_600ms,
1602 #ifdef ADP5520_EN_ALL_LEDS
1604 .name = "adp5520-led2",
1605 .default_trigger = "none",
1606 .flags = FLAG_ID_ADP5520_LED2_ADP5501_LED1,
1609 .name = "adp5520-led3",
1610 .default_trigger = "none",
1611 .flags = FLAG_ID_ADP5520_LED3_ADP5501_LED2,
1616 static struct adp5520_leds_platform_data adp5520_leds_data = {
1617 .num_leds = ARRAY_SIZE(adp5520_leds),
1618 .leds = adp5520_leds,
1619 .fade_in = ADP5520_FADE_T_600ms,
1620 .fade_out = ADP5520_FADE_T_600ms,
1621 .led_on_time = ADP5520_LED_ONT_600ms,
1628 static struct adp5520_gpio_platform_data adp5520_gpio_data = {
1630 .gpio_en_mask = ADP5520_GPIO_C1 | ADP5520_GPIO_C2 | ADP5520_GPIO_R2,
1631 .gpio_pullup_mask = ADP5520_GPIO_C1 | ADP5520_GPIO_C2 | ADP5520_GPIO_R2,
1635 * ADP5520 Keypad Data
1638 static const unsigned short adp5520_keymap[ADP5520_KEYMAPSIZE] = {
1639 [ADP5520_KEY(0, 0)] = KEY_GRAVE,
1640 [ADP5520_KEY(0, 1)] = KEY_1,
1641 [ADP5520_KEY(0, 2)] = KEY_2,
1642 [ADP5520_KEY(0, 3)] = KEY_3,
1643 [ADP5520_KEY(1, 0)] = KEY_4,
1644 [ADP5520_KEY(1, 1)] = KEY_5,
1645 [ADP5520_KEY(1, 2)] = KEY_6,
1646 [ADP5520_KEY(1, 3)] = KEY_7,
1647 [ADP5520_KEY(2, 0)] = KEY_8,
1648 [ADP5520_KEY(2, 1)] = KEY_9,
1649 [ADP5520_KEY(2, 2)] = KEY_0,
1650 [ADP5520_KEY(2, 3)] = KEY_MINUS,
1651 [ADP5520_KEY(3, 0)] = KEY_EQUAL,
1652 [ADP5520_KEY(3, 1)] = KEY_BACKSLASH,
1653 [ADP5520_KEY(3, 2)] = KEY_BACKSPACE,
1654 [ADP5520_KEY(3, 3)] = KEY_ENTER,
1657 static struct adp5520_keys_platform_data adp5520_keys_data = {
1658 .rows_en_mask = ADP5520_ROW_R3 | ADP5520_ROW_R2 | ADP5520_ROW_R1 | ADP5520_ROW_R0,
1659 .cols_en_mask = ADP5520_COL_C3 | ADP5520_COL_C2 | ADP5520_COL_C1 | ADP5520_COL_C0,
1660 .keymap = adp5520_keymap,
1661 .keymapsize = ARRAY_SIZE(adp5520_keymap),
1666 * ADP5520/5501 Multifuction Device Init Data
1669 static struct adp5520_platform_data adp5520_pdev_data = {
1670 .backlight = &adp5520_backlight_data,
1671 .leds = &adp5520_leds_data,
1672 .gpio = &adp5520_gpio_data,
1673 .keys = &adp5520_keys_data,
1678 #if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
1679 static struct adp5588_gpio_platform_data adp5588_gpio_data = {
1681 .pullup_dis_mask = 0,
1685 #if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE)
1686 #include <linux/i2c/adp8870.h>
1687 static struct led_info adp8870_leds[] = {
1689 .name = "adp8870-led7",
1690 .default_trigger = "none",
1691 .flags = ADP8870_LED_D7 | ADP8870_LED_OFFT_600ms,
1696 static struct adp8870_backlight_platform_data adp8870_pdata = {
1697 .bl_led_assign = ADP8870_BL_D1 | ADP8870_BL_D2 | ADP8870_BL_D3 |
1698 ADP8870_BL_D4 | ADP8870_BL_D5 | ADP8870_BL_D6, /* 1 = Backlight 0 = Individual LED */
1699 .pwm_assign = 0, /* 1 = Enables PWM mode */
1701 .bl_fade_in = ADP8870_FADE_T_1200ms, /* Backlight Fade-In Timer */
1702 .bl_fade_out = ADP8870_FADE_T_1200ms, /* Backlight Fade-Out Timer */
1703 .bl_fade_law = ADP8870_FADE_LAW_CUBIC1, /* fade-on/fade-off transfer characteristic */
1705 .en_ambl_sens = 1, /* 1 = enable ambient light sensor */
1706 .abml_filt = ADP8870_BL_AMBL_FILT_320ms, /* Light sensor filter time */
1708 .l1_daylight_max = ADP8870_BL_CUR_mA(20), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1709 .l1_daylight_dim = ADP8870_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1710 .l2_bright_max = ADP8870_BL_CUR_mA(14), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1711 .l2_bright_dim = ADP8870_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1712 .l3_office_max = ADP8870_BL_CUR_mA(6), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1713 .l3_office_dim = ADP8870_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1714 .l4_indoor_max = ADP8870_BL_CUR_mA(3), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1715 .l4_indor_dim = ADP8870_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1716 .l5_dark_max = ADP8870_BL_CUR_mA(2), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1717 .l5_dark_dim = ADP8870_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1719 .l2_trip = ADP8870_L2_COMP_CURR_uA(710), /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
1720 .l2_hyst = ADP8870_L2_COMP_CURR_uA(73), /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
1721 .l3_trip = ADP8870_L3_COMP_CURR_uA(389), /* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
1722 .l3_hyst = ADP8870_L3_COMP_CURR_uA(54), /* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
1723 .l4_trip = ADP8870_L4_COMP_CURR_uA(167), /* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
1724 .l4_hyst = ADP8870_L4_COMP_CURR_uA(16), /* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
1725 .l5_trip = ADP8870_L5_COMP_CURR_uA(43), /* use L5_COMP_CURR_uA(I) 0 <= I <= 138 uA */
1726 .l5_hyst = ADP8870_L5_COMP_CURR_uA(11), /* use L6_COMP_CURR_uA(I) 0 <= I <= 138 uA */
1728 .leds = adp8870_leds,
1729 .num_leds = ARRAY_SIZE(adp8870_leds),
1730 .led_fade_law = ADP8870_FADE_LAW_SQUARE, /* fade-on/fade-off transfer characteristic */
1731 .led_fade_in = ADP8870_FADE_T_600ms,
1732 .led_fade_out = ADP8870_FADE_T_600ms,
1733 .led_on_time = ADP8870_LED_ONT_200ms,
1737 #if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
1738 #include <linux/i2c/adp8860.h>
1739 static struct led_info adp8860_leds[] = {
1741 .name = "adp8860-led7",
1742 .default_trigger = "none",
1743 .flags = ADP8860_LED_D7 | ADP8860_LED_OFFT_600ms,
1747 static struct adp8860_backlight_platform_data adp8860_pdata = {
1748 .bl_led_assign = ADP8860_BL_D1 | ADP8860_BL_D2 | ADP8860_BL_D3 |
1749 ADP8860_BL_D4 | ADP8860_BL_D5 | ADP8860_BL_D6, /* 1 = Backlight 0 = Individual LED */
1751 .bl_fade_in = ADP8860_FADE_T_1200ms, /* Backlight Fade-In Timer */
1752 .bl_fade_out = ADP8860_FADE_T_1200ms, /* Backlight Fade-Out Timer */
1753 .bl_fade_law = ADP8860_FADE_LAW_CUBIC1, /* fade-on/fade-off transfer characteristic */
1755 .en_ambl_sens = 1, /* 1 = enable ambient light sensor */
1756 .abml_filt = ADP8860_BL_AMBL_FILT_320ms, /* Light sensor filter time */
1758 .l1_daylight_max = ADP8860_BL_CUR_mA(20), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1759 .l1_daylight_dim = ADP8860_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1760 .l2_office_max = ADP8860_BL_CUR_mA(6), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1761 .l2_office_dim = ADP8860_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1762 .l3_dark_max = ADP8860_BL_CUR_mA(2), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1763 .l3_dark_dim = ADP8860_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1765 .l2_trip = ADP8860_L2_COMP_CURR_uA(710), /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
1766 .l2_hyst = ADP8860_L2_COMP_CURR_uA(73), /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
1767 .l3_trip = ADP8860_L3_COMP_CURR_uA(43), /* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
1768 .l3_hyst = ADP8860_L3_COMP_CURR_uA(11), /* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
1770 .leds = adp8860_leds,
1771 .num_leds = ARRAY_SIZE(adp8860_leds),
1772 .led_fade_law = ADP8860_FADE_LAW_SQUARE, /* fade-on/fade-off transfer characteristic */
1773 .led_fade_in = ADP8860_FADE_T_600ms,
1774 .led_fade_out = ADP8860_FADE_T_600ms,
1775 .led_on_time = ADP8860_LED_ONT_200ms,
1779 #if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1780 static struct regulator_consumer_supply ad5398_consumer = {
1781 .supply = "current",
1784 static struct regulator_init_data ad5398_regulator_data = {
1786 .name = "current range",
1788 .valid_ops_mask = REGULATOR_CHANGE_CURRENT | REGULATOR_CHANGE_STATUS,
1790 .num_consumer_supplies = 1,
1791 .consumer_supplies = &ad5398_consumer,
1794 static struct ad5398_platform_data ad5398_i2c_platform_data = {
1796 .current_offset = 4,
1797 .regulator_data = &ad5398_regulator_data,
1800 #if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
1801 defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
1802 static struct platform_device ad5398_virt_consumer_device = {
1803 .name = "reg-virt-consumer",
1806 .platform_data = "current", /* Passed to driver */
1810 #if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
1811 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
1812 static struct regulator_bulk_data ad5398_bulk_data = {
1813 .supply = "current",
1816 static struct regulator_userspace_consumer_data ad5398_userspace_comsumer_data = {
1819 .supplies = &ad5398_bulk_data,
1822 static struct platform_device ad5398_userspace_consumer_device = {
1823 .name = "reg-userspace-consumer",
1826 .platform_data = &ad5398_userspace_comsumer_data,
1832 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
1833 #if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
1835 I2C_BOARD_INFO("ad1937", 0x04),
1839 #if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE)
1841 I2C_BOARD_INFO("adav803", 0x10),
1845 #if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
1847 I2C_BOARD_INFO("ad7142_captouch", 0x2C),
1849 .platform_data = (void *)&ad7142_i2c_platform_data,
1853 #if defined(CONFIG_AD7150) || defined(CONFIG_AD7150_MODULE)
1855 I2C_BOARD_INFO("ad7150", 0x48),
1856 .irq = IRQ_PG5, /* fixme: use real interrupt number */
1860 #if defined(CONFIG_AD7152) || defined(CONFIG_AD7152_MODULE)
1862 I2C_BOARD_INFO("ad7152", 0x48),
1866 #if defined(CONFIG_AD774X) || defined(CONFIG_AD774X_MODULE)
1868 I2C_BOARD_INFO("ad774x", 0x48),
1872 #if defined(CONFIG_AD7414) || defined(CONFIG_AD7414_MODULE)
1874 I2C_BOARD_INFO("ad7414", 0x9),
1877 * platform_data pointer is borrwoed by the driver to
1878 * store custimer defined IRQ ALART level mode.
1879 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
1881 .platform_data = (void *)IRQF_TRIGGER_LOW,
1885 #if defined(CONFIG_AD7416) || defined(CONFIG_AD7416_MODULE)
1887 I2C_BOARD_INFO("ad7417", 0xb),
1890 * platform_data pointer is borrwoed by the driver to
1891 * store custimer defined IRQ ALART level mode.
1892 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
1894 .platform_data = (void *)IRQF_TRIGGER_LOW,
1898 #if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
1900 I2C_BOARD_INFO("pcf8574_lcd", 0x22),
1903 #if defined(CONFIG_INPUT_PCF8574) || defined(CONFIG_INPUT_PCF8574_MODULE)
1905 I2C_BOARD_INFO("pcf8574_keypad", 0x27),
1909 #if defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
1911 I2C_BOARD_INFO("ad7879", 0x2F),
1913 .platform_data = (void *)&bfin_ad7879_ts_info,
1916 #if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
1918 I2C_BOARD_INFO("adp5588-keys", 0x34),
1920 .platform_data = (void *)&adp5588_kpad_data,
1923 #if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
1925 I2C_BOARD_INFO("pmic-adp5520", 0x32),
1927 .platform_data = (void *)&adp5520_pdev_data,
1930 #if defined(CONFIG_INPUT_ADXL34X_I2C) || defined(CONFIG_INPUT_ADXL34X_I2C_MODULE)
1932 I2C_BOARD_INFO("adxl34x", 0x53),
1934 .platform_data = (void *)&adxl34x_info,
1937 #if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
1939 I2C_BOARD_INFO("adp5588-gpio", 0x34),
1940 .platform_data = (void *)&adp5588_gpio_data,
1943 #if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
1945 I2C_BOARD_INFO("bfin-adv7393", 0x2B),
1948 #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
1950 I2C_BOARD_INFO("bf537-lq035-ad5280", 0x2C),
1953 #if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE)
1955 I2C_BOARD_INFO("adp8870", 0x2B),
1956 .platform_data = (void *)&adp8870_pdata,
1959 #if defined(CONFIG_SND_SOC_ADAU1371) || defined(CONFIG_SND_SOC_ADAU1371_MODULE)
1961 I2C_BOARD_INFO("adau1371", 0x1A),
1964 #if defined(CONFIG_SND_SOC_ADAU1761) || defined(CONFIG_SND_SOC_ADAU1761_MODULE)
1966 I2C_BOARD_INFO("adau1761", 0x38),
1969 #if defined(CONFIG_SND_SOC_ADAU1361) || defined(CONFIG_SND_SOC_ADAU1361_MODULE)
1971 I2C_BOARD_INFO("adau1361", 0x38),
1974 #if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE)
1976 I2C_BOARD_INFO("ad5258", 0x18),
1979 #if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE)
1981 I2C_BOARD_INFO("ssm2602", 0x1b),
1984 #if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1986 I2C_BOARD_INFO("ad5398", 0xC),
1987 .platform_data = (void *)&ad5398_i2c_platform_data,
1990 #if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
1992 I2C_BOARD_INFO("adp8860", 0x2A),
1993 .platform_data = (void *)&adp8860_pdata,
1996 #if defined(CONFIG_SND_SOC_ADAU1373) || defined(CONFIG_SND_SOC_ADAU1373_MODULE)
1998 I2C_BOARD_INFO("adau1373", 0x1A),
2003 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
2004 #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2005 static struct resource bfin_sport0_uart_resources[] = {
2007 .start = SPORT0_TCR1,
2008 .end = SPORT0_MRCS3+4,
2009 .flags = IORESOURCE_MEM,
2012 .start = IRQ_SPORT0_RX,
2013 .end = IRQ_SPORT0_RX+1,
2014 .flags = IORESOURCE_IRQ,
2017 .start = IRQ_SPORT0_ERROR,
2018 .end = IRQ_SPORT0_ERROR,
2019 .flags = IORESOURCE_IRQ,
2023 unsigned short bfin_sport0_peripherals[] = {
2024 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
2025 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
2028 static struct platform_device bfin_sport0_uart_device = {
2029 .name = "bfin-sport-uart",
2031 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
2032 .resource = bfin_sport0_uart_resources,
2034 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
2038 #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2039 static struct resource bfin_sport1_uart_resources[] = {
2041 .start = SPORT1_TCR1,
2042 .end = SPORT1_MRCS3+4,
2043 .flags = IORESOURCE_MEM,
2046 .start = IRQ_SPORT1_RX,
2047 .end = IRQ_SPORT1_RX+1,
2048 .flags = IORESOURCE_IRQ,
2051 .start = IRQ_SPORT1_ERROR,
2052 .end = IRQ_SPORT1_ERROR,
2053 .flags = IORESOURCE_IRQ,
2057 unsigned short bfin_sport1_peripherals[] = {
2058 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
2059 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
2062 static struct platform_device bfin_sport1_uart_device = {
2063 .name = "bfin-sport-uart",
2065 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
2066 .resource = bfin_sport1_uart_resources,
2068 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
2074 #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
2075 #define CF_IDE_NAND_CARD_USE_HDD_INTERFACE
2076 /* #define CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE */
2078 #ifdef CF_IDE_NAND_CARD_USE_HDD_INTERFACE
2079 #define PATA_INT IRQ_PF5
2080 static struct pata_platform_info bfin_pata_platform_data = {
2082 .irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
2085 static struct resource bfin_pata_resources[] = {
2087 .start = 0x20314020,
2089 .flags = IORESOURCE_MEM,
2092 .start = 0x2031401C,
2094 .flags = IORESOURCE_MEM,
2099 .flags = IORESOURCE_IRQ,
2102 #elif defined(CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE)
2103 static struct pata_platform_info bfin_pata_platform_data = {
2106 /* CompactFlash Storage Card Memory Mapped Adressing
2109 static struct resource bfin_pata_resources[] = {
2111 .start = 0x20211800,
2113 .flags = IORESOURCE_MEM,
2116 .start = 0x2021180E, /* Device Ctl */
2118 .flags = IORESOURCE_MEM,
2123 static struct platform_device bfin_pata_device = {
2124 .name = "pata_platform",
2126 .num_resources = ARRAY_SIZE(bfin_pata_resources),
2127 .resource = bfin_pata_resources,
2129 .platform_data = &bfin_pata_platform_data,
2134 static const unsigned int cclk_vlev_datasheet[] =
2136 VRPAIR(VLEV_085, 250000000),
2137 VRPAIR(VLEV_090, 376000000),
2138 VRPAIR(VLEV_095, 426000000),
2139 VRPAIR(VLEV_100, 426000000),
2140 VRPAIR(VLEV_105, 476000000),
2141 VRPAIR(VLEV_110, 476000000),
2142 VRPAIR(VLEV_115, 476000000),
2143 VRPAIR(VLEV_120, 500000000),
2144 VRPAIR(VLEV_125, 533000000),
2145 VRPAIR(VLEV_130, 600000000),
2148 static struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
2149 .tuple_tab = cclk_vlev_datasheet,
2150 .tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
2151 .vr_settling_time = 25 /* us */,
2154 static struct platform_device bfin_dpmc = {
2155 .name = "bfin dpmc",
2157 .platform_data = &bfin_dmpc_vreg_data,
2161 #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2162 static struct platform_device bfin_i2s = {
2164 .id = CONFIG_SND_BF5XX_SPORT_NUM,
2165 /* TODO: add platform data here */
2169 #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
2170 static struct platform_device bfin_tdm = {
2172 .id = CONFIG_SND_BF5XX_SPORT_NUM,
2173 /* TODO: add platform data here */
2177 #if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2178 static struct platform_device bfin_ac97 = {
2179 .name = "bfin-ac97",
2180 .id = CONFIG_SND_BF5XX_SPORT_NUM,
2181 /* TODO: add platform data here */
2185 #if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2186 #define REGULATOR_ADP122 "adp122"
2187 #define REGULATOR_ADP150 "adp150"
2189 static struct regulator_consumer_supply adp122_consumers = {
2190 .supply = REGULATOR_ADP122,
2193 static struct regulator_consumer_supply adp150_consumers = {
2194 .supply = REGULATOR_ADP150,
2197 static struct regulator_init_data adp_switch_regulator_data[] = {
2200 .name = REGULATOR_ADP122,
2201 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
2205 .num_consumer_supplies = 1, /* only 1 */
2206 .consumer_supplies = &adp122_consumers,
2207 .driver_data = (void *)GPIO_PF2, /* gpio port only */
2211 .name = REGULATOR_ADP150,
2212 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
2216 .num_consumer_supplies = 1, /* only 1 */
2217 .consumer_supplies = &adp150_consumers,
2218 .driver_data = (void *)GPIO_PF3, /* gpio port only */
2222 static struct adp_switch_platform_data adp_switch_pdata = {
2223 .regulator_num = ARRAY_SIZE(adp_switch_regulator_data),
2224 .regulator_data = adp_switch_regulator_data,
2227 static struct platform_device adp_switch_device = {
2228 .name = "adp_switch",
2231 .platform_data = &adp_switch_pdata,
2235 #if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2236 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2237 static struct regulator_bulk_data adp122_bulk_data = {
2238 .supply = REGULATOR_ADP122,
2241 static struct regulator_userspace_consumer_data adp122_userspace_comsumer_data = {
2242 .name = REGULATOR_ADP122,
2244 .supplies = &adp122_bulk_data,
2247 static struct platform_device adp122_userspace_consumer_device = {
2248 .name = "reg-userspace-consumer",
2251 .platform_data = &adp122_userspace_comsumer_data,
2255 static struct regulator_bulk_data adp150_bulk_data = {
2256 .supply = REGULATOR_ADP150,
2259 static struct regulator_userspace_consumer_data adp150_userspace_comsumer_data = {
2260 .name = REGULATOR_ADP150,
2262 .supplies = &adp150_bulk_data,
2265 static struct platform_device adp150_userspace_consumer_device = {
2266 .name = "reg-userspace-consumer",
2269 .platform_data = &adp150_userspace_comsumer_data,
2276 static struct platform_device *stamp_devices[] __initdata = {
2280 #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
2281 &bfin_pcmcia_cf_device,
2284 #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
2288 #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
2292 #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
2293 &isp1362_hcd_device,
2296 #if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
2297 &bfin_isp1760_device,
2300 #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
2304 #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
2308 #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
2312 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
2317 #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
2318 &net2272_bfin_device,
2321 #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
2325 #if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
2326 &bfin_sport_spi0_device,
2327 &bfin_sport_spi1_device,
2330 #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
2334 #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
2335 &bfin_lq035q1_device,
2338 #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
2339 #ifdef CONFIG_SERIAL_BFIN_UART0
2342 #ifdef CONFIG_SERIAL_BFIN_UART1
2347 #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
2348 #ifdef CONFIG_BFIN_SIR0
2351 #ifdef CONFIG_BFIN_SIR1
2356 #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
2357 &i2c_bfin_twi_device,
2360 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
2361 #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2362 &bfin_sport0_uart_device,
2364 #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2365 &bfin_sport1_uart_device,
2369 #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
2373 #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
2374 &bfin_device_gpiokeys,
2377 #if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
2378 &bfin_async_nand_device,
2381 #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
2382 &stamp_flash_device,
2385 #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2389 #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
2393 #if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2396 #if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
2397 #if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
2398 defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
2399 &ad5398_virt_consumer_device,
2401 #if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2402 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2403 &ad5398_userspace_consumer_device,
2407 #if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2409 #if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2410 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2411 &adp122_userspace_consumer_device,
2412 &adp150_userspace_consumer_device,
2417 static int __init stamp_init(void)
2419 printk(KERN_INFO "%s(): registering device resources\n", __func__);
2420 bfin_plat_nand_init();
2422 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
2423 i2c_register_board_info(0, bfin_i2c_board_info,
2424 ARRAY_SIZE(bfin_i2c_board_info));
2425 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
2430 arch_initcall(stamp_init);
2433 static struct platform_device *stamp_early_devices[] __initdata = {
2434 #if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
2435 #ifdef CONFIG_SERIAL_BFIN_UART0
2438 #ifdef CONFIG_SERIAL_BFIN_UART1
2443 #if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
2444 #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2445 &bfin_sport0_uart_device,
2447 #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2448 &bfin_sport1_uart_device,
2453 void __init native_machine_early_platform_add_devices(void)
2455 printk(KERN_INFO "register early platform devices\n");
2456 early_platform_add_devices(stamp_early_devices,
2457 ARRAY_SIZE(stamp_early_devices));
2460 void native_machine_restart(char *cmd)
2462 /* workaround reboot hang when booting from SPI */
2463 if ((bfin_read_SYSCR() & 0x7) == 0x3)
2464 bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
2468 * Currently the MAC address is saved in Flash by U-Boot
2470 #define FLASH_MAC 0x203f0000
2471 void bfin_get_ether_addr(char *addr)
2473 *(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
2474 *(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
2476 EXPORT_SYMBOL(bfin_get_ether_addr);