提交 28190145 编写于 作者: L Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin:
  blackfin: bf561: add adv7183 capture support
  blackfin: bf537: add capture support
  blackfin: bf548: add capture support
  blackfin: time-ts: rm unused func broadcast_timer_setup()
  blackfin: i2c-lcd: change default clock rate
  blackfin: mac: dsa: add vlan mask in board file
  blackfin: bf537: change num_chipselect for spi-sport
  blackfin: serial: bfin-uart: remove unused field
  bf54x: get mem size: missing break in switch
  blackfin: smp: fix msg queue overflow issue
  blackfin: config: update macro SPI_BFIN in board file
  blackfin: config: update def config for all boards
  blackfin: smp: cleanup smp code
  blackfin: smp: add suspend and wakeup irq flags
  blackfin: bf533-stamp: add missed patches for new asoc driver
  blackfin: bf533-stamp: fix ad1836 name
...@@ -80,7 +80,7 @@ CONFIG_I2C_CHARDEV=y ...@@ -80,7 +80,7 @@ CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -97,7 +97,7 @@ CONFIG_I2C_CHARDEV=m ...@@ -97,7 +97,7 @@ CONFIG_I2C_CHARDEV=m
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
......
...@@ -68,7 +68,7 @@ CONFIG_I2C_ALGOBIT=y ...@@ -68,7 +68,7 @@ CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=400 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=400
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -105,7 +105,7 @@ CONFIG_I2C_CHARDEV=m ...@@ -105,7 +105,7 @@ CONFIG_I2C_CHARDEV=m
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -99,7 +99,7 @@ CONFIG_I2C_CHARDEV=m ...@@ -99,7 +99,7 @@ CONFIG_I2C_CHARDEV=m
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -81,7 +81,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -81,7 +81,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -84,7 +84,7 @@ CONFIG_I2C=m ...@@ -84,7 +84,7 @@ CONFIG_I2C=m
CONFIG_I2C_CHARDEV=m CONFIG_I2C_CHARDEV=m
CONFIG_I2C_GPIO=m CONFIG_I2C_GPIO=m
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -94,7 +94,7 @@ CONFIG_I2C_CHARDEV=m ...@@ -94,7 +94,7 @@ CONFIG_I2C_CHARDEV=m
CONFIG_I2C_BLACKFIN_TWI=m CONFIG_I2C_BLACKFIN_TWI=m
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -101,7 +101,7 @@ CONFIG_I2C=m ...@@ -101,7 +101,7 @@ CONFIG_I2C=m
CONFIG_I2C_BLACKFIN_TWI=m CONFIG_I2C_BLACKFIN_TWI=m
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -113,7 +113,7 @@ CONFIG_I2C_CHARDEV=y ...@@ -113,7 +113,7 @@ CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -85,7 +85,7 @@ CONFIG_I2C=y ...@@ -85,7 +85,7 @@ CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y CONFIG_I2C_CHARDEV=y
CONFIG_I2C_PCA_PLATFORM=y CONFIG_I2C_PCA_PLATFORM=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_SPI_SPIDEV=y CONFIG_SPI_SPIDEV=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
......
...@@ -84,7 +84,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -84,7 +84,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -86,7 +86,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -86,7 +86,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -80,7 +80,7 @@ CONFIG_I2C=m ...@@ -80,7 +80,7 @@ CONFIG_I2C=m
CONFIG_I2C_CHARDEV=m CONFIG_I2C_CHARDEV=m
CONFIG_I2C_GPIO=m CONFIG_I2C_GPIO=m
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_SPI_SPIDEV=m CONFIG_SPI_SPIDEV=m
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
......
...@@ -88,7 +88,7 @@ CONFIG_I2C_CHARDEV=m ...@@ -88,7 +88,7 @@ CONFIG_I2C_CHARDEV=m
CONFIG_I2C_BLACKFIN_TWI=m CONFIG_I2C_BLACKFIN_TWI=m
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
......
...@@ -57,7 +57,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -57,7 +57,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
# CONFIG_USB_SUPPORT is not set # CONFIG_USB_SUPPORT is not set
CONFIG_MMC=y CONFIG_MMC=y
......
...@@ -78,7 +78,7 @@ CONFIG_SERIAL_BFIN_UART1=y ...@@ -78,7 +78,7 @@ CONFIG_SERIAL_BFIN_UART1=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
CONFIG_USB_GADGET=m CONFIG_USB_GADGET=m
......
...@@ -72,7 +72,7 @@ CONFIG_SERIAL_BFIN_UART1=y ...@@ -72,7 +72,7 @@ CONFIG_SERIAL_BFIN_UART1=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
CONFIG_USB_GADGET=y CONFIG_USB_GADGET=y
......
...@@ -89,7 +89,7 @@ CONFIG_I2C=y ...@@ -89,7 +89,7 @@ CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
CONFIG_BFIN_WDT=y CONFIG_BFIN_WDT=y
......
...@@ -78,7 +78,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -78,7 +78,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
CONFIG_USB_GADGET=m CONFIG_USB_GADGET=m
......
...@@ -78,7 +78,7 @@ CONFIG_I2C=y ...@@ -78,7 +78,7 @@ CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_SPI_SPIDEV=y CONFIG_SPI_SPIDEV=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
......
...@@ -68,7 +68,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -68,7 +68,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_SPI_SPIDEV=y CONFIG_SPI_SPIDEV=y
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
CONFIG_SOUND=m CONFIG_SOUND=m
......
...@@ -70,7 +70,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y ...@@ -70,7 +70,7 @@ CONFIG_SERIAL_BFIN_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
CONFIG_USB=y CONFIG_USB=y
......
...@@ -84,7 +84,7 @@ CONFIG_I2C_CHARDEV=y ...@@ -84,7 +84,7 @@ CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_FB=y CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y CONFIG_FIRMWARE_EDID=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_LCD_SUPPORT=y
......
...@@ -71,7 +71,7 @@ CONFIG_I2C_CHARDEV=y ...@@ -71,7 +71,7 @@ CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_HWMON=m CONFIG_HWMON=m
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
CONFIG_BFIN_WDT=y CONFIG_BFIN_WDT=y
......
...@@ -92,7 +92,7 @@ CONFIG_I2C_CHARDEV=y ...@@ -92,7 +92,7 @@ CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BLACKFIN_TWI=y CONFIG_I2C_BLACKFIN_TWI=y
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
......
...@@ -70,7 +70,7 @@ CONFIG_SERIAL_BFIN_UART1=y ...@@ -70,7 +70,7 @@ CONFIG_SERIAL_BFIN_UART1=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_BFIN=y CONFIG_SPI_BFIN5XX=y
# CONFIG_HWMON is not set # CONFIG_HWMON is not set
CONFIG_WATCHDOG=y CONFIG_WATCHDOG=y
CONFIG_BFIN_WDT=y CONFIG_BFIN_WDT=y
......
...@@ -51,9 +51,6 @@ struct bfin_serial_port { ...@@ -51,9 +51,6 @@ struct bfin_serial_port {
#elif ANOMALY_05000363 #elif ANOMALY_05000363
unsigned int anomaly_threshold; unsigned int anomaly_threshold;
#endif #endif
#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS
int scts;
#endif
#if defined(CONFIG_SERIAL_BFIN_CTSRTS) || \ #if defined(CONFIG_SERIAL_BFIN_CTSRTS) || \
defined(CONFIG_SERIAL_BFIN_HARD_CTSRTS) defined(CONFIG_SERIAL_BFIN_HARD_CTSRTS)
int cts_pin; int cts_pin;
......
...@@ -14,6 +14,9 @@ struct blackfin_cpudata { ...@@ -14,6 +14,9 @@ struct blackfin_cpudata {
struct cpu cpu; struct cpu cpu;
unsigned int imemctl; unsigned int imemctl;
unsigned int dmemctl; unsigned int dmemctl;
#ifdef CONFIG_SMP
struct task_struct *idle;
#endif
}; };
DECLARE_PER_CPU(struct blackfin_cpudata, cpu_data); DECLARE_PER_CPU(struct blackfin_cpudata, cpu_data);
......
...@@ -46,4 +46,7 @@ int __cpu_disable(void); ...@@ -46,4 +46,7 @@ int __cpu_disable(void);
int __cpu_die(unsigned int cpu); int __cpu_die(unsigned int cpu);
#endif #endif
void smp_timer_broadcast(const struct cpumask *mask);
#endif /* !__ASM_BLACKFIN_SMP_H */ #endif /* !__ASM_BLACKFIN_SMP_H */
...@@ -828,10 +828,18 @@ static inline int __init get_mem_size(void) ...@@ -828,10 +828,18 @@ static inline int __init get_mem_size(void)
u32 ddrctl = bfin_read_EBIU_DDRCTL1(); u32 ddrctl = bfin_read_EBIU_DDRCTL1();
int ret = 0; int ret = 0;
switch (ddrctl & 0xc0000) { switch (ddrctl & 0xc0000) {
case DEVSZ_64: ret = 64 / 8; case DEVSZ_64:
case DEVSZ_128: ret = 128 / 8; ret = 64 / 8;
case DEVSZ_256: ret = 256 / 8; break;
case DEVSZ_512: ret = 512 / 8; case DEVSZ_128:
ret = 128 / 8;
break;
case DEVSZ_256:
ret = 256 / 8;
break;
case DEVSZ_512:
ret = 512 / 8;
break;
} }
switch (ddrctl & 0x30000) { switch (ddrctl & 0x30000) {
case DEVWD_4: ret *= 2; case DEVWD_4: ret *= 2;
......
...@@ -219,7 +219,7 @@ static void __init bfin_gptmr0_clockevent_init(struct clock_event_device *evt) ...@@ -219,7 +219,7 @@ static void __init bfin_gptmr0_clockevent_init(struct clock_event_device *evt)
#if defined(CONFIG_TICKSOURCE_CORETMR) #if defined(CONFIG_TICKSOURCE_CORETMR)
/* per-cpu local core timer */ /* per-cpu local core timer */
static DEFINE_PER_CPU(struct clock_event_device, coretmr_events); DEFINE_PER_CPU(struct clock_event_device, coretmr_events);
static int bfin_coretmr_set_next_event(unsigned long cycles, static int bfin_coretmr_set_next_event(unsigned long cycles,
struct clock_event_device *evt) struct clock_event_device *evt)
...@@ -281,6 +281,7 @@ void bfin_coretmr_init(void) ...@@ -281,6 +281,7 @@ void bfin_coretmr_init(void)
#ifdef CONFIG_CORE_TIMER_IRQ_L1 #ifdef CONFIG_CORE_TIMER_IRQ_L1
__attribute__((l1_text)) __attribute__((l1_text))
#endif #endif
irqreturn_t bfin_coretmr_interrupt(int irq, void *dev_id) irqreturn_t bfin_coretmr_interrupt(int irq, void *dev_id)
{ {
int cpu = smp_processor_id(); int cpu = smp_processor_id();
...@@ -306,6 +307,11 @@ void bfin_coretmr_clockevent_init(void) ...@@ -306,6 +307,11 @@ void bfin_coretmr_clockevent_init(void)
unsigned int cpu = smp_processor_id(); unsigned int cpu = smp_processor_id();
struct clock_event_device *evt = &per_cpu(coretmr_events, cpu); struct clock_event_device *evt = &per_cpu(coretmr_events, cpu);
#ifdef CONFIG_SMP
evt->broadcast = smp_timer_broadcast;
#endif
evt->name = "bfin_core_timer"; evt->name = "bfin_core_timer";
evt->rating = 350; evt->rating = 350;
evt->irq = -1; evt->irq = -1;
......
...@@ -61,7 +61,7 @@ static struct physmap_flash_data ezbrd_flash_data = { ...@@ -61,7 +61,7 @@ static struct physmap_flash_data ezbrd_flash_data = {
static struct resource ezbrd_flash_resource = { static struct resource ezbrd_flash_resource = {
.start = 0x20000000, .start = 0x20000000,
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
.end = 0x202fffff, .end = 0x202fffff,
#else #else
.end = 0x203fffff, .end = 0x203fffff,
...@@ -122,6 +122,8 @@ static struct bfin_mii_bus_platform_data bfin_mii_bus_data = { ...@@ -122,6 +122,8 @@ static struct bfin_mii_bus_platform_data bfin_mii_bus_data = {
#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE) #if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
.phy_mask = 0xfff7, /* Only probe the port phy connect to the on chip MAC */ .phy_mask = 0xfff7, /* Only probe the port phy connect to the on chip MAC */
#endif #endif
.vlan1_mask = 1,
.vlan2_mask = 2,
}; };
static struct platform_device bfin_mii_bus = { static struct platform_device bfin_mii_bus = {
...@@ -292,7 +294,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -292,7 +294,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}; };
/* SPI controller data */ /* SPI controller data */
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 6, .num_chipselect = 6,
...@@ -715,7 +717,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -715,7 +717,7 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif #endif
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
&bfin_spi1_device, &bfin_spi1_device,
#endif #endif
...@@ -777,7 +779,7 @@ static int __init ezbrd_init(void) ...@@ -777,7 +779,7 @@ static int __init ezbrd_init(void)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
/* setup BF518-EZBRD GPIO pin PG11 to AMS2, PG15 to AMS3. */ /* setup BF518-EZBRD GPIO pin PG11 to AMS2, PG15 to AMS3. */
peripheral_request(P_AMS2, "ParaFlash"); peripheral_request(P_AMS2, "ParaFlash");
#if !defined(CONFIG_SPI_BFIN) && !defined(CONFIG_SPI_BFIN_MODULE) #if !defined(CONFIG_SPI_BFIN5XX) && !defined(CONFIG_SPI_BFIN5XX_MODULE)
peripheral_request(P_AMS3, "ParaFlash"); peripheral_request(P_AMS3, "ParaFlash");
#endif #endif
return 0; return 0;
......
...@@ -228,7 +228,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -228,7 +228,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}; };
/* SPI controller data */ /* SPI controller data */
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 6, .num_chipselect = 6,
...@@ -635,7 +635,7 @@ static struct platform_device *tcm_devices[] __initdata = { ...@@ -635,7 +635,7 @@ static struct platform_device *tcm_devices[] __initdata = {
&bfin_mac_device, &bfin_mac_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
&bfin_spi1_device, &bfin_spi1_device,
#endif #endif
......
...@@ -334,7 +334,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -334,7 +334,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS, .num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS,
...@@ -744,7 +744,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -744,7 +744,7 @@ static struct platform_device *stamp_devices[] __initdata = {
&bfin_mac_device, &bfin_mac_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -444,7 +444,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -444,7 +444,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
...@@ -893,7 +893,7 @@ static struct platform_device *cmbf527_devices[] __initdata = { ...@@ -893,7 +893,7 @@ static struct platform_device *cmbf527_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -371,7 +371,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -371,7 +371,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
...@@ -776,7 +776,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -776,7 +776,7 @@ static struct platform_device *stamp_devices[] __initdata = {
&bfin_mac_device, &bfin_mac_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -664,7 +664,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -664,7 +664,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
...@@ -1189,7 +1189,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -1189,7 +1189,7 @@ static struct platform_device *stamp_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -448,7 +448,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -448,7 +448,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = EXP_GPIO_SPISEL_BASE + 8 + MAX_CTRL_CS, .num_chipselect = EXP_GPIO_SPISEL_BASE + 8 + MAX_CTRL_CS,
...@@ -831,7 +831,7 @@ static struct platform_device *tll6527m_devices[] __initdata = { ...@@ -831,7 +831,7 @@ static struct platform_device *tll6527m_devices[] __initdata = {
&bfin_mac_device, &bfin_mac_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -125,7 +125,7 @@ static struct platform_device net2272_bfin_device = { ...@@ -125,7 +125,7 @@ static struct platform_device net2272_bfin_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -398,7 +398,7 @@ static struct platform_device *h8606_devices[] __initdata = { ...@@ -398,7 +398,7 @@ static struct platform_device *h8606_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -428,7 +428,7 @@ static int __init H8606_init(void) ...@@ -428,7 +428,7 @@ static int __init H8606_init(void)
printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n"); printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n");
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(h8606_devices, ARRAY_SIZE(h8606_devices)); platform_add_devices(h8606_devices, ARRAY_SIZE(h8606_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
return 0; return 0;
......
...@@ -146,7 +146,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -146,7 +146,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct resource bfin_spi0_resource[] = { static struct resource bfin_spi0_resource[] = {
[0] = { [0] = {
...@@ -422,7 +422,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -422,7 +422,7 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
*/ */
const char bfin_board_name[] = "Bluetechnix CM BF533"; const char bfin_board_name[] = "Bluetechnix CM BF533";
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
static struct mtd_partition bfin_spi_flash_partitions[] = { static struct mtd_partition bfin_spi_flash_partitions[] = {
...@@ -536,7 +536,7 @@ static struct platform_device *cm_bf533_devices[] __initdata = { ...@@ -536,7 +536,7 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -549,7 +549,7 @@ static int __init cm_bf533_init(void) ...@@ -549,7 +549,7 @@ static int __init cm_bf533_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf533_devices, ARRAY_SIZE(cm_bf533_devices)); platform_add_devices(cm_bf533_devices, ARRAY_SIZE(cm_bf533_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
return 0; return 0;
......
...@@ -245,7 +245,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -245,7 +245,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct resource bfin_spi0_resource[] = { static struct resource bfin_spi0_resource[] = {
[0] = { [0] = {
...@@ -484,7 +484,7 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -484,7 +484,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
&smc91x_device, &smc91x_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -104,7 +104,7 @@ static struct platform_device dm9000_device2 = { ...@@ -104,7 +104,7 @@ static struct platform_device dm9000_device2 = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
...@@ -270,7 +270,7 @@ static struct platform_device *ip0x_devices[] __initdata = { ...@@ -270,7 +270,7 @@ static struct platform_device *ip0x_devices[] __initdata = {
#endif #endif
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&spi_bfin_master_device, &spi_bfin_master_device,
#endif #endif
......
...@@ -219,9 +219,10 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -219,9 +219,10 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}, },
#endif #endif
#if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) #if defined(CONFIG_SND_BF5XX_SOC_AD1836) || \
defined(CONFIG_SND_BF5XX_SOC_AD1836_MODULE)
{ {
.modalias = "ad183x", .modalias = "ad1836",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 0, .bus_num = 0,
.chip_select = 4, .chip_select = 4,
...@@ -251,7 +252,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -251,7 +252,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct resource bfin_spi0_resource[] = { static struct resource bfin_spi0_resource[] = {
[0] = { [0] = {
...@@ -471,7 +472,7 @@ static struct i2c_gpio_platform_data i2c_gpio_data = { ...@@ -471,7 +472,7 @@ static struct i2c_gpio_platform_data i2c_gpio_data = {
.scl_pin = GPIO_PF3, .scl_pin = GPIO_PF3,
.sda_is_open_drain = 0, .sda_is_open_drain = 0,
.scl_is_open_drain = 0, .scl_is_open_drain = 0,
.udelay = 40, .udelay = 10,
}; };
static struct platform_device i2c_gpio_device = { static struct platform_device i2c_gpio_device = {
...@@ -540,27 +541,150 @@ static struct platform_device bfin_dpmc = { ...@@ -540,27 +541,150 @@ static struct platform_device bfin_dpmc = {
}, },
}; };
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) || \
defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) \
|| defined(CONFIG_SND_BF5XX_AC97) || \
defined(CONFIG_SND_BF5XX_AC97_MODULE)
#include <asm/bfin_sport.h>
#define SPORT_REQ(x) \
[x] = {P_SPORT##x##_TFS, P_SPORT##x##_DTPRI, P_SPORT##x##_TSCLK, \
P_SPORT##x##_RFS, P_SPORT##x##_DRPRI, P_SPORT##x##_RSCLK, 0}
static const u16 bfin_snd_pin[][7] = {
SPORT_REQ(0),
SPORT_REQ(1),
};
static struct bfin_snd_platform_data bfin_snd_data[] = {
{
.pin_req = &bfin_snd_pin[0][0],
},
{
.pin_req = &bfin_snd_pin[1][0],
},
};
#define BFIN_SND_RES(x) \
[x] = { \
{ \
.start = SPORT##x##_TCR1, \
.end = SPORT##x##_TCR1, \
.flags = IORESOURCE_MEM \
}, \
{ \
.start = CH_SPORT##x##_RX, \
.end = CH_SPORT##x##_RX, \
.flags = IORESOURCE_DMA, \
}, \
{ \
.start = CH_SPORT##x##_TX, \
.end = CH_SPORT##x##_TX, \
.flags = IORESOURCE_DMA, \
}, \
{ \
.start = IRQ_SPORT##x##_ERROR, \
.end = IRQ_SPORT##x##_ERROR, \
.flags = IORESOURCE_IRQ, \
} \
}
static struct resource bfin_snd_resources[][4] = {
BFIN_SND_RES(0),
BFIN_SND_RES(1),
};
#endif
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
static struct platform_device bfin_i2s_pcm = {
.name = "bfin-i2s-pcm-audio",
.id = -1,
};
#endif
#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
static struct platform_device bfin_tdm_pcm = {
.name = "bfin-tdm-pcm-audio",
.id = -1,
};
#endif
#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
static struct platform_device bfin_ac97_pcm = {
.name = "bfin-ac97-pcm-audio",
.id = -1,
};
#endif
#if defined(CONFIG_SND_BF5XX_SOC_AD73311) || \
defined(CONFIG_SND_BF5XX_SOC_AD73311_MODULE)
static const unsigned ad73311_gpio[] = {
GPIO_PF4,
};
static struct platform_device bfin_ad73311_machine = {
.name = "bfin-snd-ad73311",
.id = 1,
.dev = {
.platform_data = (void *)ad73311_gpio,
},
};
#endif
#if defined(CONFIG_SND_SOC_AD73311) || defined(CONFIG_SND_SOC_AD73311_MODULE)
static struct platform_device bfin_ad73311_codec_device = {
.name = "ad73311",
.id = -1,
};
#endif
#if defined(CONFIG_SND_SOC_AD74111) || defined(CONFIG_SND_SOC_AD74111_MODULE)
static struct platform_device bfin_ad74111_codec_device = {
.name = "ad74111",
.id = -1,
};
#endif
#if defined(CONFIG_SND_BF5XX_SOC_I2S) || \
defined(CONFIG_SND_BF5XX_SOC_I2S_MODULE)
static struct platform_device bfin_i2s = { static struct platform_device bfin_i2s = {
.name = "bfin-i2s", .name = "bfin-i2s",
.id = CONFIG_SND_BF5XX_SPORT_NUM, .id = CONFIG_SND_BF5XX_SPORT_NUM,
/* TODO: add platform data here */ .num_resources =
ARRAY_SIZE(bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM]),
.resource = bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM],
.dev = {
.platform_data = &bfin_snd_data[CONFIG_SND_BF5XX_SPORT_NUM],
},
}; };
#endif #endif
#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) #if defined(CONFIG_SND_BF5XX_SOC_TDM) || \
defined(CONFIG_SND_BF5XX_SOC_TDM_MODULE)
static struct platform_device bfin_tdm = { static struct platform_device bfin_tdm = {
.name = "bfin-tdm", .name = "bfin-tdm",
.id = CONFIG_SND_BF5XX_SPORT_NUM, .id = CONFIG_SND_BF5XX_SPORT_NUM,
/* TODO: add platform data here */ .num_resources =
ARRAY_SIZE(bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM]),
.resource = bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM],
.dev = {
.platform_data = &bfin_snd_data[CONFIG_SND_BF5XX_SPORT_NUM],
},
}; };
#endif #endif
#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE) #if defined(CONFIG_SND_BF5XX_SOC_AC97) || \
defined(CONFIG_SND_BF5XX_SOC_AC97_MODULE)
static struct platform_device bfin_ac97 = { static struct platform_device bfin_ac97 = {
.name = "bfin-ac97", .name = "bfin-ac97",
.id = CONFIG_SND_BF5XX_SPORT_NUM, .id = CONFIG_SND_BF5XX_SPORT_NUM,
/* TODO: add platform data here */ .num_resources =
ARRAY_SIZE(bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM]),
.resource = bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM],
.dev = {
.platform_data = &bfin_snd_data[CONFIG_SND_BF5XX_SPORT_NUM],
},
}; };
#endif #endif
...@@ -580,7 +704,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -580,7 +704,7 @@ static struct platform_device *stamp_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -596,7 +720,8 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -596,7 +720,8 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif #endif
#endif #endif
#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) #if defined(CONFIG_SERIAL_BFIN_SPORT) || \
defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
&bfin_sport0_uart_device, &bfin_sport0_uart_device,
#endif #endif
...@@ -618,14 +743,42 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -618,14 +743,42 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
&bfin_i2s, &bfin_i2s_pcm,
#endif #endif
#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
&bfin_tdm, &bfin_tdm_pcm,
#endif #endif
#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE) #if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
&bfin_ac97_pcm,
#endif
#if defined(CONFIG_SND_BF5XX_SOC_AD73311) || \
defined(CONFIG_SND_BF5XX_SOC_AD73311_MODULE)
&bfin_ad73311_machine,
#endif
#if defined(CONFIG_SND_SOC_AD73311) || defined(CONFIG_SND_SOC_AD73311_MODULE)
&bfin_ad73311_codec_device,
#endif
#if defined(CONFIG_SND_SOC_AD74111) || defined(CONFIG_SND_SOC_AD74111_MODULE)
&bfin_ad74111_codec_device,
#endif
#if defined(CONFIG_SND_BF5XX_SOC_I2S) || \
defined(CONFIG_SND_BF5XX_SOC_I2S_MODULE)
&bfin_i2s,
#endif
#if defined(CONFIG_SND_BF5XX_SOC_TDM) || \
defined(CONFIG_SND_BF5XX_SOC_TDM_MODULE)
&bfin_tdm,
#endif
#if defined(CONFIG_SND_BF5XX_SOC_AC97) || \
defined(CONFIG_SND_BF5XX_SOC_AC97_MODULE)
&bfin_ac97, &bfin_ac97,
#endif #endif
}; };
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
*/ */
const char bfin_board_name[] = "Bluetechnix CM BF537E"; const char bfin_board_name[] = "Bluetechnix CM BF537E";
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -735,7 +735,7 @@ static struct platform_device *cm_bf537e_devices[] __initdata = { ...@@ -735,7 +735,7 @@ static struct platform_device *cm_bf537e_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -770,7 +770,7 @@ static int __init cm_bf537e_init(void) ...@@ -770,7 +770,7 @@ static int __init cm_bf537e_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf537e_devices, ARRAY_SIZE(cm_bf537e_devices)); platform_add_devices(cm_bf537e_devices, ARRAY_SIZE(cm_bf537e_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
*/ */
const char bfin_board_name[] = "Bluetechnix CM BF537U"; const char bfin_board_name[] = "Bluetechnix CM BF537U";
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -700,7 +700,7 @@ static struct platform_device *cm_bf537u_devices[] __initdata = { ...@@ -700,7 +700,7 @@ static struct platform_device *cm_bf537u_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -747,7 +747,7 @@ static int __init cm_bf537u_init(void) ...@@ -747,7 +747,7 @@ static int __init cm_bf537u_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf537u_devices, ARRAY_SIZE(cm_bf537u_devices)); platform_add_devices(cm_bf537u_devices, ARRAY_SIZE(cm_bf537u_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
......
...@@ -125,7 +125,7 @@ static struct platform_device asmb_flash_device = { ...@@ -125,7 +125,7 @@ static struct platform_device asmb_flash_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
...@@ -370,7 +370,7 @@ static struct platform_device *dnp5370_devices[] __initdata = { ...@@ -370,7 +370,7 @@ static struct platform_device *dnp5370_devices[] __initdata = {
&bfin_mac_device, &bfin_mac_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&spi_bfin_master_device, &spi_bfin_master_device,
#endif #endif
......
...@@ -121,7 +121,7 @@ static struct platform_device net2272_bfin_device = { ...@@ -121,7 +121,7 @@ static struct platform_device net2272_bfin_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) \ #if defined(CONFIG_MTD_M25P80) \
...@@ -496,7 +496,7 @@ static struct platform_device *minotaur_devices[] __initdata = { ...@@ -496,7 +496,7 @@ static struct platform_device *minotaur_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -537,7 +537,7 @@ static int __init minotaur_init(void) ...@@ -537,7 +537,7 @@ static int __init minotaur_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(minotaur_devices, ARRAY_SIZE(minotaur_devices)); platform_add_devices(minotaur_devices, ARRAY_SIZE(minotaur_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, spi_register_board_info(bfin_spi_board_info,
ARRAY_SIZE(bfin_spi_board_info)); ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
......
...@@ -154,7 +154,7 @@ static struct platform_device net2272_bfin_device = { ...@@ -154,7 +154,7 @@ static struct platform_device net2272_bfin_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) \ #if defined(CONFIG_MTD_M25P80) \
...@@ -477,7 +477,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -477,7 +477,7 @@ static struct platform_device *stamp_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -508,7 +508,7 @@ static int __init pnav_init(void) ...@@ -508,7 +508,7 @@ static int __init pnav_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, spi_register_board_info(bfin_spi_board_info,
ARRAY_SIZE(bfin_spi_board_info)); ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
......
...@@ -1420,7 +1420,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -1420,7 +1420,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS, .num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS,
...@@ -1462,7 +1462,7 @@ static struct platform_device bfin_spi0_device = { ...@@ -1462,7 +1462,7 @@ static struct platform_device bfin_spi0_device = {
/* SPORT SPI controller data */ /* SPORT SPI controller data */
static struct bfin5xx_spi_master bfin_sport_spi0_info = { static struct bfin5xx_spi_master bfin_sport_spi0_info = {
.num_chipselect = 1, /* master only supports one device */ .num_chipselect = MAX_BLACKFIN_GPIOS,
.enable_dma = 0, /* master don't support DMA */ .enable_dma = 0, /* master don't support DMA */
.pin_req = {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_DRPRI, .pin_req = {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_DRPRI,
P_SPORT0_RSCLK, P_SPORT0_TFS, P_SPORT0_RFS, 0}, P_SPORT0_RSCLK, P_SPORT0_TFS, P_SPORT0_RFS, 0},
...@@ -1492,7 +1492,7 @@ static struct platform_device bfin_sport_spi0_device = { ...@@ -1492,7 +1492,7 @@ static struct platform_device bfin_sport_spi0_device = {
}; };
static struct bfin5xx_spi_master bfin_sport_spi1_info = { static struct bfin5xx_spi_master bfin_sport_spi1_info = {
.num_chipselect = 1, /* master only supports one device */ .num_chipselect = MAX_BLACKFIN_GPIOS,
.enable_dma = 0, /* master don't support DMA */ .enable_dma = 0, /* master don't support DMA */
.pin_req = {P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_DRPRI, .pin_req = {P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_DRPRI,
P_SPORT1_RSCLK, P_SPORT1_TFS, P_SPORT1_RFS, 0}, P_SPORT1_RSCLK, P_SPORT1_TFS, P_SPORT1_RFS, 0},
...@@ -1558,6 +1558,71 @@ static struct platform_device bfin_lq035q1_device = { ...@@ -1558,6 +1558,71 @@ static struct platform_device bfin_lq035q1_device = {
}; };
#endif #endif
#if defined(CONFIG_VIDEO_BLACKFIN_CAPTURE) \
|| defined(CONFIG_VIDEO_BLACKFIN_CAPTURE_MODULE)
#include <linux/videodev2.h>
#include <media/blackfin/bfin_capture.h>
#include <media/blackfin/ppi.h>
static const unsigned short ppi_req[] = {
P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, P_PPI0_D3,
P_PPI0_D4, P_PPI0_D5, P_PPI0_D6, P_PPI0_D7,
P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2,
0,
};
static const struct ppi_info ppi_info = {
.type = PPI_TYPE_PPI,
.dma_ch = CH_PPI,
.irq_err = IRQ_PPI_ERROR,
.base = (void __iomem *)PPI_CONTROL,
.pin_req = ppi_req,
};
#if defined(CONFIG_VIDEO_VS6624) \
|| defined(CONFIG_VIDEO_VS6624_MODULE)
static struct v4l2_input vs6624_inputs[] = {
{
.index = 0,
.name = "Camera",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = V4L2_STD_UNKNOWN,
},
};
static struct bcap_route vs6624_routes[] = {
{
.input = 0,
.output = 0,
},
};
static const unsigned vs6624_ce_pin = GPIO_PF10;
static struct bfin_capture_config bfin_capture_data = {
.card_name = "BF537",
.inputs = vs6624_inputs,
.num_inputs = ARRAY_SIZE(vs6624_inputs),
.routes = vs6624_routes,
.i2c_adapter_id = 0,
.board_info = {
.type = "vs6624",
.addr = 0x10,
.platform_data = (void *)&vs6624_ce_pin,
},
.ppi_info = &ppi_info,
.ppi_control = (PACK_EN | DLEN_8 | XFR_TYPE | 0x0020),
};
#endif
static struct platform_device bfin_capture_device = {
.name = "bfin_capture",
.dev = {
.platform_data = &bfin_capture_data,
},
};
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
#ifdef CONFIG_SERIAL_BFIN_UART0 #ifdef CONFIG_SERIAL_BFIN_UART0
static struct resource bfin_uart0_resources[] = { static struct resource bfin_uart0_resources[] = {
...@@ -2716,7 +2781,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -2716,7 +2781,7 @@ static struct platform_device *stamp_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -2733,6 +2798,11 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -2733,6 +2798,11 @@ static struct platform_device *stamp_devices[] __initdata = {
&bfin_lq035q1_device, &bfin_lq035q1_device,
#endif #endif
#if defined(CONFIG_VIDEO_BLACKFIN_CAPTURE) \
|| defined(CONFIG_VIDEO_BLACKFIN_CAPTURE_MODULE)
&bfin_capture_device,
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
#ifdef CONFIG_SERIAL_BFIN_UART0 #ifdef CONFIG_SERIAL_BFIN_UART0
&bfin_uart0_device, &bfin_uart0_device,
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
*/ */
const char bfin_board_name[] = "Bluetechnix TCM BF537"; const char bfin_board_name[] = "Bluetechnix TCM BF537";
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -702,7 +702,7 @@ static struct platform_device *cm_bf537_devices[] __initdata = { ...@@ -702,7 +702,7 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -737,7 +737,7 @@ static int __init tcm_bf537_init(void) ...@@ -737,7 +737,7 @@ static int __init tcm_bf537_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices)); platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
......
...@@ -490,7 +490,7 @@ static struct platform_device smc91x_device = { ...@@ -490,7 +490,7 @@ static struct platform_device smc91x_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) \ #if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -874,7 +874,7 @@ static struct platform_device *cm_bf538_devices[] __initdata = { ...@@ -874,7 +874,7 @@ static struct platform_device *cm_bf538_devices[] __initdata = {
#endif #endif
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bf538_spi_master0, &bf538_spi_master0,
&bf538_spi_master1, &bf538_spi_master1,
&bf538_spi_master2, &bf538_spi_master2,
...@@ -938,7 +938,7 @@ static int __init ezkit_init(void) ...@@ -938,7 +938,7 @@ static int __init ezkit_init(void)
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf538_devices, ARRAY_SIZE(cm_bf538_devices)); platform_add_devices(cm_bf538_devices, ARRAY_SIZE(cm_bf538_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bf538_spi_board_info, spi_register_board_info(bf538_spi_board_info,
ARRAY_SIZE(bf538_spi_board_info)); ARRAY_SIZE(bf538_spi_board_info));
#endif #endif
......
...@@ -854,7 +854,7 @@ static struct platform_device para_flash_device = { ...@@ -854,7 +854,7 @@ static struct platform_device para_flash_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) \ #if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -1175,7 +1175,7 @@ static struct platform_device *cm_bf548_devices[] __initdata = { ...@@ -1175,7 +1175,7 @@ static struct platform_device *cm_bf548_devices[] __initdata = {
&bf54x_sdh_device, &bf54x_sdh_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bf54x_spi_master0, &bf54x_spi_master0,
&bf54x_spi_master1, &bf54x_spi_master1,
#endif #endif
...@@ -1210,7 +1210,7 @@ static int __init cm_bf548_init(void) ...@@ -1210,7 +1210,7 @@ static int __init cm_bf548_init(void)
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf548_devices, ARRAY_SIZE(cm_bf548_devices)); platform_add_devices(cm_bf548_devices, ARRAY_SIZE(cm_bf548_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bf54x_spi_board_info, spi_register_board_info(bf54x_spi_board_info,
ARRAY_SIZE(bf54x_spi_board_info)); ARRAY_SIZE(bf54x_spi_board_info));
#endif #endif
......
...@@ -1110,7 +1110,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -1110,7 +1110,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}, },
#endif #endif
}; };
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct resource bfin_spi0_resource[] = { static struct resource bfin_spi0_resource[] = {
[0] = { [0] = {
...@@ -1183,6 +1183,71 @@ static struct platform_device bf54x_spi_master1 = { ...@@ -1183,6 +1183,71 @@ static struct platform_device bf54x_spi_master1 = {
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
#if defined(CONFIG_VIDEO_BLACKFIN_CAPTURE) \
|| defined(CONFIG_VIDEO_BLACKFIN_CAPTURE_MODULE)
#include <linux/videodev2.h>
#include <media/blackfin/bfin_capture.h>
#include <media/blackfin/ppi.h>
static const unsigned short ppi_req[] = {
P_PPI1_D0, P_PPI1_D1, P_PPI1_D2, P_PPI1_D3,
P_PPI1_D4, P_PPI1_D5, P_PPI1_D6, P_PPI1_D7,
P_PPI1_CLK, P_PPI1_FS1, P_PPI1_FS2,
0,
};
static const struct ppi_info ppi_info = {
.type = PPI_TYPE_EPPI,
.dma_ch = CH_EPPI1,
.irq_err = IRQ_EPPI1_ERROR,
.base = (void __iomem *)EPPI1_STATUS,
.pin_req = ppi_req,
};
#if defined(CONFIG_VIDEO_VS6624) \
|| defined(CONFIG_VIDEO_VS6624_MODULE)
static struct v4l2_input vs6624_inputs[] = {
{
.index = 0,
.name = "Camera",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = V4L2_STD_UNKNOWN,
},
};
static struct bcap_route vs6624_routes[] = {
{
.input = 0,
.output = 0,
},
};
static const unsigned vs6624_ce_pin = GPIO_PG6;
static struct bfin_capture_config bfin_capture_data = {
.card_name = "BF548",
.inputs = vs6624_inputs,
.num_inputs = ARRAY_SIZE(vs6624_inputs),
.routes = vs6624_routes,
.i2c_adapter_id = 0,
.board_info = {
.type = "vs6624",
.addr = 0x10,
.platform_data = (void *)&vs6624_ce_pin,
},
.ppi_info = &ppi_info,
.ppi_control = (POLC | PACKEN | DLEN_8 | XFR_TYPE | 0x20),
};
#endif
static struct platform_device bfin_capture_device = {
.name = "bfin_capture",
.dev = {
.platform_data = &bfin_capture_data,
},
};
#endif
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
static struct resource bfin_twi0_resource[] = { static struct resource bfin_twi0_resource[] = {
[0] = { [0] = {
...@@ -1502,10 +1567,14 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -1502,10 +1567,14 @@ static struct platform_device *ezkit_devices[] __initdata = {
&bf54x_sdh_device, &bf54x_sdh_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bf54x_spi_master0, &bf54x_spi_master0,
&bf54x_spi_master1, &bf54x_spi_master1,
#endif #endif
#if defined(CONFIG_VIDEO_BLACKFIN_CAPTURE) \
|| defined(CONFIG_VIDEO_BLACKFIN_CAPTURE_MODULE)
&bfin_capture_device,
#endif
#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE) #if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE)
&bf54x_kpad_device, &bf54x_kpad_device,
......
...@@ -372,7 +372,7 @@ static struct bfin5xx_spi_chip data_flash_chip_info = { ...@@ -372,7 +372,7 @@ static struct bfin5xx_spi_chip data_flash_chip_info = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct resource bfin_spi0_resource[] = { static struct resource bfin_spi0_resource[] = {
[0] = { [0] = {
...@@ -475,7 +475,7 @@ static struct platform_device bfin_dpmc = { ...@@ -475,7 +475,7 @@ static struct platform_device bfin_dpmc = {
static struct platform_device *acvilon_devices[] __initdata = { static struct platform_device *acvilon_devices[] __initdata = {
&bfin_dpmc, &bfin_dpmc,
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
*/ */
const char bfin_board_name[] = "Bluetechnix CM BF561"; const char bfin_board_name[] = "Bluetechnix CM BF561";
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* all SPI peripherals info goes here */ /* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
...@@ -488,7 +488,7 @@ static struct platform_device *cm_bf561_devices[] __initdata = { ...@@ -488,7 +488,7 @@ static struct platform_device *cm_bf561_devices[] __initdata = {
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -523,7 +523,7 @@ static int __init cm_bf561_init(void) ...@@ -523,7 +523,7 @@ static int __init cm_bf561_init(void)
{ {
printk(KERN_INFO "%s(): registering device resources\n", __func__); printk(KERN_INFO "%s(): registering device resources\n", __func__);
platform_add_devices(cm_bf561_devices, ARRAY_SIZE(cm_bf561_devices)); platform_add_devices(cm_bf561_devices, ARRAY_SIZE(cm_bf561_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
......
...@@ -291,7 +291,7 @@ static struct platform_device ezkit_flash_device = { ...@@ -291,7 +291,7 @@ static struct platform_device ezkit_flash_device = {
}; };
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
/* SPI (0) */ /* SPI (0) */
static struct resource bfin_spi0_resource[] = { static struct resource bfin_spi0_resource[] = {
[0] = { [0] = {
...@@ -383,7 +383,7 @@ static struct i2c_gpio_platform_data i2c_gpio_data = { ...@@ -383,7 +383,7 @@ static struct i2c_gpio_platform_data i2c_gpio_data = {
.scl_pin = GPIO_PF0, .scl_pin = GPIO_PF0,
.sda_is_open_drain = 0, .sda_is_open_drain = 0,
.scl_is_open_drain = 0, .scl_is_open_drain = 0,
.udelay = 40, .udelay = 10,
}; };
static struct platform_device i2c_gpio_device = { static struct platform_device i2c_gpio_device = {
...@@ -422,6 +422,96 @@ static struct platform_device bfin_dpmc = { ...@@ -422,6 +422,96 @@ static struct platform_device bfin_dpmc = {
}, },
}; };
#if defined(CONFIG_VIDEO_BLACKFIN_CAPTURE) \
|| defined(CONFIG_VIDEO_BLACKFIN_CAPTURE_MODULE)
#include <linux/videodev2.h>
#include <media/blackfin/bfin_capture.h>
#include <media/blackfin/ppi.h>
static const unsigned short ppi_req[] = {
P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, P_PPI0_D3,
P_PPI0_D4, P_PPI0_D5, P_PPI0_D6, P_PPI0_D7,
P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2,
0,
};
static const struct ppi_info ppi_info = {
.type = PPI_TYPE_PPI,
.dma_ch = CH_PPI0,
.irq_err = IRQ_PPI1_ERROR,
.base = (void __iomem *)PPI0_CONTROL,
.pin_req = ppi_req,
};
#if defined(CONFIG_VIDEO_ADV7183) \
|| defined(CONFIG_VIDEO_ADV7183_MODULE)
#include <media/adv7183.h>
static struct v4l2_input adv7183_inputs[] = {
{
.index = 0,
.name = "Composite",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = V4L2_STD_ALL,
},
{
.index = 1,
.name = "S-Video",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = V4L2_STD_ALL,
},
{
.index = 2,
.name = "Component",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = V4L2_STD_ALL,
},
};
static struct bcap_route adv7183_routes[] = {
{
.input = ADV7183_COMPOSITE4,
.output = ADV7183_8BIT_OUT,
},
{
.input = ADV7183_SVIDEO0,
.output = ADV7183_8BIT_OUT,
},
{
.input = ADV7183_COMPONENT0,
.output = ADV7183_8BIT_OUT,
},
};
static const unsigned adv7183_gpio[] = {
GPIO_PF13, /* reset pin */
GPIO_PF2, /* output enable pin */
};
static struct bfin_capture_config bfin_capture_data = {
.card_name = "BF561",
.inputs = adv7183_inputs,
.num_inputs = ARRAY_SIZE(adv7183_inputs),
.routes = adv7183_routes,
.i2c_adapter_id = 0,
.board_info = {
.type = "adv7183",
.addr = 0x20,
.platform_data = (void *)adv7183_gpio,
},
.ppi_info = &ppi_info,
.ppi_control = (PACK_EN | DLEN_8 | DMA32 | FLD_SEL),
};
#endif
static struct platform_device bfin_capture_device = {
.name = "bfin_capture",
.dev = {
.platform_data = &bfin_capture_data,
},
};
#endif
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
static struct platform_device bfin_i2s = { static struct platform_device bfin_i2s = {
.name = "bfin-i2s", .name = "bfin-i2s",
...@@ -462,7 +552,7 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -462,7 +552,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
&bfin_isp1760_device, &bfin_isp1760_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif
...@@ -494,6 +584,11 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -494,6 +584,11 @@ static struct platform_device *ezkit_devices[] __initdata = {
&ezkit_flash_device, &ezkit_flash_device,
#endif #endif
#if defined(CONFIG_VIDEO_BLACKFIN_CAPTURE) \
|| defined(CONFIG_VIDEO_BLACKFIN_CAPTURE_MODULE)
&bfin_capture_device,
#endif
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
&bfin_i2s, &bfin_i2s,
#endif #endif
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <mach/irq.h> #include <mach/irq.h>
#define SUPPLE_0_WAKEUP ((IRQ_SUPPLE_0 - (IRQ_CORETMR + 1)) % 32) #define SUPPLE_0_WAKEUP ((IRQ_SUPPLE_0 - (IRQ_CORETMR + 1)) % 32)
#define SUPPLE_1_WAKEUP ((IRQ_SUPPLE_1 - (IRQ_CORETMR + 1)) % 32)
static inline void static inline void
bfin_iwr_restore(unsigned long iwr0, unsigned long iwr1, unsigned long iwr2) bfin_iwr_restore(unsigned long iwr0, unsigned long iwr1, unsigned long iwr2)
...@@ -42,7 +43,8 @@ bfin_iwr_save(unsigned long niwr0, unsigned long niwr1, unsigned long niwr2, ...@@ -42,7 +43,8 @@ bfin_iwr_save(unsigned long niwr0, unsigned long niwr1, unsigned long niwr2,
static inline void static inline void
bfin_iwr_set_sup0(unsigned long *iwr0, unsigned long *iwr1, unsigned long *iwr2) bfin_iwr_set_sup0(unsigned long *iwr0, unsigned long *iwr1, unsigned long *iwr2)
{ {
bfin_iwr_save(0, IWR_ENABLE(SUPPLE_0_WAKEUP), 0, iwr0, iwr1, iwr2); bfin_iwr_save(0, IWR_ENABLE(SUPPLE_0_WAKEUP) |
IWR_ENABLE(SUPPLE_1_WAKEUP), 0, iwr0, iwr1, iwr2);
} }
#endif #endif
......
...@@ -84,7 +84,7 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle ...@@ -84,7 +84,7 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle
if ((bfin_read_SYSCR() & COREB_SRAM_INIT) == 0) { if ((bfin_read_SYSCR() & COREB_SRAM_INIT) == 0) {
/* CoreB already running, sending ipi to wakeup it */ /* CoreB already running, sending ipi to wakeup it */
platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0); smp_send_reschedule(cpu);
} else { } else {
/* Kick CoreB, which should start execution from CORE_SRAM_BASE. */ /* Kick CoreB, which should start execution from CORE_SRAM_BASE. */
bfin_write_SYSCR(bfin_read_SYSCR() & ~COREB_SRAM_INIT); bfin_write_SYSCR(bfin_read_SYSCR() & ~COREB_SRAM_INIT);
...@@ -114,7 +114,8 @@ void __init platform_request_ipi(int irq, void *handler) ...@@ -114,7 +114,8 @@ void __init platform_request_ipi(int irq, void *handler)
int ret; int ret;
const char *name = (irq == IRQ_SUPPLE_0) ? supple0 : supple1; const char *name = (irq == IRQ_SUPPLE_0) ? supple0 : supple1;
ret = request_irq(irq, handler, IRQF_PERCPU, name, handler); ret = request_irq(irq, handler, IRQF_PERCPU | IRQF_NO_SUSPEND |
IRQF_FORCE_RESUME, name, handler);
if (ret) if (ret)
panic("Cannot request %s for IPI service", name); panic("Cannot request %s for IPI service", name);
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/cache.h> #include <linux/cache.h>
#include <linux/clockchips.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/mm.h> #include <linux/mm.h>
...@@ -47,9 +48,10 @@ unsigned long blackfin_iflush_l1_entry[NR_CPUS]; ...@@ -47,9 +48,10 @@ unsigned long blackfin_iflush_l1_entry[NR_CPUS];
struct blackfin_initial_pda __cpuinitdata initial_pda_coreb; struct blackfin_initial_pda __cpuinitdata initial_pda_coreb;
#define BFIN_IPI_RESCHEDULE 0 #define BFIN_IPI_TIMER 0
#define BFIN_IPI_CALL_FUNC 1 #define BFIN_IPI_RESCHEDULE 1
#define BFIN_IPI_CPU_STOP 2 #define BFIN_IPI_CALL_FUNC 2
#define BFIN_IPI_CPU_STOP 3
struct blackfin_flush_data { struct blackfin_flush_data {
unsigned long start; unsigned long start;
...@@ -160,6 +162,14 @@ static irqreturn_t ipi_handler_int0(int irq, void *dev_instance) ...@@ -160,6 +162,14 @@ static irqreturn_t ipi_handler_int0(int irq, void *dev_instance)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
DECLARE_PER_CPU(struct clock_event_device, coretmr_events);
void ipi_timer(void)
{
int cpu = smp_processor_id();
struct clock_event_device *evt = &per_cpu(coretmr_events, cpu);
evt->event_handler(evt);
}
static irqreturn_t ipi_handler_int1(int irq, void *dev_instance) static irqreturn_t ipi_handler_int1(int irq, void *dev_instance)
{ {
struct ipi_message *msg; struct ipi_message *msg;
...@@ -176,18 +186,17 @@ static irqreturn_t ipi_handler_int1(int irq, void *dev_instance) ...@@ -176,18 +186,17 @@ static irqreturn_t ipi_handler_int1(int irq, void *dev_instance)
while (msg_queue->count) { while (msg_queue->count) {
msg = &msg_queue->ipi_message[msg_queue->head]; msg = &msg_queue->ipi_message[msg_queue->head];
switch (msg->type) { switch (msg->type) {
case BFIN_IPI_TIMER:
ipi_timer();
break;
case BFIN_IPI_RESCHEDULE: case BFIN_IPI_RESCHEDULE:
scheduler_ipi(); scheduler_ipi();
break; break;
case BFIN_IPI_CALL_FUNC: case BFIN_IPI_CALL_FUNC:
spin_unlock_irqrestore(&msg_queue->lock, flags);
ipi_call_function(cpu, msg); ipi_call_function(cpu, msg);
spin_lock_irqsave(&msg_queue->lock, flags);
break; break;
case BFIN_IPI_CPU_STOP: case BFIN_IPI_CPU_STOP:
spin_unlock_irqrestore(&msg_queue->lock, flags);
ipi_cpu_stop(cpu); ipi_cpu_stop(cpu);
spin_lock_irqsave(&msg_queue->lock, flags);
break; break;
default: default:
printk(KERN_CRIT "CPU%u: Unknown IPI message 0x%lx\n", printk(KERN_CRIT "CPU%u: Unknown IPI message 0x%lx\n",
...@@ -297,8 +306,6 @@ void smp_send_reschedule(int cpu) ...@@ -297,8 +306,6 @@ void smp_send_reschedule(int cpu)
{ {
cpumask_t callmap; cpumask_t callmap;
/* simply trigger an ipi */ /* simply trigger an ipi */
if (cpu_is_offline(cpu))
return;
cpumask_clear(&callmap); cpumask_clear(&callmap);
cpumask_set_cpu(cpu, &callmap); cpumask_set_cpu(cpu, &callmap);
...@@ -308,6 +315,16 @@ void smp_send_reschedule(int cpu) ...@@ -308,6 +315,16 @@ void smp_send_reschedule(int cpu)
return; return;
} }
void smp_send_msg(const struct cpumask *mask, unsigned long type)
{
smp_send_message(*mask, type, NULL, NULL, 0);
}
void smp_timer_broadcast(const struct cpumask *mask)
{
smp_send_msg(mask, BFIN_IPI_TIMER);
}
void smp_send_stop(void) void smp_send_stop(void)
{ {
cpumask_t callmap; cpumask_t callmap;
...@@ -326,17 +343,24 @@ void smp_send_stop(void) ...@@ -326,17 +343,24 @@ void smp_send_stop(void)
int __cpuinit __cpu_up(unsigned int cpu) int __cpuinit __cpu_up(unsigned int cpu)
{ {
int ret; int ret;
static struct task_struct *idle; struct blackfin_cpudata *ci = &per_cpu(cpu_data, cpu);
struct task_struct *idle = ci->idle;
if (idle) if (idle) {
free_task(idle); free_task(idle);
idle = NULL;
}
if (!idle) {
idle = fork_idle(cpu); idle = fork_idle(cpu);
if (IS_ERR(idle)) { if (IS_ERR(idle)) {
printk(KERN_ERR "CPU%u: fork() failed\n", cpu); printk(KERN_ERR "CPU%u: fork() failed\n", cpu);
return PTR_ERR(idle); return PTR_ERR(idle);
} }
ci->idle = idle;
} else {
init_idle(idle, cpu);
}
secondary_stack = task_stack_page(idle) + THREAD_SIZE; secondary_stack = task_stack_page(idle) + THREAD_SIZE;
ret = platform_boot_secondary(cpu, idle); ret = platform_boot_secondary(cpu, idle);
...@@ -411,6 +435,7 @@ void __cpuinit secondary_start_kernel(void) ...@@ -411,6 +435,7 @@ void __cpuinit secondary_start_kernel(void)
bfin_setup_caches(cpu); bfin_setup_caches(cpu);
notify_cpu_starting(cpu);
/* /*
* Calibrate loops per jiffy value. * Calibrate loops per jiffy value.
* IRQs need to be enabled here - D-cache can be invalidated * IRQs need to be enabled here - D-cache can be invalidated
...@@ -453,8 +478,10 @@ void smp_icache_flush_range_others(unsigned long start, unsigned long end) ...@@ -453,8 +478,10 @@ void smp_icache_flush_range_others(unsigned long start, unsigned long end)
smp_flush_data.start = start; smp_flush_data.start = start;
smp_flush_data.end = end; smp_flush_data.end = end;
if (smp_call_function(&ipi_flush_icache, &smp_flush_data, 0)) preempt_disable();
if (smp_call_function(&ipi_flush_icache, &smp_flush_data, 1))
printk(KERN_WARNING "SMP: failed to run I-cache flush request on other CPUs\n"); printk(KERN_WARNING "SMP: failed to run I-cache flush request on other CPUs\n");
preempt_enable();
} }
EXPORT_SYMBOL_GPL(smp_icache_flush_range_others); EXPORT_SYMBOL_GPL(smp_icache_flush_range_others);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册