diff options
65 files changed, 3431 insertions, 839 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 5a3152b75cdb..d9a1cb7ec30a 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
| @@ -300,7 +300,7 @@ config BF_REV_0_1 | |||
| 300 | 300 | ||
| 301 | config BF_REV_0_2 | 301 | config BF_REV_0_2 |
| 302 | bool "0.2" | 302 | bool "0.2" |
| 303 | depends on (BF52x || BF537 || BF536 || BF534 || (BF54x && !BF54xM)) | 303 | depends on (BF51x || BF52x || BF537 || BF536 || BF534 || (BF54x && !BF54xM)) |
| 304 | 304 | ||
| 305 | config BF_REV_0_3 | 305 | config BF_REV_0_3 |
| 306 | bool "0.3" | 306 | bool "0.3" |
| @@ -356,7 +356,7 @@ config MEM_MT48LC8M32B2B5_7 | |||
| 356 | 356 | ||
| 357 | config MEM_MT48LC32M16A2TG_75 | 357 | config MEM_MT48LC32M16A2TG_75 |
| 358 | bool | 358 | bool |
| 359 | depends on (BFIN527_EZKIT || BFIN527_EZKIT_V2 || BFIN532_IP0X || BLACKSTAMP) | 359 | depends on (BFIN527_EZKIT || BFIN527_EZKIT_V2 || BFIN532_IP0X || BLACKSTAMP || BFIN527_AD7160EVAL) |
| 360 | default y | 360 | default y |
| 361 | 361 | ||
| 362 | config MEM_MT48H32M16LFCJ_75 | 362 | config MEM_MT48H32M16LFCJ_75 |
| @@ -426,6 +426,7 @@ config CLKIN_HZ | |||
| 426 | default "25000000" # most people use this | 426 | default "25000000" # most people use this |
| 427 | default "27000000" if BFIN533_EZKIT | 427 | default "27000000" if BFIN533_EZKIT |
| 428 | default "30000000" if BFIN561_EZKIT | 428 | default "30000000" if BFIN561_EZKIT |
| 429 | default "24000000" if BFIN527_AD7160EVAL | ||
| 429 | help | 430 | help |
| 430 | The frequency of CLKIN crystal oscillator on the board in Hz. | 431 | The frequency of CLKIN crystal oscillator on the board in Hz. |
| 431 | Warning: This value should match the crystal on the board. Otherwise, | 432 | Warning: This value should match the crystal on the board. Otherwise, |
| @@ -463,6 +464,7 @@ config VCO_MULT | |||
| 463 | default "20" if (BFIN537_BLUETECHNIX_CM_E || BFIN537_BLUETECHNIX_CM_U || BFIN527_BLUETECHNIX_CM || BFIN561_BLUETECHNIX_CM) | 464 | default "20" if (BFIN537_BLUETECHNIX_CM_E || BFIN537_BLUETECHNIX_CM_U || BFIN527_BLUETECHNIX_CM || BFIN561_BLUETECHNIX_CM) |
| 464 | default "20" if BFIN561_EZKIT | 465 | default "20" if BFIN561_EZKIT |
| 465 | default "16" if (H8606_HVSISTEMAS || BLACKSTAMP || BFIN526_EZBRD || BFIN518F_EZBRD) | 466 | default "16" if (H8606_HVSISTEMAS || BLACKSTAMP || BFIN526_EZBRD || BFIN518F_EZBRD) |
| 467 | default "25" if BFIN527_AD7160EVAL | ||
| 466 | help | 468 | help |
| 467 | This controls the frequency of the on-chip PLL. This can be between 1 and 64. | 469 | This controls the frequency of the on-chip PLL. This can be between 1 and 64. |
| 468 | PLL Frequency = (Crystal Frequency) * (this setting) | 470 | PLL Frequency = (Crystal Frequency) * (this setting) |
| @@ -926,6 +928,12 @@ config ROMKERNEL | |||
| 926 | 928 | ||
| 927 | endchoice | 929 | endchoice |
| 928 | 930 | ||
| 931 | # Common code uses "ROMKERNEL" or "XIP_KERNEL", so define both | ||
| 932 | config XIP_KERNEL | ||
| 933 | bool | ||
| 934 | default y | ||
| 935 | depends on ROMKERNEL | ||
| 936 | |||
| 929 | source "mm/Kconfig" | 937 | source "mm/Kconfig" |
| 930 | 938 | ||
| 931 | config BFIN_GPTIMERS | 939 | config BFIN_GPTIMERS |
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 3e65b0ffe084..46738d49b7c8 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
| @@ -101,9 +101,8 @@ KBUILD_CFLAGS += -mcpu=$(cpu-y)-$(rev-y) | |||
| 101 | KBUILD_AFLAGS += -mcpu=$(cpu-y)-$(rev-y) | 101 | KBUILD_AFLAGS += -mcpu=$(cpu-y)-$(rev-y) |
| 102 | 102 | ||
| 103 | # - we utilize the silicon rev from the toolchain, so move it over to the checkflags | 103 | # - we utilize the silicon rev from the toolchain, so move it over to the checkflags |
| 104 | # - the l1_text attribute is Blackfin specific, so fake it out as used to kill warnings | ||
| 105 | CHECKFLAGS_SILICON = $(shell echo "" | $(CPP) $(KBUILD_CFLAGS) -dD - 2>/dev/null | awk '$$2 == "__SILICON_REVISION__" { print $$3 }') | 104 | CHECKFLAGS_SILICON = $(shell echo "" | $(CPP) $(KBUILD_CFLAGS) -dD - 2>/dev/null | awk '$$2 == "__SILICON_REVISION__" { print $$3 }') |
| 106 | CHECKFLAGS += -D__SILICON_REVISION__=$(CHECKFLAGS_SILICON) -Dl1_text=__used__ | 105 | CHECKFLAGS += -D__SILICON_REVISION__=$(CHECKFLAGS_SILICON) -D__bfin__ |
| 107 | 106 | ||
| 108 | head-y := arch/$(ARCH)/kernel/init_task.o | 107 | head-y := arch/$(ARCH)/kernel/init_task.o |
| 109 | 108 | ||
diff --git a/arch/blackfin/configs/BF527-AD7160-EVAL_defconfig b/arch/blackfin/configs/BF527-AD7160-EVAL_defconfig new file mode 100644 index 000000000000..08c55f6b8b7a --- /dev/null +++ b/arch/blackfin/configs/BF527-AD7160-EVAL_defconfig | |||
| @@ -0,0 +1,105 @@ | |||
| 1 | CONFIG_EXPERIMENTAL=y | ||
| 2 | CONFIG_SYSVIPC=y | ||
| 3 | CONFIG_IKCONFIG=y | ||
| 4 | CONFIG_IKCONFIG_PROC=y | ||
| 5 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 6 | CONFIG_BLK_DEV_INITRD=y | ||
| 7 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 8 | CONFIG_EMBEDDED=y | ||
| 9 | # CONFIG_ELF_CORE is not set | ||
| 10 | # CONFIG_AIO is not set | ||
| 11 | CONFIG_SLAB=y | ||
| 12 | CONFIG_MODULES=y | ||
| 13 | CONFIG_MODULE_UNLOAD=y | ||
| 14 | # CONFIG_BLK_DEV_BSG is not set | ||
| 15 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 16 | CONFIG_PREEMPT=y | ||
| 17 | CONFIG_BF527=y | ||
| 18 | CONFIG_BF_REV_0_2=y | ||
| 19 | CONFIG_IRQ_TWI=7 | ||
| 20 | CONFIG_IRQ_PORTH_INTA=7 | ||
| 21 | CONFIG_IRQ_PORTH_INTB=7 | ||
| 22 | CONFIG_BFIN527_AD7160EVAL=y | ||
| 23 | CONFIG_BF527_SPORT0_PORTF=y | ||
| 24 | CONFIG_BF527_UART1_PORTG=y | ||
| 25 | CONFIG_IRQ_USB_INT0=11 | ||
| 26 | CONFIG_IRQ_USB_INT1=11 | ||
| 27 | CONFIG_IRQ_USB_INT2=11 | ||
| 28 | CONFIG_IRQ_USB_DMA=11 | ||
| 29 | CONFIG_CMDLINE_BOOL=y | ||
| 30 | CONFIG_CMDLINE="bootargs=root=/dev/mtdblock0 rw clkin_hz=24000000 earlyprintk=serial,uart0,57600 console=tty0 console=ttyBF0,57600" | ||
| 31 | CONFIG_CLKIN_HZ=24000000 | ||
| 32 | CONFIG_HZ_300=y | ||
| 33 | # CONFIG_CYCLES_CLOCKSOURCE is not set | ||
| 34 | CONFIG_IP_CHECKSUM_L1=y | ||
| 35 | CONFIG_SYSCALL_TAB_L1=y | ||
| 36 | CONFIG_CPLB_SWITCH_TAB_L1=y | ||
| 37 | CONFIG_BFIN_GPTIMERS=y | ||
| 38 | CONFIG_C_CDPRIO=y | ||
| 39 | CONFIG_BANK_1=0x5554 | ||
| 40 | CONFIG_BANK_3=0xFFC0 | ||
| 41 | CONFIG_BINFMT_FLAT=y | ||
| 42 | CONFIG_BINFMT_ZFLAT=y | ||
| 43 | CONFIG_NET=y | ||
| 44 | CONFIG_UNIX=y | ||
| 45 | # CONFIG_WIRELESS is not set | ||
| 46 | CONFIG_BLK_DEV_LOOP=y | ||
| 47 | CONFIG_BLK_DEV_RAM=y | ||
| 48 | # CONFIG_MISC_DEVICES is not set | ||
| 49 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 50 | CONFIG_INPUT_EVDEV=y | ||
| 51 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 52 | # CONFIG_INPUT_MOUSE is not set | ||
| 53 | CONFIG_INPUT_TOUCHSCREEN=y | ||
| 54 | CONFIG_TOUCHSCREEN_AD7160=y | ||
| 55 | CONFIG_TOUCHSCREEN_AD7160_FW=y | ||
| 56 | # CONFIG_SERIO is not set | ||
| 57 | # CONFIG_BFIN_DMA_INTERFACE is not set | ||
| 58 | # CONFIG_DEVKMEM is not set | ||
| 59 | CONFIG_SERIAL_BFIN=y | ||
| 60 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 61 | CONFIG_SERIAL_BFIN_UART0=y | ||
| 62 | # CONFIG_LEGACY_PTYS is not set | ||
| 63 | # CONFIG_BFIN_OTP is not set | ||
| 64 | # CONFIG_HW_RANDOM is not set | ||
| 65 | CONFIG_I2C=y | ||
| 66 | # CONFIG_I2C_HELPER_AUTO is not set | ||
| 67 | CONFIG_I2C_ALGOBIT=y | ||
| 68 | CONFIG_I2C_BLACKFIN_TWI=y | ||
| 69 | CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=400 | ||
| 70 | CONFIG_SPI=y | ||
| 71 | CONFIG_SPI_BFIN=y | ||
| 72 | CONFIG_GPIOLIB=y | ||
| 73 | CONFIG_GPIO_SYSFS=y | ||
| 74 | # CONFIG_HWMON is not set | ||
| 75 | CONFIG_FB=y | ||
| 76 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 77 | CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y | ||
| 78 | CONFIG_LOGO=y | ||
| 79 | # CONFIG_LOGO_LINUX_MONO is not set | ||
| 80 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
| 81 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
| 82 | # CONFIG_LOGO_BLACKFIN_VGA16 is not set | ||
| 83 | # CONFIG_HID_SUPPORT is not set | ||
| 84 | CONFIG_USB_MUSB_HDRC=y | ||
| 85 | CONFIG_USB_GADGET_MUSB_HDRC=y | ||
| 86 | CONFIG_USB_GADGET=y | ||
| 87 | CONFIG_USB_GADGET_VBUS_DRAW=500 | ||
| 88 | CONFIG_USB_G_SERIAL=y | ||
| 89 | CONFIG_MMC=y | ||
| 90 | CONFIG_MMC_SPI=y | ||
| 91 | CONFIG_EXT2_FS=y | ||
| 92 | # CONFIG_DNOTIFY is not set | ||
| 93 | CONFIG_MSDOS_FS=y | ||
| 94 | CONFIG_VFAT_FS=y | ||
| 95 | CONFIG_NLS_CODEPAGE_437=y | ||
| 96 | CONFIG_NLS_ISO8859_1=y | ||
| 97 | CONFIG_DEBUG_KERNEL=y | ||
| 98 | CONFIG_DETECT_HUNG_TASK=y | ||
| 99 | # CONFIG_SCHED_DEBUG is not set | ||
| 100 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 101 | # CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set | ||
| 102 | CONFIG_EARLY_PRINTK=y | ||
| 103 | CONFIG_CPLB_INFO=y | ||
| 104 | CONFIG_SECURITY=y | ||
| 105 | CONFIG_CRC_CCITT=m | ||
diff --git a/arch/blackfin/configs/BF527-TLL6527M_defconfig b/arch/blackfin/configs/BF527-TLL6527M_defconfig new file mode 100644 index 000000000000..92ded5edc86c --- /dev/null +++ b/arch/blackfin/configs/BF527-TLL6527M_defconfig | |||
| @@ -0,0 +1,180 @@ | |||
| 1 | CONFIG_EXPERIMENTAL=y | ||
| 2 | CONFIG_LOCALVERSION="DEV_0-1_pre2010" | ||
| 3 | CONFIG_SYSVIPC=y | ||
| 4 | CONFIG_IKCONFIG=y | ||
| 5 | CONFIG_IKCONFIG_PROC=y | ||
| 6 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 7 | CONFIG_BLK_DEV_INITRD=y | ||
| 8 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 9 | CONFIG_EMBEDDED=y | ||
| 10 | # CONFIG_SYSCTL_SYSCALL is not set | ||
| 11 | # CONFIG_ELF_CORE is not set | ||
| 12 | # CONFIG_FUTEX is not set | ||
| 13 | # CONFIG_SIGNALFD is not set | ||
| 14 | # CONFIG_TIMERFD is not set | ||
| 15 | # CONFIG_EVENTFD is not set | ||
| 16 | # CONFIG_AIO is not set | ||
| 17 | CONFIG_SLAB=y | ||
| 18 | CONFIG_MMAP_ALLOW_UNINITIALIZED=y | ||
| 19 | CONFIG_MODULES=y | ||
| 20 | CONFIG_MODULE_UNLOAD=y | ||
| 21 | # CONFIG_LBDAF is not set | ||
| 22 | # CONFIG_BLK_DEV_BSG is not set | ||
| 23 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 24 | CONFIG_PREEMPT_VOLUNTARY=y | ||
| 25 | CONFIG_BF527=y | ||
| 26 | CONFIG_BF_REV_0_2=y | ||
| 27 | CONFIG_BFIN527_TLL6527M=y | ||
| 28 | CONFIG_BF527_UART1_PORTG=y | ||
| 29 | CONFIG_IRQ_USB_INT0=11 | ||
| 30 | CONFIG_IRQ_USB_INT1=11 | ||
| 31 | CONFIG_IRQ_USB_INT2=11 | ||
| 32 | CONFIG_IRQ_USB_DMA=11 | ||
| 33 | CONFIG_BOOT_LOAD=0x400000 | ||
| 34 | # CONFIG_CYCLES_CLOCKSOURCE is not set | ||
| 35 | # CONFIG_SCHEDULE_L1 is not set | ||
| 36 | # CONFIG_MEMSET_L1 is not set | ||
| 37 | # CONFIG_MEMCPY_L1 is not set | ||
| 38 | # CONFIG_SYS_BFIN_SPINLOCK_L1 is not set | ||
| 39 | CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0 | ||
| 40 | CONFIG_BFIN_GPTIMERS=y | ||
| 41 | CONFIG_DMA_UNCACHED_2M=y | ||
| 42 | CONFIG_C_CDPRIO=y | ||
| 43 | CONFIG_BANK_0=0xFFC2 | ||
| 44 | CONFIG_BANK_1=0xFFC2 | ||
| 45 | CONFIG_BANK_2=0xFFC2 | ||
| 46 | CONFIG_BANK_3=0xFFC2 | ||
| 47 | CONFIG_BINFMT_FLAT=y | ||
| 48 | CONFIG_BINFMT_ZFLAT=y | ||
| 49 | CONFIG_NET=y | ||
| 50 | CONFIG_PACKET=y | ||
| 51 | CONFIG_UNIX=y | ||
| 52 | CONFIG_INET=y | ||
| 53 | CONFIG_IP_PNP=y | ||
| 54 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
| 55 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
| 56 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
| 57 | # CONFIG_INET_LRO is not set | ||
| 58 | # CONFIG_INET_DIAG is not set | ||
| 59 | # CONFIG_IPV6 is not set | ||
| 60 | CONFIG_IRDA=m | ||
| 61 | CONFIG_IRLAN=m | ||
| 62 | CONFIG_IRCOMM=m | ||
| 63 | CONFIG_IRTTY_SIR=m | ||
| 64 | CONFIG_BFIN_SIR=m | ||
| 65 | CONFIG_BFIN_SIR0=y | ||
| 66 | # CONFIG_WIRELESS is not set | ||
| 67 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 68 | # CONFIG_FW_LOADER is not set | ||
| 69 | CONFIG_MTD=y | ||
| 70 | CONFIG_MTD_CHAR=y | ||
| 71 | CONFIG_MTD_BLOCK=y | ||
| 72 | CONFIG_MTD_CFI=y | ||
| 73 | CONFIG_MTD_CFI_INTELEXT=y | ||
| 74 | CONFIG_MTD_RAM=y | ||
| 75 | CONFIG_MTD_ROM=y | ||
| 76 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 77 | CONFIG_MTD_GPIO_ADDR=y | ||
| 78 | CONFIG_BLK_DEV_RAM=y | ||
| 79 | CONFIG_SCSI=y | ||
| 80 | # CONFIG_SCSI_PROC_FS is not set | ||
| 81 | CONFIG_BLK_DEV_SD=y | ||
| 82 | CONFIG_BLK_DEV_SR=m | ||
| 83 | # CONFIG_SCSI_LOWLEVEL is not set | ||
| 84 | CONFIG_NETDEVICES=y | ||
| 85 | CONFIG_NET_ETHERNET=y | ||
| 86 | CONFIG_BFIN_MAC=y | ||
| 87 | # CONFIG_NETDEV_1000 is not set | ||
| 88 | # CONFIG_NETDEV_10000 is not set | ||
| 89 | # CONFIG_WLAN is not set | ||
| 90 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 91 | CONFIG_INPUT_EVDEV=y | ||
| 92 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 93 | # CONFIG_INPUT_MOUSE is not set | ||
| 94 | CONFIG_INPUT_TOUCHSCREEN=y | ||
| 95 | CONFIG_TOUCHSCREEN_AD7879=m | ||
| 96 | CONFIG_INPUT_MISC=y | ||
| 97 | CONFIG_INPUT_AD714X=y | ||
| 98 | CONFIG_INPUT_ADXL34X=y | ||
| 99 | # CONFIG_SERIO is not set | ||
| 100 | CONFIG_BFIN_PPI=m | ||
| 101 | CONFIG_BFIN_SIMPLE_TIMER=m | ||
| 102 | CONFIG_BFIN_SPORT=m | ||
| 103 | # CONFIG_CONSOLE_TRANSLATIONS is not set | ||
| 104 | # CONFIG_DEVKMEM is not set | ||
| 105 | CONFIG_BFIN_JTAG_COMM=m | ||
| 106 | CONFIG_SERIAL_BFIN=y | ||
| 107 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
| 108 | CONFIG_SERIAL_BFIN_UART1=y | ||
| 109 | # CONFIG_LEGACY_PTYS is not set | ||
| 110 | # CONFIG_HW_RANDOM is not set | ||
| 111 | CONFIG_I2C_CHARDEV=y | ||
| 112 | # CONFIG_I2C_HELPER_AUTO is not set | ||
| 113 | CONFIG_I2C_SMBUS=y | ||
| 114 | CONFIG_I2C_BLACKFIN_TWI=y | ||
| 115 | CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100 | ||
| 116 | CONFIG_GPIOLIB=y | ||
| 117 | CONFIG_GPIO_SYSFS=y | ||
| 118 | # CONFIG_HWMON is not set | ||
| 119 | CONFIG_WATCHDOG=y | ||
| 120 | CONFIG_BFIN_WDT=y | ||
| 121 | CONFIG_MEDIA_SUPPORT=y | ||
| 122 | CONFIG_VIDEO_DEV=y | ||
| 123 | # CONFIG_MEDIA_TUNER_CUSTOMISE is not set | ||
| 124 | CONFIG_VIDEO_HELPER_CHIPS_AUTO=y | ||
| 125 | CONFIG_VIDEO_BLACKFIN_CAM=m | ||
| 126 | CONFIG_OV9655=y | ||
| 127 | CONFIG_FB=y | ||
| 128 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 129 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 130 | CONFIG_FONTS=y | ||
| 131 | CONFIG_FONT_6x11=y | ||
| 132 | CONFIG_LOGO=y | ||
| 133 | # CONFIG_LOGO_LINUX_MONO is not set | ||
| 134 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
| 135 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
| 136 | # CONFIG_LOGO_BLACKFIN_VGA16 is not set | ||
| 137 | CONFIG_SOUND=y | ||
| 138 | CONFIG_SND=y | ||
| 139 | CONFIG_SND_MIXER_OSS=y | ||
| 140 | CONFIG_SND_PCM_OSS=y | ||
| 141 | CONFIG_SND_SOC=y | ||
| 142 | CONFIG_SND_BF5XX_I2S=y | ||
| 143 | CONFIG_SND_BF5XX_SOC_SSM2602=y | ||
| 144 | # CONFIG_HID_SUPPORT is not set | ||
| 145 | # CONFIG_USB_SUPPORT is not set | ||
| 146 | CONFIG_MMC=m | ||
| 147 | CONFIG_RTC_CLASS=y | ||
| 148 | CONFIG_RTC_DRV_BFIN=y | ||
| 149 | CONFIG_EXT2_FS=y | ||
| 150 | # CONFIG_DNOTIFY is not set | ||
| 151 | CONFIG_ISO9660_FS=m | ||
| 152 | CONFIG_JOLIET=y | ||
| 153 | CONFIG_UDF_FS=m | ||
| 154 | CONFIG_MSDOS_FS=y | ||
| 155 | CONFIG_VFAT_FS=y | ||
| 156 | CONFIG_JFFS2_FS=y | ||
| 157 | CONFIG_NFS_FS=m | ||
| 158 | CONFIG_NFS_V3=y | ||
| 159 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
| 160 | CONFIG_NLS_CODEPAGE_437=m | ||
| 161 | CONFIG_NLS_CODEPAGE_936=m | ||
| 162 | CONFIG_NLS_ISO8859_1=m | ||
| 163 | CONFIG_NLS_UTF8=m | ||
| 164 | CONFIG_DEBUG_KERNEL=y | ||
| 165 | CONFIG_DEBUG_SHIRQ=y | ||
| 166 | CONFIG_DETECT_HUNG_TASK=y | ||
| 167 | CONFIG_DEBUG_INFO=y | ||
| 168 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 169 | # CONFIG_FTRACE is not set | ||
| 170 | CONFIG_DEBUG_MMRS=y | ||
| 171 | CONFIG_DEBUG_HWERR=y | ||
| 172 | CONFIG_EXACT_HWERR=y | ||
| 173 | CONFIG_DEBUG_DOUBLEFAULT=y | ||
| 174 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE=y | ||
| 175 | CONFIG_EARLY_PRINTK=y | ||
| 176 | CONFIG_CPLB_INFO=y | ||
| 177 | CONFIG_SECURITY=y | ||
| 178 | CONFIG_CRYPTO=y | ||
| 179 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 180 | CONFIG_CRC7=m | ||
diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild index d9eb29e2555c..9e7c5379d3ff 100644 --- a/arch/blackfin/include/asm/Kbuild +++ b/arch/blackfin/include/asm/Kbuild | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | include include/asm-generic/Kbuild.asm | 1 | include include/asm-generic/Kbuild.asm |
| 2 | 2 | ||
| 3 | header-y += bfin_sport.h | 3 | header-y += bfin_sport.h |
| 4 | header-y += cachectl.h | ||
| 4 | header-y += fixed_code.h | 5 | header-y += fixed_code.h |
diff --git a/arch/blackfin/include/asm/bfin5xx_spi.h b/arch/blackfin/include/asm/bfin5xx_spi.h index 4223cf08ce83..0b5136e334b5 100644 --- a/arch/blackfin/include/asm/bfin5xx_spi.h +++ b/arch/blackfin/include/asm/bfin5xx_spi.h | |||
| @@ -41,6 +41,25 @@ | |||
| 41 | #define BIT_STU_SENDOVER 0x0001 | 41 | #define BIT_STU_SENDOVER 0x0001 |
| 42 | #define BIT_STU_RECVFULL 0x0020 | 42 | #define BIT_STU_RECVFULL 0x0020 |
| 43 | 43 | ||
| 44 | /* | ||
| 45 | * All Blackfin system MMRs are padded to 32bits even if the register | ||
| 46 | * itself is only 16bits. So use a helper macro to streamline this. | ||
| 47 | */ | ||
| 48 | #define __BFP(m) u16 m; u16 __pad_##m | ||
| 49 | |||
| 50 | /* | ||
| 51 | * bfin spi registers layout | ||
| 52 | */ | ||
| 53 | struct bfin_spi_regs { | ||
| 54 | __BFP(ctl); | ||
| 55 | __BFP(flg); | ||
| 56 | __BFP(stat); | ||
| 57 | __BFP(tdbr); | ||
| 58 | __BFP(rdbr); | ||
| 59 | __BFP(baud); | ||
| 60 | __BFP(shadow); | ||
| 61 | }; | ||
| 62 | |||
| 44 | #define MAX_CTRL_CS 8 /* cs in spi controller */ | 63 | #define MAX_CTRL_CS 8 /* cs in spi controller */ |
| 45 | 64 | ||
| 46 | /* device.platform_data for SSP controller devices */ | 65 | /* device.platform_data for SSP controller devices */ |
diff --git a/arch/blackfin/include/asm/bfin_can.h b/arch/blackfin/include/asm/bfin_can.h index eec0076a385b..b1492e0bcabb 100644 --- a/arch/blackfin/include/asm/bfin_can.h +++ b/arch/blackfin/include/asm/bfin_can.h | |||
| @@ -34,6 +34,7 @@ struct bfin_can_mask_regs { | |||
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| 36 | struct bfin_can_channel_regs { | 36 | struct bfin_can_channel_regs { |
| 37 | /* data[0,2,4,6] -> data{0,1,2,3} while data[1,3,5,7] is padding */ | ||
| 37 | u16 data[8]; | 38 | u16 data[8]; |
| 38 | __BFP(dlc); | 39 | __BFP(dlc); |
| 39 | __BFP(tsv); | 40 | __BFP(tsv); |
| @@ -83,16 +84,18 @@ struct bfin_can_regs { | |||
| 83 | __BFP(gif); /* offset 0x9c */ | 84 | __BFP(gif); /* offset 0x9c */ |
| 84 | __BFP(control); /* offset 0xa0 */ | 85 | __BFP(control); /* offset 0xa0 */ |
| 85 | __BFP(intr); /* offset 0xa4 */ | 86 | __BFP(intr); /* offset 0xa4 */ |
| 86 | u32 __pad3[1]; | 87 | __BFP(version); /* offset 0xa8 */ |
| 87 | __BFP(mbtd); /* offset 0xac */ | 88 | __BFP(mbtd); /* offset 0xac */ |
| 88 | __BFP(ewr); /* offset 0xb0 */ | 89 | __BFP(ewr); /* offset 0xb0 */ |
| 89 | __BFP(esr); /* offset 0xb4 */ | 90 | __BFP(esr); /* offset 0xb4 */ |
| 90 | u32 __pad4[2]; | 91 | u32 __pad3[2]; |
| 91 | __BFP(ucreg); /* offset 0xc0 */ | 92 | __BFP(ucreg); /* offset 0xc0 */ |
| 92 | __BFP(uccnt); /* offset 0xc4 */ | 93 | __BFP(uccnt); /* offset 0xc4 */ |
| 93 | __BFP(ucrc); /* offset 0xc8 */ | 94 | __BFP(ucrc); /* offset 0xc8 */ |
| 94 | __BFP(uccnf); /* offset 0xcc */ | 95 | __BFP(uccnf); /* offset 0xcc */ |
| 95 | u32 __pad5[12]; | 96 | u32 __pad4[1]; |
| 97 | __BFP(version2); /* offset 0xd4 */ | ||
| 98 | u32 __pad5[10]; | ||
| 96 | 99 | ||
| 97 | /* | 100 | /* |
| 98 | * channel(mailbox) mask and message registers | 101 | * channel(mailbox) mask and message registers |
diff --git a/arch/blackfin/include/asm/bfin_ppi.h b/arch/blackfin/include/asm/bfin_ppi.h new file mode 100644 index 000000000000..003900886f97 --- /dev/null +++ b/arch/blackfin/include/asm/bfin_ppi.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* | ||
| 2 | * bfin_ppi.h - interface to Blackfin PPIs | ||
| 3 | * | ||
| 4 | * Copyright 2005-2010 Analog Devices Inc. | ||
| 5 | * | ||
| 6 | * Licensed under the GPL-2 or later. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __ASM_BFIN_PPI_H__ | ||
| 10 | #define __ASM_BFIN_PPI_H__ | ||
| 11 | |||
| 12 | #include <linux/types.h> | ||
| 13 | |||
| 14 | /* | ||
| 15 | * All Blackfin system MMRs are padded to 32bits even if the register | ||
| 16 | * itself is only 16bits. So use a helper macro to streamline this. | ||
| 17 | */ | ||
| 18 | #define __BFP(m) u16 m; u16 __pad_##m | ||
| 19 | |||
| 20 | /* | ||
| 21 | * bfin ppi registers layout | ||
| 22 | */ | ||
| 23 | struct bfin_ppi_regs { | ||
| 24 | __BFP(control); | ||
| 25 | __BFP(status); | ||
| 26 | __BFP(count); | ||
| 27 | __BFP(delay); | ||
| 28 | __BFP(frame); | ||
| 29 | }; | ||
| 30 | |||
| 31 | /* | ||
| 32 | * bfin eppi registers layout | ||
| 33 | */ | ||
| 34 | struct bfin_eppi_regs { | ||
| 35 | __BFP(status); | ||
| 36 | __BFP(hcount); | ||
| 37 | __BFP(hdelay); | ||
| 38 | __BFP(vcount); | ||
| 39 | __BFP(vdelay); | ||
| 40 | __BFP(frame); | ||
| 41 | __BFP(line); | ||
| 42 | __BFP(clkdiv); | ||
| 43 | u32 control; | ||
| 44 | u32 fs1w_hbl; | ||
| 45 | u32 fs1p_avpl; | ||
| 46 | u32 fs2w_lvb; | ||
| 47 | u32 fs2p_lavf; | ||
| 48 | u32 clip; | ||
| 49 | }; | ||
| 50 | |||
| 51 | #endif | ||
diff --git a/arch/blackfin/include/asm/cachectl.h b/arch/blackfin/include/asm/cachectl.h new file mode 100644 index 000000000000..03255df6c1ea --- /dev/null +++ b/arch/blackfin/include/asm/cachectl.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | /* | ||
| 2 | * based on the mips/cachectl.h | ||
| 3 | * | ||
| 4 | * Copyright 2010 Analog Devices Inc. | ||
| 5 | * Copyright (C) 1994, 1995, 1996 by Ralf Baechle | ||
| 6 | * | ||
| 7 | * Licensed under the GPL-2 or later. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef _ASM_CACHECTL | ||
| 11 | #define _ASM_CACHECTL | ||
| 12 | |||
| 13 | /* | ||
| 14 | * Options for cacheflush system call | ||
| 15 | */ | ||
| 16 | #define ICACHE (1<<0) /* flush instruction cache */ | ||
| 17 | #define DCACHE (1<<1) /* writeback and flush data cache */ | ||
| 18 | #define BCACHE (ICACHE|DCACHE) /* flush both caches */ | ||
| 19 | |||
| 20 | #endif /* _ASM_CACHECTL */ | ||
diff --git a/arch/blackfin/include/asm/cdef_LPBlackfin.h b/arch/blackfin/include/asm/cdef_LPBlackfin.h index 6c39d94b44d0..a1f6817687e8 100644 --- a/arch/blackfin/include/asm/cdef_LPBlackfin.h +++ b/arch/blackfin/include/asm/cdef_LPBlackfin.h | |||
| @@ -172,16 +172,19 @@ | |||
| 172 | #define bfin_write_ICPLB_DATA14(val) bfin_write32(ICPLB_DATA14,val) | 172 | #define bfin_write_ICPLB_DATA14(val) bfin_write32(ICPLB_DATA14,val) |
| 173 | #define bfin_read_ICPLB_DATA15() bfin_read32(ICPLB_DATA15) | 173 | #define bfin_read_ICPLB_DATA15() bfin_read32(ICPLB_DATA15) |
| 174 | #define bfin_write_ICPLB_DATA15(val) bfin_write32(ICPLB_DATA15,val) | 174 | #define bfin_write_ICPLB_DATA15(val) bfin_write32(ICPLB_DATA15,val) |
| 175 | #define bfin_read_ITEST_COMMAND() bfin_read32(ITEST_COMMAND) | ||
| 176 | #define bfin_write_ITEST_COMMAND(val) bfin_write32(ITEST_COMMAND,val) | 175 | #define bfin_write_ITEST_COMMAND(val) bfin_write32(ITEST_COMMAND,val) |
| 177 | #if 0 | 176 | #if 0 |
| 178 | #define ITEST_INDEX 0xFFE01304 /* Instruction Test Index Register */ | 177 | #define ITEST_INDEX 0xFFE01304 /* Instruction Test Index Register */ |
| 179 | #endif | 178 | #endif |
| 180 | #define bfin_read_ITEST_DATA0() bfin_read32(ITEST_DATA0) | ||
| 181 | #define bfin_write_ITEST_DATA0(val) bfin_write32(ITEST_DATA0,val) | 179 | #define bfin_write_ITEST_DATA0(val) bfin_write32(ITEST_DATA0,val) |
| 182 | #define bfin_read_ITEST_DATA1() bfin_read32(ITEST_DATA1) | ||
| 183 | #define bfin_write_ITEST_DATA1(val) bfin_write32(ITEST_DATA1,val) | 180 | #define bfin_write_ITEST_DATA1(val) bfin_write32(ITEST_DATA1,val) |
| 184 | 181 | ||
| 182 | #if ANOMALY_05000481 | ||
| 183 | #define bfin_read_ITEST_COMMAND() bfin_read32(ITEST_COMMAND) | ||
| 184 | #define bfin_read_ITEST_DATA0() bfin_read32(ITEST_DATA0) | ||
| 185 | #define bfin_read_ITEST_DATA1() bfin_read32(ITEST_DATA1) | ||
| 186 | #endif | ||
| 187 | |||
| 185 | /* Event/Interrupt Registers*/ | 188 | /* Event/Interrupt Registers*/ |
| 186 | 189 | ||
| 187 | #define bfin_read_EVT0() bfin_read32(EVT0) | 190 | #define bfin_read_EVT0() bfin_read32(EVT0) |
diff --git a/arch/blackfin/include/asm/ptrace.h b/arch/blackfin/include/asm/ptrace.h index aaa1c6c2bc19..832d7c009a2c 100644 --- a/arch/blackfin/include/asm/ptrace.h +++ b/arch/blackfin/include/asm/ptrace.h | |||
| @@ -113,6 +113,9 @@ extern void user_disable_single_step(struct task_struct *child); | |||
| 113 | /* common code demands this function */ | 113 | /* common code demands this function */ |
| 114 | #define ptrace_disable(child) user_disable_single_step(child) | 114 | #define ptrace_disable(child) user_disable_single_step(child) |
| 115 | 115 | ||
| 116 | extern int is_user_addr_valid(struct task_struct *child, | ||
| 117 | unsigned long start, unsigned long len); | ||
| 118 | |||
| 116 | /* | 119 | /* |
| 117 | * Get the address of the live pt_regs for the specified task. | 120 | * Get the address of the live pt_regs for the specified task. |
| 118 | * These are saved onto the top kernel stack when the process | 121 | * These are saved onto the top kernel stack when the process |
diff --git a/arch/blackfin/include/asm/serial.h b/arch/blackfin/include/asm/serial.h index 94a4a12e3bf2..a0cb0caff152 100644 --- a/arch/blackfin/include/asm/serial.h +++ b/arch/blackfin/include/asm/serial.h | |||
| @@ -1,2 +1 @@ | |||
| 1 | #include <asm-generic/serial.h> | #include <asm-generic/serial.h> | |
| 2 | #define SERIAL_EXTRA_IRQ_FLAGS IRQF_TRIGGER_HIGH | ||
diff --git a/arch/blackfin/include/asm/unistd.h b/arch/blackfin/include/asm/unistd.h index 14fcd254b185..928ae975b87e 100644 --- a/arch/blackfin/include/asm/unistd.h +++ b/arch/blackfin/include/asm/unistd.h | |||
| @@ -392,8 +392,9 @@ | |||
| 392 | #define __NR_fanotify_init 371 | 392 | #define __NR_fanotify_init 371 |
| 393 | #define __NR_fanotify_mark 372 | 393 | #define __NR_fanotify_mark 372 |
| 394 | #define __NR_prlimit64 373 | 394 | #define __NR_prlimit64 373 |
| 395 | #define __NR_cacheflush 374 | ||
| 395 | 396 | ||
| 396 | #define __NR_syscall 374 | 397 | #define __NR_syscall 375 |
| 397 | #define NR_syscalls __NR_syscall | 398 | #define NR_syscalls __NR_syscall |
| 398 | 399 | ||
| 399 | /* Old optional stuff no one actually uses */ | 400 | /* Old optional stuff no one actually uses */ |
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c index ca1c1f9debd6..170cf90735ba 100644 --- a/arch/blackfin/kernel/bfin_gpio.c +++ b/arch/blackfin/kernel/bfin_gpio.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * GPIO Abstraction Layer | 2 | * GPIO Abstraction Layer |
| 3 | * | 3 | * |
| 4 | * Copyright 2006-2009 Analog Devices Inc. | 4 | * Copyright 2006-2010 Analog Devices Inc. |
| 5 | * | 5 | * |
| 6 | * Licensed under the GPL-2 or later | 6 | * Licensed under the GPL-2 or later |
| 7 | */ | 7 | */ |
| @@ -215,82 +215,91 @@ static void port_setup(unsigned gpio, unsigned short usage) | |||
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | #ifdef BF537_FAMILY | 217 | #ifdef BF537_FAMILY |
| 218 | static struct { | 218 | static const s8 port_mux[] = { |
| 219 | unsigned short res; | 219 | [GPIO_PF0] = 3, |
| 220 | unsigned short offset; | 220 | [GPIO_PF1] = 3, |
| 221 | } port_mux_lut[] = { | 221 | [GPIO_PF2] = 4, |
| 222 | {.res = P_PPI0_D13, .offset = 11}, | 222 | [GPIO_PF3] = 4, |
| 223 | {.res = P_PPI0_D14, .offset = 11}, | 223 | [GPIO_PF4] = 5, |
| 224 | {.res = P_PPI0_D15, .offset = 11}, | 224 | [GPIO_PF5] = 6, |
| 225 | {.res = P_SPORT1_TFS, .offset = 11}, | 225 | [GPIO_PF6] = 7, |
| 226 | {.res = P_SPORT1_TSCLK, .offset = 11}, | 226 | [GPIO_PF7] = 8, |
| 227 | {.res = P_SPORT1_DTPRI, .offset = 11}, | 227 | [GPIO_PF8 ... GPIO_PF15] = -1, |
| 228 | {.res = P_PPI0_D10, .offset = 10}, | 228 | [GPIO_PG0 ... GPIO_PG7] = -1, |
| 229 | {.res = P_PPI0_D11, .offset = 10}, | 229 | [GPIO_PG8] = 9, |
| 230 | {.res = P_PPI0_D12, .offset = 10}, | 230 | [GPIO_PG9] = 9, |
| 231 | {.res = P_SPORT1_RSCLK, .offset = 10}, | 231 | [GPIO_PG10] = 10, |
| 232 | {.res = P_SPORT1_RFS, .offset = 10}, | 232 | [GPIO_PG11] = 10, |
| 233 | {.res = P_SPORT1_DRPRI, .offset = 10}, | 233 | [GPIO_PG12] = 10, |
| 234 | {.res = P_PPI0_D8, .offset = 9}, | 234 | [GPIO_PG13] = 11, |
| 235 | {.res = P_PPI0_D9, .offset = 9}, | 235 | [GPIO_PG14] = 11, |
| 236 | {.res = P_SPORT1_DRSEC, .offset = 9}, | 236 | [GPIO_PG15] = 11, |
| 237 | {.res = P_SPORT1_DTSEC, .offset = 9}, | 237 | [GPIO_PH0 ... GPIO_PH15] = -1, |
| 238 | {.res = P_TMR2, .offset = 8}, | 238 | [PORT_PJ0 ... PORT_PJ3] = -1, |
| 239 | {.res = P_PPI0_FS3, .offset = 8}, | 239 | [PORT_PJ4] = 1, |
| 240 | {.res = P_TMR3, .offset = 7}, | 240 | [PORT_PJ5] = 1, |
| 241 | {.res = P_SPI0_SSEL4, .offset = 7}, | 241 | [PORT_PJ6 ... PORT_PJ9] = -1, |
| 242 | {.res = P_TMR4, .offset = 6}, | 242 | [PORT_PJ10] = 0, |
| 243 | {.res = P_SPI0_SSEL5, .offset = 6}, | 243 | [PORT_PJ11] = 0, |
| 244 | {.res = P_TMR5, .offset = 5}, | ||
| 245 | {.res = P_SPI0_SSEL6, .offset = 5}, | ||
| 246 | {.res = P_UART1_RX, .offset = 4}, | ||
| 247 | {.res = P_UART1_TX, .offset = 4}, | ||
| 248 | {.res = P_TMR6, .offset = 4}, | ||
| 249 | {.res = P_TMR7, .offset = 4}, | ||
| 250 | {.res = P_UART0_RX, .offset = 3}, | ||
| 251 | {.res = P_UART0_TX, .offset = 3}, | ||
| 252 | {.res = P_DMAR0, .offset = 3}, | ||
| 253 | {.res = P_DMAR1, .offset = 3}, | ||
| 254 | {.res = P_SPORT0_DTSEC, .offset = 1}, | ||
| 255 | {.res = P_SPORT0_DRSEC, .offset = 1}, | ||
| 256 | {.res = P_CAN0_RX, .offset = 1}, | ||
| 257 | {.res = P_CAN0_TX, .offset = 1}, | ||
| 258 | {.res = P_SPI0_SSEL7, .offset = 1}, | ||
| 259 | {.res = P_SPORT0_TFS, .offset = 0}, | ||
| 260 | {.res = P_SPORT0_DTPRI, .offset = 0}, | ||
| 261 | {.res = P_SPI0_SSEL2, .offset = 0}, | ||
| 262 | {.res = P_SPI0_SSEL3, .offset = 0}, | ||
| 263 | }; | 244 | }; |
| 264 | 245 | ||
| 265 | static void portmux_setup(unsigned short per) | 246 | static int portmux_group_check(unsigned short per) |
| 266 | { | 247 | { |
| 267 | u16 y, offset, muxreg; | 248 | u16 ident = P_IDENT(per); |
| 268 | u16 function = P_FUNCT2MUX(per); | 249 | u16 function = P_FUNCT2MUX(per); |
| 250 | s8 offset = port_mux[ident]; | ||
| 251 | u16 m, pmux, pfunc; | ||
| 269 | 252 | ||
| 270 | for (y = 0; y < ARRAY_SIZE(port_mux_lut); y++) { | 253 | if (offset < 0) |
| 271 | if (port_mux_lut[y].res == per) { | 254 | return 0; |
| 272 | |||
| 273 | /* SET PORTMUX REG */ | ||
| 274 | |||
| 275 | offset = port_mux_lut[y].offset; | ||
| 276 | muxreg = bfin_read_PORT_MUX(); | ||
| 277 | 255 | ||
| 278 | if (offset != 1) | 256 | pmux = bfin_read_PORT_MUX(); |
| 279 | muxreg &= ~(1 << offset); | 257 | for (m = 0; m < ARRAY_SIZE(port_mux); ++m) { |
| 280 | else | 258 | if (m == ident) |
| 281 | muxreg &= ~(3 << 1); | 259 | continue; |
| 260 | if (port_mux[m] != offset) | ||
| 261 | continue; | ||
| 262 | if (!is_reserved(peri, m, 1)) | ||
| 263 | continue; | ||
| 282 | 264 | ||
| 283 | muxreg |= (function << offset); | 265 | if (offset == 1) |
| 284 | bfin_write_PORT_MUX(muxreg); | 266 | pfunc = (pmux >> offset) & 3; |
| 267 | else | ||
| 268 | pfunc = (pmux >> offset) & 1; | ||
| 269 | if (pfunc != function) { | ||
| 270 | pr_err("pin group conflict! request pin %d func %d conflict with pin %d func %d\n", | ||
| 271 | ident, function, m, pfunc); | ||
| 272 | return -EINVAL; | ||
| 285 | } | 273 | } |
| 286 | } | 274 | } |
| 275 | |||
| 276 | return 0; | ||
| 277 | } | ||
| 278 | |||
| 279 | static void portmux_setup(unsigned short per) | ||
| 280 | { | ||
| 281 | u16 ident = P_IDENT(per); | ||
| 282 | u16 function = P_FUNCT2MUX(per); | ||
| 283 | s8 offset = port_mux[ident]; | ||
| 284 | u16 pmux; | ||
| 285 | |||
| 286 | if (offset == -1) | ||
| 287 | return; | ||
| 288 | |||
| 289 | pmux = bfin_read_PORT_MUX(); | ||
| 290 | if (offset != 1) | ||
| 291 | pmux &= ~(1 << offset); | ||
| 292 | else | ||
| 293 | pmux &= ~(3 << 1); | ||
| 294 | pmux |= (function << offset); | ||
| 295 | bfin_write_PORT_MUX(pmux); | ||
| 287 | } | 296 | } |
| 288 | #elif defined(CONFIG_BF54x) | 297 | #elif defined(CONFIG_BF54x) |
| 289 | inline void portmux_setup(unsigned short per) | 298 | inline void portmux_setup(unsigned short per) |
| 290 | { | 299 | { |
| 291 | u32 pmux; | ||
| 292 | u16 ident = P_IDENT(per); | 300 | u16 ident = P_IDENT(per); |
| 293 | u16 function = P_FUNCT2MUX(per); | 301 | u16 function = P_FUNCT2MUX(per); |
| 302 | u32 pmux; | ||
| 294 | 303 | ||
| 295 | pmux = gpio_array[gpio_bank(ident)]->port_mux; | 304 | pmux = gpio_array[gpio_bank(ident)]->port_mux; |
| 296 | 305 | ||
| @@ -302,20 +311,54 @@ inline void portmux_setup(unsigned short per) | |||
| 302 | 311 | ||
| 303 | inline u16 get_portmux(unsigned short per) | 312 | inline u16 get_portmux(unsigned short per) |
| 304 | { | 313 | { |
| 305 | u32 pmux; | ||
| 306 | u16 ident = P_IDENT(per); | 314 | u16 ident = P_IDENT(per); |
| 307 | 315 | u32 pmux = gpio_array[gpio_bank(ident)]->port_mux; | |
| 308 | pmux = gpio_array[gpio_bank(ident)]->port_mux; | ||
| 309 | |||
| 310 | return (pmux >> (2 * gpio_sub_n(ident)) & 0x3); | 316 | return (pmux >> (2 * gpio_sub_n(ident)) & 0x3); |
| 311 | } | 317 | } |
| 318 | static int portmux_group_check(unsigned short per) | ||
| 319 | { | ||
| 320 | return 0; | ||
| 321 | } | ||
| 312 | #elif defined(CONFIG_BF52x) || defined(CONFIG_BF51x) | 322 | #elif defined(CONFIG_BF52x) || defined(CONFIG_BF51x) |
| 323 | static int portmux_group_check(unsigned short per) | ||
| 324 | { | ||
| 325 | u16 ident = P_IDENT(per); | ||
| 326 | u16 function = P_FUNCT2MUX(per); | ||
| 327 | u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)]; | ||
| 328 | u16 pin, gpiopin, pfunc; | ||
| 329 | |||
| 330 | for (pin = 0; pin < GPIO_BANKSIZE; ++pin) { | ||
| 331 | if (offset != pmux_offset[gpio_bank(ident)][pin]) | ||
| 332 | continue; | ||
| 333 | |||
| 334 | gpiopin = gpio_bank(ident) * GPIO_BANKSIZE + pin; | ||
| 335 | if (gpiopin == ident) | ||
| 336 | continue; | ||
| 337 | if (!is_reserved(peri, gpiopin, 1)) | ||
| 338 | continue; | ||
| 339 | |||
| 340 | pfunc = *port_mux[gpio_bank(ident)]; | ||
| 341 | pfunc = (pfunc >> offset) & 3; | ||
| 342 | if (pfunc != function) { | ||
| 343 | pr_err("pin group conflict! request pin %d func %d conflict with pin %d func %d\n", | ||
| 344 | ident, function, gpiopin, pfunc); | ||
| 345 | return -EINVAL; | ||
| 346 | } | ||
| 347 | } | ||
| 348 | |||
| 349 | return 0; | ||
| 350 | } | ||
| 351 | |||
| 313 | inline void portmux_setup(unsigned short per) | 352 | inline void portmux_setup(unsigned short per) |
| 314 | { | 353 | { |
| 315 | u16 pmux, ident = P_IDENT(per), function = P_FUNCT2MUX(per); | 354 | u16 ident = P_IDENT(per); |
| 355 | u16 function = P_FUNCT2MUX(per); | ||
| 316 | u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)]; | 356 | u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)]; |
| 357 | u16 pmux; | ||
| 317 | 358 | ||
| 318 | pmux = *port_mux[gpio_bank(ident)]; | 359 | pmux = *port_mux[gpio_bank(ident)]; |
| 360 | if (((pmux >> offset) & 3) == function) | ||
| 361 | return; | ||
| 319 | pmux &= ~(3 << offset); | 362 | pmux &= ~(3 << offset); |
| 320 | pmux |= (function & 3) << offset; | 363 | pmux |= (function & 3) << offset; |
| 321 | *port_mux[gpio_bank(ident)] = pmux; | 364 | *port_mux[gpio_bank(ident)] = pmux; |
| @@ -323,6 +366,10 @@ inline void portmux_setup(unsigned short per) | |||
| 323 | } | 366 | } |
| 324 | #else | 367 | #else |
| 325 | # define portmux_setup(...) do { } while (0) | 368 | # define portmux_setup(...) do { } while (0) |
| 369 | static int portmux_group_check(unsigned short per) | ||
| 370 | { | ||
| 371 | return 0; | ||
| 372 | } | ||
| 326 | #endif | 373 | #endif |
| 327 | 374 | ||
| 328 | #ifndef CONFIG_BF54x | 375 | #ifndef CONFIG_BF54x |
| @@ -735,6 +782,10 @@ int peripheral_request(unsigned short per, const char *label) | |||
| 735 | } | 782 | } |
| 736 | } | 783 | } |
| 737 | 784 | ||
| 785 | if (unlikely(portmux_group_check(per))) { | ||
| 786 | hard_local_irq_restore(flags); | ||
| 787 | return -EBUSY; | ||
| 788 | } | ||
| 738 | anyway: | 789 | anyway: |
| 739 | reserve(peri, ident); | 790 | reserve(peri, ident); |
| 740 | 791 | ||
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index c86a3ed5f48f..cd0c090ebc54 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
| @@ -493,6 +493,11 @@ int _access_ok(unsigned long addr, unsigned long size) | |||
| 493 | return 1; | 493 | return 1; |
| 494 | #endif | 494 | #endif |
| 495 | 495 | ||
| 496 | #ifndef CONFIG_EXCEPTION_L1_SCRATCH | ||
| 497 | if (in_mem_const(addr, size, (unsigned long)l1_stack_base, l1_stack_len)) | ||
| 498 | return 1; | ||
| 499 | #endif | ||
| 500 | |||
| 496 | aret = in_async(addr, size); | 501 | aret = in_async(addr, size); |
| 497 | if (aret < 2) | 502 | if (aret < 2) |
| 498 | return aret; | 503 | return aret; |
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c index 6ec77685df52..b35839354130 100644 --- a/arch/blackfin/kernel/ptrace.c +++ b/arch/blackfin/kernel/ptrace.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <asm/fixed_code.h> | 27 | #include <asm/fixed_code.h> |
| 28 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
| 29 | #include <asm/mem_map.h> | 29 | #include <asm/mem_map.h> |
| 30 | #include <asm/mmu_context.h> | ||
| 30 | 31 | ||
| 31 | /* | 32 | /* |
| 32 | * does not yet catch signals sent when the child dies. | 33 | * does not yet catch signals sent when the child dies. |
| @@ -113,8 +114,8 @@ put_reg(struct task_struct *task, long regno, unsigned long data) | |||
| 113 | /* | 114 | /* |
| 114 | * check that an address falls within the bounds of the target process's memory mappings | 115 | * check that an address falls within the bounds of the target process's memory mappings |
| 115 | */ | 116 | */ |
| 116 | static inline int is_user_addr_valid(struct task_struct *child, | 117 | int |
| 117 | unsigned long start, unsigned long len) | 118 | is_user_addr_valid(struct task_struct *child, unsigned long start, unsigned long len) |
| 118 | { | 119 | { |
| 119 | struct vm_area_struct *vma; | 120 | struct vm_area_struct *vma; |
| 120 | struct sram_list_struct *sraml; | 121 | struct sram_list_struct *sraml; |
| @@ -135,6 +136,13 @@ static inline int is_user_addr_valid(struct task_struct *child, | |||
| 135 | if (start >= FIXED_CODE_START && start + len < FIXED_CODE_END) | 136 | if (start >= FIXED_CODE_START && start + len < FIXED_CODE_END) |
| 136 | return 0; | 137 | return 0; |
| 137 | 138 | ||
| 139 | #ifdef CONFIG_APP_STACK_L1 | ||
| 140 | if (child->mm->context.l1_stack_save) | ||
| 141 | if (start >= (unsigned long)l1_stack_base && | ||
| 142 | start + len < (unsigned long)l1_stack_base + l1_stack_len) | ||
| 143 | return 0; | ||
| 144 | #endif | ||
| 145 | |||
| 138 | return -EIO; | 146 | return -EIO; |
| 139 | } | 147 | } |
| 140 | 148 | ||
diff --git a/arch/blackfin/kernel/sys_bfin.c b/arch/blackfin/kernel/sys_bfin.c index bdc1e2f0da32..89448ed7065d 100644 --- a/arch/blackfin/kernel/sys_bfin.c +++ b/arch/blackfin/kernel/sys_bfin.c | |||
| @@ -21,6 +21,8 @@ | |||
| 21 | 21 | ||
| 22 | #include <asm/cacheflush.h> | 22 | #include <asm/cacheflush.h> |
| 23 | #include <asm/dma.h> | 23 | #include <asm/dma.h> |
| 24 | #include <asm/cachectl.h> | ||
| 25 | #include <asm/ptrace.h> | ||
| 24 | 26 | ||
| 25 | asmlinkage void *sys_sram_alloc(size_t size, unsigned long flags) | 27 | asmlinkage void *sys_sram_alloc(size_t size, unsigned long flags) |
| 26 | { | 28 | { |
| @@ -70,3 +72,16 @@ asmlinkage int sys_bfin_spinlock(int *p) | |||
| 70 | 72 | ||
| 71 | return ret; | 73 | return ret; |
| 72 | } | 74 | } |
| 75 | |||
| 76 | SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, len, int, op) | ||
| 77 | { | ||
| 78 | if (is_user_addr_valid(current, addr, len) != 0) | ||
| 79 | return -EINVAL; | ||
| 80 | |||
| 81 | if (op & DCACHE) | ||
| 82 | blackfin_dcache_flush_range(addr, addr + len); | ||
| 83 | if (op & ICACHE) | ||
| 84 | blackfin_icache_flush_range(addr, addr + len); | ||
| 85 | |||
| 86 | return 0; | ||
| 87 | } | ||
diff --git a/arch/blackfin/mach-bf518/boards/ezbrd.c b/arch/blackfin/mach-bf518/boards/ezbrd.c index 44d6d5299022..f95e6096719b 100644 --- a/arch/blackfin/mach-bf518/boards/ezbrd.c +++ b/arch/blackfin/mach-bf518/boards/ezbrd.c | |||
| @@ -312,7 +312,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 312 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 312 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 313 | /* SPI (0) */ | 313 | /* SPI (0) */ |
| 314 | static struct bfin5xx_spi_master bfin_spi0_info = { | 314 | static struct bfin5xx_spi_master bfin_spi0_info = { |
| 315 | .num_chipselect = 5, | 315 | .num_chipselect = 6, |
| 316 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 316 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 317 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | 317 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, |
| 318 | }; | 318 | }; |
| @@ -347,7 +347,7 @@ static struct platform_device bfin_spi0_device = { | |||
| 347 | 347 | ||
| 348 | /* SPI (1) */ | 348 | /* SPI (1) */ |
| 349 | static struct bfin5xx_spi_master bfin_spi1_info = { | 349 | static struct bfin5xx_spi_master bfin_spi1_info = { |
| 350 | .num_chipselect = 5, | 350 | .num_chipselect = 6, |
| 351 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 351 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 352 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, | 352 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, |
| 353 | }; | 353 | }; |
| @@ -525,6 +525,14 @@ static struct platform_device bfin_sir1_device = { | |||
| 525 | #endif | 525 | #endif |
| 526 | #endif | 526 | #endif |
| 527 | 527 | ||
| 528 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 529 | static struct platform_device bfin_i2s = { | ||
| 530 | .name = "bfin-i2s", | ||
| 531 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 532 | /* TODO: add platform data here */ | ||
| 533 | }; | ||
| 534 | #endif | ||
| 535 | |||
| 528 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | 536 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) |
| 529 | static struct resource bfin_twi0_resource[] = { | 537 | static struct resource bfin_twi0_resource[] = { |
| 530 | [0] = { | 538 | [0] = { |
| @@ -559,6 +567,11 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 559 | .irq = IRQ_PF8, | 567 | .irq = IRQ_PF8, |
| 560 | }, | 568 | }, |
| 561 | #endif | 569 | #endif |
| 570 | #if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE) | ||
| 571 | { | ||
| 572 | I2C_BOARD_INFO("ssm2602", 0x1b), | ||
| 573 | }, | ||
| 574 | #endif | ||
| 562 | }; | 575 | }; |
| 563 | 576 | ||
| 564 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | 577 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) |
| @@ -736,6 +749,10 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
| 736 | &i2c_bfin_twi_device, | 749 | &i2c_bfin_twi_device, |
| 737 | #endif | 750 | #endif |
| 738 | 751 | ||
| 752 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 753 | &bfin_i2s, | ||
| 754 | #endif | ||
| 755 | |||
| 739 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | 756 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) |
| 740 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | 757 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART |
| 741 | &bfin_sport0_uart_device, | 758 | &bfin_sport0_uart_device, |
diff --git a/arch/blackfin/mach-bf518/boards/tcm-bf518.c b/arch/blackfin/mach-bf518/boards/tcm-bf518.c index 9b72e5cb21fe..bead810a6546 100644 --- a/arch/blackfin/mach-bf518/boards/tcm-bf518.c +++ b/arch/blackfin/mach-bf518/boards/tcm-bf518.c | |||
| @@ -291,7 +291,7 @@ static struct platform_device bfin_spi0_device = { | |||
| 291 | 291 | ||
| 292 | /* SPI (1) */ | 292 | /* SPI (1) */ |
| 293 | static struct bfin5xx_spi_master bfin_spi1_info = { | 293 | static struct bfin5xx_spi_master bfin_spi1_info = { |
| 294 | .num_chipselect = 5, | 294 | .num_chipselect = 6, |
| 295 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 295 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 296 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, | 296 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, |
| 297 | }; | 297 | }; |
diff --git a/arch/blackfin/mach-bf518/include/mach/cdefBF51x_base.h b/arch/blackfin/mach-bf518/include/mach/cdefBF51x_base.h index 29498e59e71f..e16969f24ffd 100644 --- a/arch/blackfin/mach-bf518/include/mach/cdefBF51x_base.h +++ b/arch/blackfin/mach-bf518/include/mach/cdefBF51x_base.h | |||
| @@ -262,14 +262,14 @@ | |||
| 262 | #define bfin_write_SPORT0_TX(val) bfin_write32(SPORT0_TX, val) | 262 | #define bfin_write_SPORT0_TX(val) bfin_write32(SPORT0_TX, val) |
| 263 | #define bfin_read_SPORT0_RX() bfin_read32(SPORT0_RX) | 263 | #define bfin_read_SPORT0_RX() bfin_read32(SPORT0_RX) |
| 264 | #define bfin_write_SPORT0_RX(val) bfin_write32(SPORT0_RX, val) | 264 | #define bfin_write_SPORT0_RX(val) bfin_write32(SPORT0_RX, val) |
| 265 | #define bfin_read_SPORT0_TX32() bfin_read32(SPORT0_TX32) | 265 | #define bfin_read_SPORT0_TX32() bfin_read32(SPORT0_TX) |
| 266 | #define bfin_write_SPORT0_TX32(val) bfin_write32(SPORT0_TX32, val) | 266 | #define bfin_write_SPORT0_TX32(val) bfin_write32(SPORT0_TX, val) |
| 267 | #define bfin_read_SPORT0_RX32() bfin_read32(SPORT0_RX32) | 267 | #define bfin_read_SPORT0_RX32() bfin_read32(SPORT0_RX) |
| 268 | #define bfin_write_SPORT0_RX32(val) bfin_write32(SPORT0_RX32, val) | 268 | #define bfin_write_SPORT0_RX32(val) bfin_write32(SPORT0_RX, val) |
| 269 | #define bfin_read_SPORT0_TX16() bfin_read16(SPORT0_TX16) | 269 | #define bfin_read_SPORT0_TX16() bfin_read16(SPORT0_TX) |
| 270 | #define bfin_write_SPORT0_TX16(val) bfin_write16(SPORT0_TX16, val) | 270 | #define bfin_write_SPORT0_TX16(val) bfin_write16(SPORT0_TX, val) |
| 271 | #define bfin_read_SPORT0_RX16() bfin_read16(SPORT0_RX16) | 271 | #define bfin_read_SPORT0_RX16() bfin_read16(SPORT0_RX) |
| 272 | #define bfin_write_SPORT0_RX16(val) bfin_write16(SPORT0_RX16, val) | 272 | #define bfin_write_SPORT0_RX16(val) bfin_write16(SPORT0_RX, val) |
| 273 | #define bfin_read_SPORT0_RCR1() bfin_read16(SPORT0_RCR1) | 273 | #define bfin_read_SPORT0_RCR1() bfin_read16(SPORT0_RCR1) |
| 274 | #define bfin_write_SPORT0_RCR1(val) bfin_write16(SPORT0_RCR1, val) | 274 | #define bfin_write_SPORT0_RCR1(val) bfin_write16(SPORT0_RCR1, val) |
| 275 | #define bfin_read_SPORT0_RCR2() bfin_read16(SPORT0_RCR2) | 275 | #define bfin_read_SPORT0_RCR2() bfin_read16(SPORT0_RCR2) |
| @@ -317,14 +317,14 @@ | |||
| 317 | #define bfin_write_SPORT1_TX(val) bfin_write32(SPORT1_TX, val) | 317 | #define bfin_write_SPORT1_TX(val) bfin_write32(SPORT1_TX, val) |
| 318 | #define bfin_read_SPORT1_RX() bfin_read32(SPORT1_RX) | 318 | #define bfin_read_SPORT1_RX() bfin_read32(SPORT1_RX) |
| 319 | #define bfin_write_SPORT1_RX(val) bfin_write32(SPORT1_RX, val) | 319 | #define bfin_write_SPORT1_RX(val) bfin_write32(SPORT1_RX, val) |
| 320 | #define bfin_read_SPORT1_TX32() bfin_read32(SPORT1_TX32) | 320 | #define bfin_read_SPORT1_TX32() bfin_read32(SPORT1_TX) |
| 321 | #define bfin_write_SPORT1_TX32(val) bfin_write32(SPORT1_TX32, val) | 321 | #define bfin_write_SPORT1_TX32(val) bfin_write32(SPORT1_TX, val) |
| 322 | #define bfin_read_SPORT1_RX32() bfin_read32(SPORT1_RX32) | 322 | #define bfin_read_SPORT1_RX32() bfin_read32(SPORT1_RX) |
| 323 | #define bfin_write_SPORT1_RX32(val) bfin_write32(SPORT1_RX32, val) | 323 | #define bfin_write_SPORT1_RX32(val) bfin_write32(SPORT1_RX, val) |
| 324 | #define bfin_read_SPORT1_TX16() bfin_read16(SPORT1_TX16) | 324 | #define bfin_read_SPORT1_TX16() bfin_read16(SPORT1_TX) |
| 325 | #define bfin_write_SPORT1_TX16(val) bfin_write16(SPORT1_TX16, val) | 325 | #define bfin_write_SPORT1_TX16(val) bfin_write16(SPORT1_TX, val) |
| 326 | #define bfin_read_SPORT1_RX16() bfin_read16(SPORT1_RX16) | 326 | #define bfin_read_SPORT1_RX16() bfin_read16(SPORT1_RX) |
| 327 | #define bfin_write_SPORT1_RX16(val) bfin_write16(SPORT1_RX16, val) | 327 | #define bfin_write_SPORT1_RX16(val) bfin_write16(SPORT1_RX, val) |
| 328 | #define bfin_read_SPORT1_RCR1() bfin_read16(SPORT1_RCR1) | 328 | #define bfin_read_SPORT1_RCR1() bfin_read16(SPORT1_RCR1) |
| 329 | #define bfin_write_SPORT1_RCR1(val) bfin_write16(SPORT1_RCR1, val) | 329 | #define bfin_write_SPORT1_RCR1(val) bfin_write16(SPORT1_RCR1, val) |
| 330 | #define bfin_read_SPORT1_RCR2() bfin_read16(SPORT1_RCR2) | 330 | #define bfin_read_SPORT1_RCR2() bfin_read16(SPORT1_RCR2) |
diff --git a/arch/blackfin/mach-bf518/include/mach/defBF51x_base.h b/arch/blackfin/mach-bf518/include/mach/defBF51x_base.h index 037a51fd8e93..5f84913dcd91 100644 --- a/arch/blackfin/mach-bf518/include/mach/defBF51x_base.h +++ b/arch/blackfin/mach-bf518/include/mach/defBF51x_base.h | |||
| @@ -748,51 +748,6 @@ | |||
| 748 | #define FFE 0x20 /* Force Framing Error On Transmit */ | 748 | #define FFE 0x20 /* Force Framing Error On Transmit */ |
| 749 | 749 | ||
| 750 | 750 | ||
| 751 | /* *********** SERIAL PERIPHERAL INTERFACE (SPI) MASKS ****************************/ | ||
| 752 | /* SPI_CTL Masks */ | ||
| 753 | #define TIMOD 0x0003 /* Transfer Initiate Mode */ | ||
| 754 | #define RDBR_CORE 0x0000 /* RDBR Read Initiates, IRQ When RDBR Full */ | ||
| 755 | #define TDBR_CORE 0x0001 /* TDBR Write Initiates, IRQ When TDBR Empty */ | ||
| 756 | #define RDBR_DMA 0x0002 /* DMA Read, DMA Until FIFO Empty */ | ||
| 757 | #define TDBR_DMA 0x0003 /* DMA Write, DMA Until FIFO Full */ | ||
| 758 | #define SZ 0x0004 /* Send Zero (When TDBR Empty, Send Zero/Last*) */ | ||
| 759 | #define GM 0x0008 /* Get More (When RDBR Full, Overwrite/Discard*) */ | ||
| 760 | #define PSSE 0x0010 /* Slave-Select Input Enable */ | ||
| 761 | #define EMISO 0x0020 /* Enable MISO As Output */ | ||
| 762 | #define SIZE 0x0100 /* Size of Words (16/8* Bits) */ | ||
| 763 | #define LSBF 0x0200 /* LSB First */ | ||
| 764 | #define CPHA 0x0400 /* Clock Phase */ | ||
| 765 | #define CPOL 0x0800 /* Clock Polarity */ | ||
| 766 | #define MSTR 0x1000 /* Master/Slave* */ | ||
| 767 | #define WOM 0x2000 /* Write Open Drain Master */ | ||
| 768 | #define SPE 0x4000 /* SPI Enable */ | ||
| 769 | |||
| 770 | /* SPI_FLG Masks */ | ||
| 771 | #define FLS1 0x0002 /* Enables SPI_FLOUT1 as SPI Slave-Select Output */ | ||
| 772 | #define FLS2 0x0004 /* Enables SPI_FLOUT2 as SPI Slave-Select Output */ | ||
| 773 | #define FLS3 0x0008 /* Enables SPI_FLOUT3 as SPI Slave-Select Output */ | ||
| 774 | #define FLS4 0x0010 /* Enables SPI_FLOUT4 as SPI Slave-Select Output */ | ||
| 775 | #define FLS5 0x0020 /* Enables SPI_FLOUT5 as SPI Slave-Select Output */ | ||
| 776 | #define FLS6 0x0040 /* Enables SPI_FLOUT6 as SPI Slave-Select Output */ | ||
| 777 | #define FLS7 0x0080 /* Enables SPI_FLOUT7 as SPI Slave-Select Output */ | ||
| 778 | #define FLG1 0xFDFF /* Activates SPI_FLOUT1 */ | ||
| 779 | #define FLG2 0xFBFF /* Activates SPI_FLOUT2 */ | ||
| 780 | #define FLG3 0xF7FF /* Activates SPI_FLOUT3 */ | ||
| 781 | #define FLG4 0xEFFF /* Activates SPI_FLOUT4 */ | ||
| 782 | #define FLG5 0xDFFF /* Activates SPI_FLOUT5 */ | ||
| 783 | #define FLG6 0xBFFF /* Activates SPI_FLOUT6 */ | ||
| 784 | #define FLG7 0x7FFF /* Activates SPI_FLOUT7 */ | ||
| 785 | |||
| 786 | /* SPI_STAT Masks */ | ||
| 787 | #define SPIF 0x0001 /* SPI Finished (Single-Word Transfer Complete) */ | ||
| 788 | #define MODF 0x0002 /* Mode Fault Error (Another Device Tried To Become Master) */ | ||
| 789 | #define TXE 0x0004 /* Transmission Error (Data Sent With No New Data In TDBR) */ | ||
| 790 | #define TXS 0x0008 /* SPI_TDBR Data Buffer Status (Full/Empty*) */ | ||
| 791 | #define RBSY 0x0010 /* Receive Error (Data Received With RDBR Full) */ | ||
| 792 | #define RXS 0x0020 /* SPI_RDBR Data Buffer Status (Full/Empty*) */ | ||
| 793 | #define TXCOL 0x0040 /* Transmit Collision Error (Corrupt Data May Have Been Sent) */ | ||
| 794 | |||
| 795 | |||
| 796 | /* **************** GENERAL PURPOSE TIMER MASKS **********************/ | 751 | /* **************** GENERAL PURPOSE TIMER MASKS **********************/ |
| 797 | /* TIMER_ENABLE Masks */ | 752 | /* TIMER_ENABLE Masks */ |
| 798 | #define TIMEN0 0x0001 /* Enable Timer 0 */ | 753 | #define TIMEN0 0x0001 /* Enable Timer 0 */ |
diff --git a/arch/blackfin/mach-bf527/boards/Kconfig b/arch/blackfin/mach-bf527/boards/Kconfig index b14c28810a44..1cc2667c10f1 100644 --- a/arch/blackfin/mach-bf527/boards/Kconfig +++ b/arch/blackfin/mach-bf527/boards/Kconfig | |||
| @@ -24,4 +24,14 @@ config BFIN526_EZBRD | |||
| 24 | help | 24 | help |
| 25 | BF526-EZBRD/EZKIT Lite board support. | 25 | BF526-EZBRD/EZKIT Lite board support. |
| 26 | 26 | ||
| 27 | config BFIN527_AD7160EVAL | ||
| 28 | bool "BF527-AD7160-EVAL" | ||
| 29 | help | ||
| 30 | BF527-AD7160-EVAL board support. | ||
| 31 | |||
| 32 | config BFIN527_TLL6527M | ||
| 33 | bool "The Learning Labs TLL6527M" | ||
| 34 | help | ||
| 35 | TLL6527M V1.0 platform support | ||
| 36 | |||
| 27 | endchoice | 37 | endchoice |
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile index 51a5817c4a90..1d67da9f05ac 100644 --- a/arch/blackfin/mach-bf527/boards/Makefile +++ b/arch/blackfin/mach-bf527/boards/Makefile | |||
| @@ -6,3 +6,5 @@ obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o | |||
| 6 | obj-$(CONFIG_BFIN527_EZKIT_V2) += ezkit.o | 6 | obj-$(CONFIG_BFIN527_EZKIT_V2) += ezkit.o |
| 7 | obj-$(CONFIG_BFIN527_BLUETECHNIX_CM) += cm_bf527.o | 7 | obj-$(CONFIG_BFIN527_BLUETECHNIX_CM) += cm_bf527.o |
| 8 | obj-$(CONFIG_BFIN526_EZBRD) += ezbrd.o | 8 | obj-$(CONFIG_BFIN526_EZBRD) += ezbrd.o |
| 9 | obj-$(CONFIG_BFIN527_AD7160EVAL) += ad7160eval.o | ||
| 10 | obj-$(CONFIG_BFIN527_TLL6527M) += tll6527m.o | ||
diff --git a/arch/blackfin/mach-bf527/boards/ad7160eval.c b/arch/blackfin/mach-bf527/boards/ad7160eval.c new file mode 100644 index 000000000000..fc767ac76381 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/ad7160eval.c | |||
| @@ -0,0 +1,870 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2004-20010 Analog Devices Inc. | ||
| 3 | * 2005 National ICT Australia (NICTA) | ||
| 4 | * Aidan Williams <aidan@nicta.com.au> | ||
| 5 | * | ||
| 6 | * Licensed under the GPL-2 or later. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <linux/device.h> | ||
| 10 | #include <linux/platform_device.h> | ||
| 11 | #include <linux/mtd/mtd.h> | ||
| 12 | #include <linux/mtd/partitions.h> | ||
| 13 | #include <linux/mtd/physmap.h> | ||
| 14 | #include <linux/spi/spi.h> | ||
| 15 | #include <linux/spi/flash.h> | ||
| 16 | #include <linux/i2c.h> | ||
| 17 | #include <linux/irq.h> | ||
| 18 | #include <linux/interrupt.h> | ||
| 19 | #include <linux/usb/musb.h> | ||
| 20 | #include <linux/leds.h> | ||
| 21 | #include <linux/input.h> | ||
| 22 | #include <asm/dma.h> | ||
| 23 | #include <asm/bfin5xx_spi.h> | ||
| 24 | #include <asm/reboot.h> | ||
| 25 | #include <asm/nand.h> | ||
| 26 | #include <asm/portmux.h> | ||
| 27 | #include <asm/dpmc.h> | ||
| 28 | |||
| 29 | |||
| 30 | /* | ||
| 31 | * Name the Board for the /proc/cpuinfo | ||
| 32 | */ | ||
| 33 | const char bfin_board_name[] = "ADI BF527-AD7160EVAL"; | ||
| 34 | |||
| 35 | /* | ||
| 36 | * Driver needs to know address, irq and flag pin. | ||
| 37 | */ | ||
| 38 | |||
| 39 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | ||
| 40 | static struct resource musb_resources[] = { | ||
| 41 | [0] = { | ||
| 42 | .start = 0xffc03800, | ||
| 43 | .end = 0xffc03cff, | ||
| 44 | .flags = IORESOURCE_MEM, | ||
| 45 | }, | ||
| 46 | [1] = { /* general IRQ */ | ||
| 47 | .start = IRQ_USB_INT0, | ||
| 48 | .end = IRQ_USB_INT0, | ||
| 49 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 50 | }, | ||
| 51 | [2] = { /* DMA IRQ */ | ||
| 52 | .start = IRQ_USB_DMA, | ||
| 53 | .end = IRQ_USB_DMA, | ||
| 54 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 55 | }, | ||
| 56 | }; | ||
| 57 | |||
| 58 | static struct musb_hdrc_config musb_config = { | ||
| 59 | .multipoint = 0, | ||
| 60 | .dyn_fifo = 0, | ||
| 61 | .soft_con = 1, | ||
| 62 | .dma = 1, | ||
| 63 | .num_eps = 8, | ||
| 64 | .dma_channels = 8, | ||
| 65 | .gpio_vrsel = GPIO_PG13, | ||
| 66 | /* Some custom boards need to be active low, just set it to "0" | ||
| 67 | * if it is the case. | ||
| 68 | */ | ||
| 69 | .gpio_vrsel_active = 1, | ||
| 70 | }; | ||
| 71 | |||
| 72 | static struct musb_hdrc_platform_data musb_plat = { | ||
| 73 | #if defined(CONFIG_USB_MUSB_OTG) | ||
| 74 | .mode = MUSB_OTG, | ||
| 75 | #elif defined(CONFIG_USB_MUSB_HDRC_HCD) | ||
| 76 | .mode = MUSB_HOST, | ||
| 77 | #elif defined(CONFIG_USB_GADGET_MUSB_HDRC) | ||
| 78 | .mode = MUSB_PERIPHERAL, | ||
| 79 | #endif | ||
| 80 | .config = &musb_config, | ||
| 81 | }; | ||
| 82 | |||
| 83 | static u64 musb_dmamask = ~(u32)0; | ||
| 84 | |||
| 85 | static struct platform_device musb_device = { | ||
| 86 | .name = "musb_hdrc", | ||
| 87 | .id = 0, | ||
| 88 | .dev = { | ||
| 89 | .dma_mask = &musb_dmamask, | ||
| 90 | .coherent_dma_mask = 0xffffffff, | ||
| 91 | .platform_data = &musb_plat, | ||
| 92 | }, | ||
| 93 | .num_resources = ARRAY_SIZE(musb_resources), | ||
| 94 | .resource = musb_resources, | ||
| 95 | }; | ||
| 96 | #endif | ||
| 97 | |||
| 98 | #if defined(CONFIG_FB_BFIN_RA158Z) || defined(CONFIG_FB_BFIN_RA158Z_MODULE) | ||
| 99 | static struct resource bf52x_ra158z_resources[] = { | ||
| 100 | { | ||
| 101 | .start = IRQ_PPI_ERROR, | ||
| 102 | .end = IRQ_PPI_ERROR, | ||
| 103 | .flags = IORESOURCE_IRQ, | ||
| 104 | }, | ||
| 105 | }; | ||
| 106 | |||
| 107 | static struct platform_device bf52x_ra158z_device = { | ||
| 108 | .name = "bfin-ra158z", | ||
| 109 | .id = -1, | ||
| 110 | .num_resources = ARRAY_SIZE(bf52x_ra158z_resources), | ||
| 111 | .resource = bf52x_ra158z_resources, | ||
| 112 | }; | ||
| 113 | #endif | ||
| 114 | |||
| 115 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | ||
| 116 | static struct mtd_partition ad7160eval_partitions[] = { | ||
| 117 | { | ||
| 118 | .name = "bootloader(nor)", | ||
| 119 | .size = 0x40000, | ||
| 120 | .offset = 0, | ||
| 121 | }, { | ||
| 122 | .name = "linux kernel(nor)", | ||
| 123 | .size = 0x1C0000, | ||
| 124 | .offset = MTDPART_OFS_APPEND, | ||
| 125 | }, { | ||
| 126 | .name = "file system(nor)", | ||
| 127 | .size = MTDPART_SIZ_FULL, | ||
| 128 | .offset = MTDPART_OFS_APPEND, | ||
| 129 | } | ||
| 130 | }; | ||
| 131 | |||
| 132 | static struct physmap_flash_data ad7160eval_flash_data = { | ||
| 133 | .width = 2, | ||
| 134 | .parts = ad7160eval_partitions, | ||
| 135 | .nr_parts = ARRAY_SIZE(ad7160eval_partitions), | ||
| 136 | }; | ||
| 137 | |||
| 138 | static struct resource ad7160eval_flash_resource = { | ||
| 139 | .start = 0x20000000, | ||
| 140 | .end = 0x203fffff, | ||
| 141 | .flags = IORESOURCE_MEM, | ||
| 142 | }; | ||
| 143 | |||
| 144 | static struct platform_device ad7160eval_flash_device = { | ||
| 145 | .name = "physmap-flash", | ||
| 146 | .id = 0, | ||
| 147 | .dev = { | ||
| 148 | .platform_data = &ad7160eval_flash_data, | ||
| 149 | }, | ||
| 150 | .num_resources = 1, | ||
| 151 | .resource = &ad7160eval_flash_resource, | ||
| 152 | }; | ||
| 153 | #endif | ||
| 154 | |||
| 155 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | ||
| 156 | static struct mtd_partition partition_info[] = { | ||
| 157 | { | ||
| 158 | .name = "linux kernel(nand)", | ||
| 159 | .offset = 0, | ||
| 160 | .size = 4 * 1024 * 1024, | ||
| 161 | }, | ||
| 162 | { | ||
| 163 | .name = "file system(nand)", | ||
| 164 | .offset = MTDPART_OFS_APPEND, | ||
| 165 | .size = MTDPART_SIZ_FULL, | ||
| 166 | }, | ||
| 167 | }; | ||
| 168 | |||
| 169 | static struct bf5xx_nand_platform bf5xx_nand_platform = { | ||
| 170 | .data_width = NFC_NWIDTH_8, | ||
| 171 | .partitions = partition_info, | ||
| 172 | .nr_partitions = ARRAY_SIZE(partition_info), | ||
| 173 | .rd_dly = 3, | ||
| 174 | .wr_dly = 3, | ||
| 175 | }; | ||
| 176 | |||
| 177 | static struct resource bf5xx_nand_resources[] = { | ||
| 178 | { | ||
| 179 | .start = NFC_CTL, | ||
| 180 | .end = NFC_DATA_RD + 2, | ||
| 181 | .flags = IORESOURCE_MEM, | ||
| 182 | }, | ||
| 183 | { | ||
| 184 | .start = CH_NFC, | ||
| 185 | .end = CH_NFC, | ||
| 186 | .flags = IORESOURCE_IRQ, | ||
| 187 | }, | ||
| 188 | }; | ||
| 189 | |||
| 190 | static struct platform_device bf5xx_nand_device = { | ||
| 191 | .name = "bf5xx-nand", | ||
| 192 | .id = 0, | ||
| 193 | .num_resources = ARRAY_SIZE(bf5xx_nand_resources), | ||
| 194 | .resource = bf5xx_nand_resources, | ||
| 195 | .dev = { | ||
| 196 | .platform_data = &bf5xx_nand_platform, | ||
| 197 | }, | ||
| 198 | }; | ||
| 199 | #endif | ||
| 200 | |||
| 201 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 202 | static struct platform_device rtc_device = { | ||
| 203 | .name = "rtc-bfin", | ||
| 204 | .id = -1, | ||
| 205 | }; | ||
| 206 | #endif | ||
| 207 | |||
| 208 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
| 209 | #include <linux/bfin_mac.h> | ||
| 210 | static const unsigned short bfin_mac_peripherals[] = P_RMII0; | ||
| 211 | |||
| 212 | static struct bfin_phydev_platform_data bfin_phydev_data[] = { | ||
| 213 | { | ||
| 214 | .addr = 1, | ||
| 215 | .irq = IRQ_MAC_PHYINT, | ||
| 216 | }, | ||
| 217 | }; | ||
| 218 | |||
| 219 | static struct bfin_mii_bus_platform_data bfin_mii_bus_data = { | ||
| 220 | .phydev_number = 1, | ||
| 221 | .phydev_data = bfin_phydev_data, | ||
| 222 | .phy_mode = PHY_INTERFACE_MODE_RMII, | ||
| 223 | .mac_peripherals = bfin_mac_peripherals, | ||
| 224 | }; | ||
| 225 | |||
| 226 | static struct platform_device bfin_mii_bus = { | ||
| 227 | .name = "bfin_mii_bus", | ||
| 228 | .dev = { | ||
| 229 | .platform_data = &bfin_mii_bus_data, | ||
| 230 | } | ||
| 231 | }; | ||
| 232 | |||
| 233 | static struct platform_device bfin_mac_device = { | ||
| 234 | .name = "bfin_mac", | ||
| 235 | .dev = { | ||
| 236 | .platform_data = &bfin_mii_bus, | ||
| 237 | } | ||
| 238 | }; | ||
| 239 | #endif | ||
| 240 | |||
| 241 | |||
| 242 | #if defined(CONFIG_MTD_M25P80) \ | ||
| 243 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 244 | static struct mtd_partition bfin_spi_flash_partitions[] = { | ||
| 245 | { | ||
| 246 | .name = "bootloader(spi)", | ||
| 247 | .size = 0x00040000, | ||
| 248 | .offset = 0, | ||
| 249 | .mask_flags = MTD_CAP_ROM | ||
| 250 | }, { | ||
| 251 | .name = "linux kernel(spi)", | ||
| 252 | .size = MTDPART_SIZ_FULL, | ||
| 253 | .offset = MTDPART_OFS_APPEND, | ||
| 254 | } | ||
| 255 | }; | ||
| 256 | |||
| 257 | static struct flash_platform_data bfin_spi_flash_data = { | ||
| 258 | .name = "m25p80", | ||
| 259 | .parts = bfin_spi_flash_partitions, | ||
| 260 | .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions), | ||
| 261 | .type = "m25p16", | ||
| 262 | }; | ||
| 263 | |||
| 264 | /* SPI flash chip (m25p64) */ | ||
| 265 | static struct bfin5xx_spi_chip spi_flash_chip_info = { | ||
| 266 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
| 267 | .bits_per_word = 8, | ||
| 268 | }; | ||
| 269 | #endif | ||
| 270 | |||
| 271 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ | ||
| 272 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) | ||
| 273 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | ||
| 274 | .enable_dma = 0, | ||
| 275 | .bits_per_word = 16, | ||
| 276 | }; | ||
| 277 | #endif | ||
| 278 | |||
| 279 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) | ||
| 280 | static struct bfin5xx_spi_chip mmc_spi_chip_info = { | ||
| 281 | .enable_dma = 0, | ||
| 282 | .bits_per_word = 8, | ||
| 283 | }; | ||
| 284 | #endif | ||
| 285 | |||
| 286 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
| 287 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
| 288 | .enable_dma = 0, | ||
| 289 | .bits_per_word = 8, | ||
| 290 | }; | ||
| 291 | #endif | ||
| 292 | |||
| 293 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 294 | static struct platform_device bfin_i2s = { | ||
| 295 | .name = "bfin-i2s", | ||
| 296 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 297 | /* TODO: add platform data here */ | ||
| 298 | }; | ||
| 299 | #endif | ||
| 300 | |||
| 301 | #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) | ||
| 302 | static struct platform_device bfin_tdm = { | ||
| 303 | .name = "bfin-tdm", | ||
| 304 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 305 | /* TODO: add platform data here */ | ||
| 306 | }; | ||
| 307 | #endif | ||
| 308 | |||
| 309 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | ||
| 310 | #if defined(CONFIG_MTD_M25P80) \ | ||
| 311 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 312 | { | ||
| 313 | /* the modalias must be the same as spi device driver name */ | ||
| 314 | .modalias = "m25p80", /* Name of spi_driver for this device */ | ||
| 315 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
| 316 | .bus_num = 0, /* Framework bus number */ | ||
| 317 | .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ | ||
| 318 | .platform_data = &bfin_spi_flash_data, | ||
| 319 | .controller_data = &spi_flash_chip_info, | ||
| 320 | .mode = SPI_MODE_3, | ||
| 321 | }, | ||
| 322 | #endif | ||
| 323 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ | ||
| 324 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) | ||
| 325 | { | ||
| 326 | .modalias = "ad183x", | ||
| 327 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
| 328 | .bus_num = 0, | ||
| 329 | .chip_select = 4, | ||
| 330 | .controller_data = &ad1836_spi_chip_info, | ||
| 331 | }, | ||
| 332 | #endif | ||
| 333 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) | ||
| 334 | { | ||
| 335 | .modalias = "mmc_spi", | ||
| 336 | .max_speed_hz = 30000000, /* max spi clock (SCK) speed in HZ */ | ||
| 337 | .bus_num = 0, | ||
| 338 | .chip_select = GPIO_PH3 + MAX_CTRL_CS, | ||
| 339 | .controller_data = &mmc_spi_chip_info, | ||
| 340 | .mode = SPI_MODE_3, | ||
| 341 | }, | ||
| 342 | #endif | ||
| 343 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
| 344 | { | ||
| 345 | .modalias = "spidev", | ||
| 346 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
| 347 | .bus_num = 0, | ||
| 348 | .chip_select = 1, | ||
| 349 | .controller_data = &spidev_chip_info, | ||
| 350 | }, | ||
| 351 | #endif | ||
| 352 | }; | ||
| 353 | |||
| 354 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 355 | /* SPI controller data */ | ||
| 356 | static struct bfin5xx_spi_master bfin_spi0_info = { | ||
| 357 | .num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS, | ||
| 358 | .enable_dma = 1, /* master has the ability to do dma transfer */ | ||
| 359 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
| 360 | }; | ||
| 361 | |||
| 362 | /* SPI (0) */ | ||
| 363 | static struct resource bfin_spi0_resource[] = { | ||
| 364 | [0] = { | ||
| 365 | .start = SPI0_REGBASE, | ||
| 366 | .end = SPI0_REGBASE + 0xFF, | ||
| 367 | .flags = IORESOURCE_MEM, | ||
| 368 | }, | ||
| 369 | [1] = { | ||
| 370 | .start = CH_SPI, | ||
| 371 | .end = CH_SPI, | ||
| 372 | .flags = IORESOURCE_DMA, | ||
| 373 | }, | ||
| 374 | [2] = { | ||
| 375 | .start = IRQ_SPI, | ||
| 376 | .end = IRQ_SPI, | ||
| 377 | .flags = IORESOURCE_IRQ, | ||
| 378 | }, | ||
| 379 | }; | ||
| 380 | |||
| 381 | static struct platform_device bfin_spi0_device = { | ||
| 382 | .name = "bfin-spi", | ||
| 383 | .id = 0, /* Bus number */ | ||
| 384 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | ||
| 385 | .resource = bfin_spi0_resource, | ||
| 386 | .dev = { | ||
| 387 | .platform_data = &bfin_spi0_info, /* Passed to driver */ | ||
| 388 | }, | ||
| 389 | }; | ||
| 390 | #endif /* spi master and devices */ | ||
| 391 | |||
| 392 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 393 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 394 | static struct resource bfin_uart0_resources[] = { | ||
| 395 | { | ||
| 396 | .start = UART0_THR, | ||
| 397 | .end = UART0_GCTL+2, | ||
| 398 | .flags = IORESOURCE_MEM, | ||
| 399 | }, | ||
| 400 | { | ||
| 401 | .start = IRQ_UART0_RX, | ||
| 402 | .end = IRQ_UART0_RX+1, | ||
| 403 | .flags = IORESOURCE_IRQ, | ||
| 404 | }, | ||
| 405 | { | ||
| 406 | .start = IRQ_UART0_ERROR, | ||
| 407 | .end = IRQ_UART0_ERROR, | ||
| 408 | .flags = IORESOURCE_IRQ, | ||
| 409 | }, | ||
| 410 | { | ||
| 411 | .start = CH_UART0_TX, | ||
| 412 | .end = CH_UART0_TX, | ||
| 413 | .flags = IORESOURCE_DMA, | ||
| 414 | }, | ||
| 415 | { | ||
| 416 | .start = CH_UART0_RX, | ||
| 417 | .end = CH_UART0_RX, | ||
| 418 | .flags = IORESOURCE_DMA, | ||
| 419 | }, | ||
| 420 | }; | ||
| 421 | |||
| 422 | unsigned short bfin_uart0_peripherals[] = { | ||
| 423 | P_UART0_TX, P_UART0_RX, 0 | ||
| 424 | }; | ||
| 425 | |||
| 426 | static struct platform_device bfin_uart0_device = { | ||
| 427 | .name = "bfin-uart", | ||
| 428 | .id = 0, | ||
| 429 | .num_resources = ARRAY_SIZE(bfin_uart0_resources), | ||
| 430 | .resource = bfin_uart0_resources, | ||
| 431 | .dev = { | ||
| 432 | .platform_data = &bfin_uart0_peripherals, /* Passed to driver */ | ||
| 433 | }, | ||
| 434 | }; | ||
| 435 | #endif | ||
| 436 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 437 | static struct resource bfin_uart1_resources[] = { | ||
| 438 | { | ||
| 439 | .start = UART1_THR, | ||
| 440 | .end = UART1_GCTL+2, | ||
| 441 | .flags = IORESOURCE_MEM, | ||
| 442 | }, | ||
| 443 | { | ||
| 444 | .start = IRQ_UART1_RX, | ||
| 445 | .end = IRQ_UART1_RX+1, | ||
| 446 | .flags = IORESOURCE_IRQ, | ||
| 447 | }, | ||
| 448 | { | ||
| 449 | .start = IRQ_UART1_ERROR, | ||
| 450 | .end = IRQ_UART1_ERROR, | ||
| 451 | .flags = IORESOURCE_IRQ, | ||
| 452 | }, | ||
| 453 | { | ||
| 454 | .start = CH_UART1_TX, | ||
| 455 | .end = CH_UART1_TX, | ||
| 456 | .flags = IORESOURCE_DMA, | ||
| 457 | }, | ||
| 458 | { | ||
| 459 | .start = CH_UART1_RX, | ||
| 460 | .end = CH_UART1_RX, | ||
| 461 | .flags = IORESOURCE_DMA, | ||
| 462 | }, | ||
| 463 | #ifdef CONFIG_BFIN_UART1_CTSRTS | ||
| 464 | { /* CTS pin */ | ||
| 465 | .start = GPIO_PF9, | ||
| 466 | .end = GPIO_PF9, | ||
| 467 | .flags = IORESOURCE_IO, | ||
| 468 | }, | ||
| 469 | { /* RTS pin */ | ||
| 470 | .start = GPIO_PF10, | ||
| 471 | .end = GPIO_PF10, | ||
| 472 | .flags = IORESOURCE_IO, | ||
| 473 | }, | ||
| 474 | #endif | ||
| 475 | }; | ||
| 476 | |||
| 477 | unsigned short bfin_uart1_peripherals[] = { | ||
| 478 | P_UART1_TX, P_UART1_RX, 0 | ||
| 479 | }; | ||
| 480 | |||
| 481 | static struct platform_device bfin_uart1_device = { | ||
| 482 | .name = "bfin-uart", | ||
| 483 | .id = 1, | ||
| 484 | .num_resources = ARRAY_SIZE(bfin_uart1_resources), | ||
| 485 | .resource = bfin_uart1_resources, | ||
| 486 | .dev = { | ||
| 487 | .platform_data = &bfin_uart1_peripherals, /* Passed to driver */ | ||
| 488 | }, | ||
| 489 | }; | ||
| 490 | #endif | ||
| 491 | #endif | ||
| 492 | |||
| 493 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) | ||
| 494 | #ifdef CONFIG_BFIN_SIR0 | ||
| 495 | static struct resource bfin_sir0_resources[] = { | ||
| 496 | { | ||
| 497 | .start = 0xFFC00400, | ||
| 498 | .end = 0xFFC004FF, | ||
| 499 | .flags = IORESOURCE_MEM, | ||
| 500 | }, | ||
| 501 | { | ||
| 502 | .start = IRQ_UART0_RX, | ||
| 503 | .end = IRQ_UART0_RX+1, | ||
| 504 | .flags = IORESOURCE_IRQ, | ||
| 505 | }, | ||
| 506 | { | ||
| 507 | .start = CH_UART0_RX, | ||
| 508 | .end = CH_UART0_RX+1, | ||
| 509 | .flags = IORESOURCE_DMA, | ||
| 510 | }, | ||
| 511 | }; | ||
| 512 | |||
| 513 | static struct platform_device bfin_sir0_device = { | ||
| 514 | .name = "bfin_sir", | ||
| 515 | .id = 0, | ||
| 516 | .num_resources = ARRAY_SIZE(bfin_sir0_resources), | ||
| 517 | .resource = bfin_sir0_resources, | ||
| 518 | }; | ||
| 519 | #endif | ||
| 520 | #ifdef CONFIG_BFIN_SIR1 | ||
| 521 | static struct resource bfin_sir1_resources[] = { | ||
| 522 | { | ||
| 523 | .start = 0xFFC02000, | ||
| 524 | .end = 0xFFC020FF, | ||
| 525 | .flags = IORESOURCE_MEM, | ||
| 526 | }, | ||
| 527 | { | ||
| 528 | .start = IRQ_UART1_RX, | ||
| 529 | .end = IRQ_UART1_RX+1, | ||
| 530 | .flags = IORESOURCE_IRQ, | ||
| 531 | }, | ||
| 532 | { | ||
| 533 | .start = CH_UART1_RX, | ||
| 534 | .end = CH_UART1_RX+1, | ||
| 535 | .flags = IORESOURCE_DMA, | ||
| 536 | }, | ||
| 537 | }; | ||
| 538 | |||
| 539 | static struct platform_device bfin_sir1_device = { | ||
| 540 | .name = "bfin_sir", | ||
| 541 | .id = 1, | ||
| 542 | .num_resources = ARRAY_SIZE(bfin_sir1_resources), | ||
| 543 | .resource = bfin_sir1_resources, | ||
| 544 | }; | ||
| 545 | #endif | ||
| 546 | #endif | ||
| 547 | |||
| 548 | #if defined(CONFIG_TOUCHSCREEN_AD7160) || defined(CONFIG_TOUCHSCREEN_AD7160_MODULE) | ||
| 549 | #include <linux/input/ad7160.h> | ||
| 550 | static const struct ad7160_platform_data bfin_ad7160_ts_info = { | ||
| 551 | .sensor_x_res = 854, | ||
| 552 | .sensor_y_res = 480, | ||
| 553 | .pressure = 100, | ||
| 554 | .filter_coef = 3, | ||
| 555 | .coord_pref = AD7160_ORIG_TOP_LEFT, | ||
| 556 | .first_touch_window = 5, | ||
| 557 | .move_window = 3, | ||
| 558 | .event_cabs = AD7160_EMIT_ABS_MT_TRACKING_ID | | ||
| 559 | AD7160_EMIT_ABS_MT_PRESSURE | | ||
| 560 | AD7160_TRACKING_ID_ASCENDING, | ||
| 561 | .finger_act_ctrl = 0x64, | ||
| 562 | .haptic_effect1_ctrl = AD7160_HAPTIC_SLOT_A(60) | | ||
| 563 | AD7160_HAPTIC_SLOT_A_LVL_HIGH | | ||
| 564 | AD7160_HAPTIC_SLOT_B(60) | | ||
| 565 | AD7160_HAPTIC_SLOT_B_LVL_LOW, | ||
| 566 | |||
| 567 | .haptic_effect2_ctrl = AD7160_HAPTIC_SLOT_A(20) | | ||
| 568 | AD7160_HAPTIC_SLOT_A_LVL_HIGH | | ||
| 569 | AD7160_HAPTIC_SLOT_B(80) | | ||
| 570 | AD7160_HAPTIC_SLOT_B_LVL_LOW | | ||
| 571 | AD7160_HAPTIC_SLOT_C(120) | | ||
| 572 | AD7160_HAPTIC_SLOT_C_LVL_HIGH | | ||
| 573 | AD7160_HAPTIC_SLOT_D(30) | | ||
| 574 | AD7160_HAPTIC_SLOT_D_LVL_LOW, | ||
| 575 | }; | ||
| 576 | #endif | ||
| 577 | |||
| 578 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
| 579 | static struct resource bfin_twi0_resource[] = { | ||
| 580 | [0] = { | ||
| 581 | .start = TWI0_REGBASE, | ||
| 582 | .end = TWI0_REGBASE, | ||
| 583 | .flags = IORESOURCE_MEM, | ||
| 584 | }, | ||
| 585 | [1] = { | ||
| 586 | .start = IRQ_TWI, | ||
| 587 | .end = IRQ_TWI, | ||
| 588 | .flags = IORESOURCE_IRQ, | ||
| 589 | }, | ||
| 590 | }; | ||
| 591 | |||
| 592 | static struct platform_device i2c_bfin_twi_device = { | ||
| 593 | .name = "i2c-bfin-twi", | ||
| 594 | .id = 0, | ||
| 595 | .num_resources = ARRAY_SIZE(bfin_twi0_resource), | ||
| 596 | .resource = bfin_twi0_resource, | ||
| 597 | }; | ||
| 598 | #endif | ||
| 599 | |||
| 600 | static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | ||
| 601 | #if defined(CONFIG_TOUCHSCREEN_AD7160) || defined(CONFIG_TOUCHSCREEN_AD7160_MODULE) | ||
| 602 | { | ||
| 603 | I2C_BOARD_INFO("ad7160", 0x33), | ||
| 604 | .irq = IRQ_PH1, | ||
| 605 | .platform_data = (void *)&bfin_ad7160_ts_info, | ||
| 606 | }, | ||
| 607 | #endif | ||
| 608 | }; | ||
| 609 | |||
| 610 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
| 611 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
| 612 | static struct resource bfin_sport0_uart_resources[] = { | ||
| 613 | { | ||
| 614 | .start = SPORT0_TCR1, | ||
| 615 | .end = SPORT0_MRCS3+4, | ||
| 616 | .flags = IORESOURCE_MEM, | ||
| 617 | }, | ||
| 618 | { | ||
| 619 | .start = IRQ_SPORT0_RX, | ||
| 620 | .end = IRQ_SPORT0_RX+1, | ||
| 621 | .flags = IORESOURCE_IRQ, | ||
| 622 | }, | ||
| 623 | { | ||
| 624 | .start = IRQ_SPORT0_ERROR, | ||
| 625 | .end = IRQ_SPORT0_ERROR, | ||
| 626 | .flags = IORESOURCE_IRQ, | ||
| 627 | }, | ||
| 628 | }; | ||
| 629 | |||
| 630 | unsigned short bfin_sport0_peripherals[] = { | ||
| 631 | P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS, | ||
| 632 | P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0 | ||
| 633 | }; | ||
| 634 | |||
| 635 | static struct platform_device bfin_sport0_uart_device = { | ||
| 636 | .name = "bfin-sport-uart", | ||
| 637 | .id = 0, | ||
| 638 | .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources), | ||
| 639 | .resource = bfin_sport0_uart_resources, | ||
| 640 | .dev = { | ||
| 641 | .platform_data = &bfin_sport0_peripherals, /* Passed to driver */ | ||
| 642 | }, | ||
| 643 | }; | ||
| 644 | #endif | ||
| 645 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
| 646 | static struct resource bfin_sport1_uart_resources[] = { | ||
| 647 | { | ||
| 648 | .start = SPORT1_TCR1, | ||
| 649 | .end = SPORT1_MRCS3+4, | ||
| 650 | .flags = IORESOURCE_MEM, | ||
| 651 | }, | ||
| 652 | { | ||
| 653 | .start = IRQ_SPORT1_RX, | ||
| 654 | .end = IRQ_SPORT1_RX+1, | ||
| 655 | .flags = IORESOURCE_IRQ, | ||
| 656 | }, | ||
| 657 | { | ||
| 658 | .start = IRQ_SPORT1_ERROR, | ||
| 659 | .end = IRQ_SPORT1_ERROR, | ||
| 660 | .flags = IORESOURCE_IRQ, | ||
| 661 | }, | ||
| 662 | }; | ||
| 663 | |||
| 664 | unsigned short bfin_sport1_peripherals[] = { | ||
| 665 | P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS, | ||
| 666 | P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0 | ||
| 667 | }; | ||
| 668 | |||
| 669 | static struct platform_device bfin_sport1_uart_device = { | ||
| 670 | .name = "bfin-sport-uart", | ||
| 671 | .id = 1, | ||
| 672 | .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources), | ||
| 673 | .resource = bfin_sport1_uart_resources, | ||
| 674 | .dev = { | ||
| 675 | .platform_data = &bfin_sport1_peripherals, /* Passed to driver */ | ||
| 676 | }, | ||
| 677 | }; | ||
| 678 | #endif | ||
| 679 | #endif | ||
| 680 | |||
| 681 | #if defined(CONFIG_INPUT_BFIN_ROTARY) || defined(CONFIG_INPUT_BFIN_ROTARY_MODULE) | ||
| 682 | #include <asm/bfin_rotary.h> | ||
| 683 | |||
| 684 | static struct bfin_rotary_platform_data bfin_rotary_data = { | ||
| 685 | /*.rotary_up_key = KEY_UP,*/ | ||
| 686 | /*.rotary_down_key = KEY_DOWN,*/ | ||
| 687 | .rotary_rel_code = REL_WHEEL, | ||
| 688 | .rotary_button_key = KEY_ENTER, | ||
| 689 | .debounce = 10, /* 0..17 */ | ||
| 690 | .mode = ROT_QUAD_ENC | ROT_DEBE, | ||
| 691 | }; | ||
| 692 | |||
| 693 | static struct resource bfin_rotary_resources[] = { | ||
| 694 | { | ||
| 695 | .start = IRQ_CNT, | ||
| 696 | .end = IRQ_CNT, | ||
| 697 | .flags = IORESOURCE_IRQ, | ||
| 698 | }, | ||
| 699 | }; | ||
| 700 | |||
| 701 | static struct platform_device bfin_rotary_device = { | ||
| 702 | .name = "bfin-rotary", | ||
| 703 | .id = -1, | ||
| 704 | .num_resources = ARRAY_SIZE(bfin_rotary_resources), | ||
| 705 | .resource = bfin_rotary_resources, | ||
| 706 | .dev = { | ||
| 707 | .platform_data = &bfin_rotary_data, | ||
| 708 | }, | ||
| 709 | }; | ||
| 710 | #endif | ||
| 711 | |||
| 712 | static const unsigned int cclk_vlev_datasheet[] = { | ||
| 713 | VRPAIR(VLEV_100, 400000000), | ||
| 714 | VRPAIR(VLEV_105, 426000000), | ||
| 715 | VRPAIR(VLEV_110, 500000000), | ||
| 716 | VRPAIR(VLEV_115, 533000000), | ||
| 717 | VRPAIR(VLEV_120, 600000000), | ||
| 718 | }; | ||
| 719 | |||
| 720 | static struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = { | ||
| 721 | .tuple_tab = cclk_vlev_datasheet, | ||
| 722 | .tabsize = ARRAY_SIZE(cclk_vlev_datasheet), | ||
| 723 | .vr_settling_time = 25 /* us */, | ||
| 724 | }; | ||
| 725 | |||
| 726 | static struct platform_device bfin_dpmc = { | ||
| 727 | .name = "bfin dpmc", | ||
| 728 | .dev = { | ||
| 729 | .platform_data = &bfin_dmpc_vreg_data, | ||
| 730 | }, | ||
| 731 | }; | ||
| 732 | |||
| 733 | static struct platform_device *stamp_devices[] __initdata = { | ||
| 734 | |||
| 735 | &bfin_dpmc, | ||
| 736 | |||
| 737 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | ||
| 738 | &bf5xx_nand_device, | ||
| 739 | #endif | ||
| 740 | |||
| 741 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 742 | &rtc_device, | ||
| 743 | #endif | ||
| 744 | |||
| 745 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | ||
| 746 | &musb_device, | ||
| 747 | #endif | ||
| 748 | |||
| 749 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
| 750 | &bfin_mii_bus, | ||
| 751 | &bfin_mac_device, | ||
| 752 | #endif | ||
| 753 | |||
| 754 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 755 | &bfin_spi0_device, | ||
| 756 | #endif | ||
| 757 | |||
| 758 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 759 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 760 | &bfin_uart0_device, | ||
| 761 | #endif | ||
| 762 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 763 | &bfin_uart1_device, | ||
| 764 | #endif | ||
| 765 | #endif | ||
| 766 | |||
| 767 | #if defined(CONFIG_FB_BFIN_RA158Z) || defined(CONFIG_FB_BFIN_RA158Z_MODULE) | ||
| 768 | &bf52x_ra158z_device, | ||
| 769 | #endif | ||
| 770 | |||
| 771 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) | ||
| 772 | #ifdef CONFIG_BFIN_SIR0 | ||
| 773 | &bfin_sir0_device, | ||
| 774 | #endif | ||
| 775 | #ifdef CONFIG_BFIN_SIR1 | ||
| 776 | &bfin_sir1_device, | ||
| 777 | #endif | ||
| 778 | #endif | ||
| 779 | |||
| 780 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
| 781 | &i2c_bfin_twi_device, | ||
| 782 | #endif | ||
| 783 | |||
| 784 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
| 785 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
| 786 | &bfin_sport0_uart_device, | ||
| 787 | #endif | ||
| 788 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
| 789 | &bfin_sport1_uart_device, | ||
| 790 | #endif | ||
| 791 | #endif | ||
| 792 | |||
| 793 | #if defined(CONFIG_INPUT_BFIN_ROTARY) || defined(CONFIG_INPUT_BFIN_ROTARY_MODULE) | ||
| 794 | &bfin_rotary_device, | ||
| 795 | #endif | ||
| 796 | |||
| 797 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | ||
| 798 | &ad7160eval_flash_device, | ||
| 799 | #endif | ||
| 800 | |||
| 801 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 802 | &bfin_i2s, | ||
| 803 | #endif | ||
| 804 | |||
| 805 | #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) | ||
| 806 | &bfin_tdm, | ||
| 807 | #endif | ||
| 808 | }; | ||
| 809 | |||
| 810 | static int __init ad7160eval_init(void) | ||
| 811 | { | ||
| 812 | printk(KERN_INFO "%s(): registering device resources\n", __func__); | ||
| 813 | i2c_register_board_info(0, bfin_i2c_board_info, | ||
| 814 | ARRAY_SIZE(bfin_i2c_board_info)); | ||
| 815 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); | ||
| 816 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | ||
| 817 | return 0; | ||
| 818 | } | ||
| 819 | |||
| 820 | arch_initcall(ad7160eval_init); | ||
| 821 | |||
| 822 | static struct platform_device *ad7160eval_early_devices[] __initdata = { | ||
| 823 | #if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK) | ||
| 824 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 825 | &bfin_uart0_device, | ||
| 826 | #endif | ||
| 827 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 828 | &bfin_uart1_device, | ||
| 829 | #endif | ||
| 830 | #endif | ||
| 831 | |||
| 832 | #if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE) | ||
| 833 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
| 834 | &bfin_sport0_uart_device, | ||
| 835 | #endif | ||
| 836 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
| 837 | &bfin_sport1_uart_device, | ||
| 838 | #endif | ||
| 839 | #endif | ||
| 840 | }; | ||
| 841 | |||
| 842 | void __init native_machine_early_platform_add_devices(void) | ||
| 843 | { | ||
| 844 | printk(KERN_INFO "register early platform devices\n"); | ||
| 845 | early_platform_add_devices(ad7160eval_early_devices, | ||
| 846 | ARRAY_SIZE(ad7160eval_early_devices)); | ||
| 847 | } | ||
| 848 | |||
| 849 | void native_machine_restart(char *cmd) | ||
| 850 | { | ||
| 851 | /* workaround reboot hang when booting from SPI */ | ||
| 852 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | ||
| 853 | bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS); | ||
| 854 | } | ||
| 855 | |||
| 856 | void bfin_get_ether_addr(char *addr) | ||
| 857 | { | ||
| 858 | /* the MAC is stored in OTP memory page 0xDF */ | ||
| 859 | u32 ret; | ||
| 860 | u64 otp_mac; | ||
| 861 | u32 (*otp_read)(u32 page, u32 flags, u64 *page_content) = (void *)0xEF00001A; | ||
| 862 | |||
| 863 | ret = otp_read(0xDF, 0x00, &otp_mac); | ||
| 864 | if (!(ret & 0x1)) { | ||
| 865 | char *otp_mac_p = (char *)&otp_mac; | ||
| 866 | for (ret = 0; ret < 6; ++ret) | ||
| 867 | addr[ret] = otp_mac_p[5 - ret]; | ||
| 868 | } | ||
| 869 | } | ||
| 870 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf527/boards/cm_bf527.c b/arch/blackfin/mach-bf527/boards/cm_bf527.c index 645ba5c8077b..38037c7e125a 100644 --- a/arch/blackfin/mach-bf527/boards/cm_bf527.c +++ b/arch/blackfin/mach-bf527/boards/cm_bf527.c | |||
| @@ -342,8 +342,8 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 342 | }; | 342 | }; |
| 343 | #endif | 343 | #endif |
| 344 | 344 | ||
| 345 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 345 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 346 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 346 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 347 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 347 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 348 | .enable_dma = 0, | 348 | .enable_dma = 0, |
| 349 | .bits_per_word = 16, | 349 | .bits_per_word = 16, |
| @@ -420,13 +420,13 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 420 | }, | 420 | }, |
| 421 | #endif | 421 | #endif |
| 422 | 422 | ||
| 423 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 423 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 424 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 424 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 425 | { | 425 | { |
| 426 | .modalias = "ad1836", | 426 | .modalias = "ad183x", |
| 427 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 427 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 428 | .bus_num = 0, | 428 | .bus_num = 0, |
| 429 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 429 | .chip_select = 4, |
| 430 | .controller_data = &ad1836_spi_chip_info, | 430 | .controller_data = &ad1836_spi_chip_info, |
| 431 | }, | 431 | }, |
| 432 | #endif | 432 | #endif |
diff --git a/arch/blackfin/mach-bf527/boards/ezbrd.c b/arch/blackfin/mach-bf527/boards/ezbrd.c index c975fe88eba3..6cc64a1e78b9 100644 --- a/arch/blackfin/mach-bf527/boards/ezbrd.c +++ b/arch/blackfin/mach-bf527/boards/ezbrd.c | |||
| @@ -137,8 +137,12 @@ static struct platform_device ezbrd_flash_device = { | |||
| 137 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | 137 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) |
| 138 | static struct mtd_partition partition_info[] = { | 138 | static struct mtd_partition partition_info[] = { |
| 139 | { | 139 | { |
| 140 | .name = "linux kernel(nand)", | 140 | .name = "bootloader(nand)", |
| 141 | .offset = 0, | 141 | .offset = 0, |
| 142 | .size = 0x40000, | ||
| 143 | }, { | ||
| 144 | .name = "linux kernel(nand)", | ||
| 145 | .offset = MTDPART_OFS_APPEND, | ||
| 142 | .size = 4 * 1024 * 1024, | 146 | .size = 4 * 1024 * 1024, |
| 143 | }, | 147 | }, |
| 144 | { | 148 | { |
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c index 87b41e994ba3..07c132dc4125 100644 --- a/arch/blackfin/mach-bf527/boards/ezkit.c +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
| @@ -222,8 +222,12 @@ static struct platform_device ezkit_flash_device = { | |||
| 222 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | 222 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) |
| 223 | static struct mtd_partition partition_info[] = { | 223 | static struct mtd_partition partition_info[] = { |
| 224 | { | 224 | { |
| 225 | .name = "linux kernel(nand)", | 225 | .name = "bootloader(nand)", |
| 226 | .offset = 0, | 226 | .offset = 0, |
| 227 | .size = 0x40000, | ||
| 228 | }, { | ||
| 229 | .name = "linux kernel(nand)", | ||
| 230 | .offset = MTDPART_OFS_APPEND, | ||
| 227 | .size = 4 * 1024 * 1024, | 231 | .size = 4 * 1024 * 1024, |
| 228 | }, | 232 | }, |
| 229 | { | 233 | { |
| @@ -431,8 +435,8 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 431 | }; | 435 | }; |
| 432 | #endif | 436 | #endif |
| 433 | 437 | ||
| 434 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 438 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 435 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 439 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 436 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 440 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 437 | .enable_dma = 0, | 441 | .enable_dma = 0, |
| 438 | .bits_per_word = 16, | 442 | .bits_per_word = 16, |
| @@ -547,13 +551,13 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 547 | }, | 551 | }, |
| 548 | #endif | 552 | #endif |
| 549 | 553 | ||
| 550 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 554 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 551 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 555 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 552 | { | 556 | { |
| 553 | .modalias = "ad1836", | 557 | .modalias = "ad183x", |
| 554 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 558 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 555 | .bus_num = 0, | 559 | .bus_num = 0, |
| 556 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 560 | .chip_select = 4, |
| 557 | .controller_data = &ad1836_spi_chip_info, | 561 | .controller_data = &ad1836_spi_chip_info, |
| 558 | }, | 562 | }, |
| 559 | #endif | 563 | #endif |
| @@ -929,6 +933,11 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 929 | I2C_BOARD_INFO("ssm2602", 0x1b), | 933 | I2C_BOARD_INFO("ssm2602", 0x1b), |
| 930 | }, | 934 | }, |
| 931 | #endif | 935 | #endif |
| 936 | #if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) | ||
| 937 | { | ||
| 938 | I2C_BOARD_INFO("ad5252", 0x2f), | ||
| 939 | }, | ||
| 940 | #endif | ||
| 932 | }; | 941 | }; |
| 933 | 942 | ||
| 934 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | 943 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) |
diff --git a/arch/blackfin/mach-bf527/boards/tll6527m.c b/arch/blackfin/mach-bf527/boards/tll6527m.c new file mode 100644 index 000000000000..ae4130e97c01 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/tll6527m.c | |||
| @@ -0,0 +1,986 @@ | |||
| 1 | /* File: arch/blackfin/mach-bf527/boards/tll6527m.c | ||
| 2 | * Based on: arch/blackfin/mach-bf527/boards/ezkit.c | ||
| 3 | * Author: Ashish Gupta | ||
| 4 | * | ||
| 5 | * Copyright: 2010 - The Learning Labs Inc. | ||
| 6 | * | ||
| 7 | * Licensed under the GPL-2 or later. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #include <linux/device.h> | ||
| 11 | #include <linux/platform_device.h> | ||
| 12 | #include <linux/mtd/mtd.h> | ||
| 13 | #include <linux/mtd/partitions.h> | ||
| 14 | #include <linux/mtd/physmap.h> | ||
| 15 | #include <linux/spi/spi.h> | ||
| 16 | #include <linux/spi/flash.h> | ||
| 17 | #include <linux/i2c.h> | ||
| 18 | #include <linux/irq.h> | ||
| 19 | #include <linux/interrupt.h> | ||
| 20 | #include <linux/usb/musb.h> | ||
| 21 | #include <linux/leds.h> | ||
| 22 | #include <linux/input.h> | ||
| 23 | #include <asm/dma.h> | ||
| 24 | #include <asm/bfin5xx_spi.h> | ||
| 25 | #include <asm/reboot.h> | ||
| 26 | #include <asm/nand.h> | ||
| 27 | #include <asm/portmux.h> | ||
| 28 | #include <asm/dpmc.h> | ||
| 29 | |||
| 30 | #if defined(CONFIG_TOUCHSCREEN_AD7879) \ | ||
| 31 | || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE) | ||
| 32 | #include <linux/spi/ad7879.h> | ||
| 33 | #define LCD_BACKLIGHT_GPIO 0x40 | ||
| 34 | /* TLL6527M uses TLL7UIQ35 / ADI LCD EZ Extender. AD7879 AUX GPIO is used for | ||
| 35 | * LCD Backlight Enable | ||
| 36 | */ | ||
| 37 | #endif | ||
| 38 | |||
| 39 | /* | ||
| 40 | * Name the Board for the /proc/cpuinfo | ||
| 41 | */ | ||
| 42 | const char bfin_board_name[] = "TLL6527M"; | ||
| 43 | /* | ||
| 44 | * Driver needs to know address, irq and flag pin. | ||
| 45 | */ | ||
| 46 | |||
| 47 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | ||
| 48 | static struct resource musb_resources[] = { | ||
| 49 | [0] = { | ||
| 50 | .start = 0xffc03800, | ||
| 51 | .end = 0xffc03cff, | ||
| 52 | .flags = IORESOURCE_MEM, | ||
| 53 | }, | ||
| 54 | [1] = { /* general IRQ */ | ||
| 55 | .start = IRQ_USB_INT0, | ||
| 56 | .end = IRQ_USB_INT0, | ||
| 57 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 58 | }, | ||
| 59 | [2] = { /* DMA IRQ */ | ||
| 60 | .start = IRQ_USB_DMA, | ||
| 61 | .end = IRQ_USB_DMA, | ||
| 62 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 63 | }, | ||
| 64 | }; | ||
| 65 | |||
| 66 | static struct musb_hdrc_config musb_config = { | ||
| 67 | .multipoint = 0, | ||
| 68 | .dyn_fifo = 0, | ||
| 69 | .soft_con = 1, | ||
| 70 | .dma = 1, | ||
| 71 | .num_eps = 8, | ||
| 72 | .dma_channels = 8, | ||
| 73 | /*.gpio_vrsel = GPIO_PG13,*/ | ||
| 74 | /* Some custom boards need to be active low, just set it to "0" | ||
| 75 | * if it is the case. | ||
| 76 | */ | ||
| 77 | .gpio_vrsel_active = 1, | ||
| 78 | }; | ||
| 79 | |||
| 80 | static struct musb_hdrc_platform_data musb_plat = { | ||
| 81 | #if defined(CONFIG_USB_MUSB_OTG) | ||
| 82 | .mode = MUSB_OTG, | ||
| 83 | #elif defined(CONFIG_USB_MUSB_HDRC_HCD) | ||
| 84 | .mode = MUSB_HOST, | ||
| 85 | #elif defined(CONFIG_USB_GADGET_MUSB_HDRC) | ||
| 86 | .mode = MUSB_PERIPHERAL, | ||
| 87 | #endif | ||
| 88 | .config = &musb_config, | ||
| 89 | }; | ||
| 90 | |||
| 91 | static u64 musb_dmamask = ~(u32)0; | ||
| 92 | |||
| 93 | static struct platform_device musb_device = { | ||
| 94 | .name = "musb_hdrc", | ||
| 95 | .id = 0, | ||
| 96 | .dev = { | ||
| 97 | .dma_mask = &musb_dmamask, | ||
| 98 | .coherent_dma_mask = 0xffffffff, | ||
| 99 | .platform_data = &musb_plat, | ||
| 100 | }, | ||
| 101 | .num_resources = ARRAY_SIZE(musb_resources), | ||
| 102 | .resource = musb_resources, | ||
| 103 | }; | ||
| 104 | #endif | ||
| 105 | |||
| 106 | #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE) | ||
| 107 | #include <asm/bfin-lq035q1.h> | ||
| 108 | |||
| 109 | static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = { | ||
| 110 | .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB, | ||
| 111 | .ppi_mode = USE_RGB565_16_BIT_PPI, | ||
| 112 | .use_bl = 1, | ||
| 113 | .gpio_bl = LCD_BACKLIGHT_GPIO, | ||
| 114 | }; | ||
| 115 | |||
| 116 | static struct resource bfin_lq035q1_resources[] = { | ||
| 117 | { | ||
| 118 | .start = IRQ_PPI_ERROR, | ||
| 119 | .end = IRQ_PPI_ERROR, | ||
| 120 | .flags = IORESOURCE_IRQ, | ||
| 121 | }, | ||
| 122 | }; | ||
| 123 | |||
| 124 | static struct platform_device bfin_lq035q1_device = { | ||
| 125 | .name = "bfin-lq035q1", | ||
| 126 | .id = -1, | ||
| 127 | .num_resources = ARRAY_SIZE(bfin_lq035q1_resources), | ||
| 128 | .resource = bfin_lq035q1_resources, | ||
| 129 | .dev = { | ||
| 130 | .platform_data = &bfin_lq035q1_data, | ||
| 131 | }, | ||
| 132 | }; | ||
| 133 | #endif | ||
| 134 | |||
| 135 | #if defined(CONFIG_MTD_GPIO_ADDR) || defined(CONFIG_MTD_GPIO_ADDR_MODULE) | ||
| 136 | static struct mtd_partition tll6527m_partitions[] = { | ||
| 137 | { | ||
| 138 | .name = "bootloader(nor)", | ||
| 139 | .size = 0xA0000, | ||
| 140 | .offset = 0, | ||
| 141 | }, { | ||
| 142 | .name = "linux kernel(nor)", | ||
| 143 | .size = 0xD00000, | ||
| 144 | .offset = MTDPART_OFS_APPEND, | ||
| 145 | }, { | ||
| 146 | .name = "file system(nor)", | ||
| 147 | .size = MTDPART_SIZ_FULL, | ||
| 148 | .offset = MTDPART_OFS_APPEND, | ||
| 149 | } | ||
| 150 | }; | ||
| 151 | |||
| 152 | static struct physmap_flash_data tll6527m_flash_data = { | ||
| 153 | .width = 2, | ||
| 154 | .parts = tll6527m_partitions, | ||
| 155 | .nr_parts = ARRAY_SIZE(tll6527m_partitions), | ||
| 156 | }; | ||
| 157 | |||
| 158 | static unsigned tll6527m_flash_gpios[] = { GPIO_PG11, GPIO_PH11, GPIO_PH12 }; | ||
| 159 | |||
| 160 | static struct resource tll6527m_flash_resource[] = { | ||
| 161 | { | ||
| 162 | .name = "cfi_probe", | ||
| 163 | .start = 0x20000000, | ||
| 164 | .end = 0x201fffff, | ||
| 165 | .flags = IORESOURCE_MEM, | ||
| 166 | }, { | ||
| 167 | .start = (unsigned long)tll6527m_flash_gpios, | ||
| 168 | .end = ARRAY_SIZE(tll6527m_flash_gpios), | ||
| 169 | .flags = IORESOURCE_IRQ, | ||
| 170 | } | ||
| 171 | }; | ||
| 172 | |||
| 173 | static struct platform_device tll6527m_flash_device = { | ||
| 174 | .name = "gpio-addr-flash", | ||
| 175 | .id = 0, | ||
| 176 | .dev = { | ||
| 177 | .platform_data = &tll6527m_flash_data, | ||
| 178 | }, | ||
| 179 | .num_resources = ARRAY_SIZE(tll6527m_flash_resource), | ||
| 180 | .resource = tll6527m_flash_resource, | ||
| 181 | }; | ||
| 182 | #endif | ||
| 183 | |||
| 184 | #if defined(CONFIG_GPIO_DECODER) || defined(CONFIG_GPIO_DECODER_MODULE) | ||
| 185 | /* An SN74LVC138A 3:8 decoder chip has been used to generate 7 augmented | ||
| 186 | * outputs used as SPI CS lines for all SPI SLAVE devices on TLL6527v1-0. | ||
| 187 | * EXP_GPIO_SPISEL_BASE is the base number for the expanded outputs being | ||
| 188 | * used as SPI CS lines, this should be > MAX_BLACKFIN_GPIOS | ||
| 189 | */ | ||
| 190 | #include <linux/gpio-decoder.h> | ||
| 191 | #define EXP_GPIO_SPISEL_BASE 0x64 | ||
| 192 | static unsigned gpio_addr_inputs[] = { | ||
| 193 | GPIO_PG1, GPIO_PH9, GPIO_PH10 | ||
| 194 | }; | ||
| 195 | |||
| 196 | static struct gpio_decoder_platfrom_data spi_decoded_cs = { | ||
| 197 | .base = EXP_GPIO_SPISEL_BASE, | ||
| 198 | .input_addrs = gpio_addr_inputs, | ||
| 199 | .nr_input_addrs = ARRAY_SIZE(gpio_addr_inputs), | ||
| 200 | .default_output = 0, | ||
| 201 | /* .default_output = (1 << ARRAY_SIZE(gpio_addr_inputs)) - 1 */ | ||
| 202 | }; | ||
| 203 | |||
| 204 | static struct platform_device spi_decoded_gpio = { | ||
| 205 | .name = "gpio-decoder", | ||
| 206 | .id = 0, | ||
| 207 | .dev = { | ||
| 208 | .platform_data = &spi_decoded_cs, | ||
| 209 | }, | ||
| 210 | }; | ||
| 211 | |||
| 212 | #else | ||
| 213 | #define EXP_GPIO_SPISEL_BASE 0x0 | ||
| 214 | |||
| 215 | #endif | ||
| 216 | |||
| 217 | #if defined(CONFIG_INPUT_ADXL34X) || defined(CONFIG_INPUT_ADXL34X_MODULE) | ||
| 218 | #include <linux/input/adxl34x.h> | ||
| 219 | static const struct adxl34x_platform_data adxl345_info = { | ||
| 220 | .x_axis_offset = 0, | ||
| 221 | .y_axis_offset = 0, | ||
| 222 | .z_axis_offset = 0, | ||
| 223 | .tap_threshold = 0x31, | ||
| 224 | .tap_duration = 0x10, | ||
| 225 | .tap_latency = 0x60, | ||
| 226 | .tap_window = 0xF0, | ||
| 227 | .tap_axis_control = ADXL_TAP_X_EN | ADXL_TAP_Y_EN | ADXL_TAP_Z_EN, | ||
| 228 | .act_axis_control = 0xFF, | ||
| 229 | .activity_threshold = 5, | ||
| 230 | .inactivity_threshold = 2, | ||
| 231 | .inactivity_time = 2, | ||
| 232 | .free_fall_threshold = 0x7, | ||
| 233 | .free_fall_time = 0x20, | ||
| 234 | .data_rate = 0x8, | ||
| 235 | .data_range = ADXL_FULL_RES, | ||
| 236 | |||
| 237 | .ev_type = EV_ABS, | ||
| 238 | .ev_code_x = ABS_X, /* EV_REL */ | ||
| 239 | .ev_code_y = ABS_Y, /* EV_REL */ | ||
| 240 | .ev_code_z = ABS_Z, /* EV_REL */ | ||
| 241 | |||
| 242 | .ev_code_tap = {BTN_TOUCH, BTN_TOUCH, BTN_TOUCH}, /* EV_KEY x,y,z */ | ||
| 243 | |||
| 244 | /* .ev_code_ff = KEY_F,*/ /* EV_KEY */ | ||
| 245 | .ev_code_act_inactivity = KEY_A, /* EV_KEY */ | ||
| 246 | .use_int2 = 1, | ||
| 247 | .power_mode = ADXL_AUTO_SLEEP | ADXL_LINK, | ||
| 248 | .fifo_mode = ADXL_FIFO_STREAM, | ||
| 249 | }; | ||
| 250 | #endif | ||
| 251 | |||
| 252 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 253 | static struct platform_device rtc_device = { | ||
| 254 | .name = "rtc-bfin", | ||
| 255 | .id = -1, | ||
| 256 | }; | ||
| 257 | #endif | ||
| 258 | |||
| 259 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
| 260 | static struct platform_device bfin_mii_bus = { | ||
| 261 | .name = "bfin_mii_bus", | ||
| 262 | }; | ||
| 263 | |||
| 264 | static struct platform_device bfin_mac_device = { | ||
| 265 | .name = "bfin_mac", | ||
| 266 | .dev.platform_data = &bfin_mii_bus, | ||
| 267 | }; | ||
| 268 | #endif | ||
| 269 | |||
| 270 | #if defined(CONFIG_MTD_M25P80) \ | ||
| 271 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 272 | static struct mtd_partition bfin_spi_flash_partitions[] = { | ||
| 273 | { | ||
| 274 | .name = "bootloader(spi)", | ||
| 275 | .size = 0x00040000, | ||
| 276 | .offset = 0, | ||
| 277 | .mask_flags = MTD_CAP_ROM | ||
| 278 | }, { | ||
| 279 | .name = "linux kernel(spi)", | ||
| 280 | .size = MTDPART_SIZ_FULL, | ||
| 281 | .offset = MTDPART_OFS_APPEND, | ||
| 282 | } | ||
| 283 | }; | ||
| 284 | |||
| 285 | static struct flash_platform_data bfin_spi_flash_data = { | ||
| 286 | .name = "m25p80", | ||
| 287 | .parts = bfin_spi_flash_partitions, | ||
| 288 | .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions), | ||
| 289 | .type = "m25p16", | ||
| 290 | }; | ||
| 291 | |||
| 292 | /* SPI flash chip (m25p64) */ | ||
| 293 | static struct bfin5xx_spi_chip spi_flash_chip_info = { | ||
| 294 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
| 295 | .bits_per_word = 8, | ||
| 296 | }; | ||
| 297 | #endif | ||
| 298 | |||
| 299 | #if defined(CONFIG_BFIN_SPI_ADC) \ | ||
| 300 | || defined(CONFIG_BFIN_SPI_ADC_MODULE) | ||
| 301 | /* SPI ADC chip */ | ||
| 302 | static struct bfin5xx_spi_chip spi_adc_chip_info = { | ||
| 303 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
| 304 | /* | ||
| 305 | * tll6527m V1.0 does not support native spi slave selects | ||
| 306 | * hence DMA mode will not be useful since the ADC needs | ||
| 307 | * CS to toggle for each sample and cs_change_per_word | ||
| 308 | * seems to be removed from spi_bfin5xx.c | ||
| 309 | */ | ||
| 310 | .bits_per_word = 16, | ||
| 311 | }; | ||
| 312 | #endif | ||
| 313 | |||
| 314 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) | ||
| 315 | static struct bfin5xx_spi_chip mmc_spi_chip_info = { | ||
| 316 | .enable_dma = 0, | ||
| 317 | .bits_per_word = 8, | ||
| 318 | }; | ||
| 319 | #endif | ||
| 320 | |||
| 321 | #if defined(CONFIG_TOUCHSCREEN_AD7879) \ | ||
| 322 | || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE) | ||
| 323 | static const struct ad7879_platform_data bfin_ad7879_ts_info = { | ||
| 324 | .model = 7879, /* Model = AD7879 */ | ||
| 325 | .x_plate_ohms = 620, /* 620 Ohm from the touch datasheet */ | ||
| 326 | .pressure_max = 10000, | ||
| 327 | .pressure_min = 0, | ||
| 328 | .first_conversion_delay = 3, | ||
| 329 | /* wait 512us before do a first conversion */ | ||
| 330 | .acquisition_time = 1, /* 4us acquisition time per sample */ | ||
| 331 | .median = 2, /* do 8 measurements */ | ||
| 332 | .averaging = 1, | ||
| 333 | /* take the average of 4 middle samples */ | ||
| 334 | .pen_down_acc_interval = 255, /* 9.4 ms */ | ||
| 335 | .gpio_export = 1, /* configure AUX as GPIO output*/ | ||
| 336 | .gpio_base = LCD_BACKLIGHT_GPIO, | ||
| 337 | }; | ||
| 338 | #endif | ||
| 339 | |||
| 340 | #if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) \ | ||
| 341 | || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE) | ||
| 342 | static struct bfin5xx_spi_chip spi_ad7879_chip_info = { | ||
| 343 | .enable_dma = 0, | ||
| 344 | .bits_per_word = 16, | ||
| 345 | }; | ||
| 346 | #endif | ||
| 347 | |||
| 348 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
| 349 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
| 350 | .enable_dma = 0, | ||
| 351 | .bits_per_word = 8, | ||
| 352 | }; | ||
| 353 | #endif | ||
| 354 | |||
| 355 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 356 | static struct platform_device bfin_i2s = { | ||
| 357 | .name = "bfin-i2s", | ||
| 358 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 359 | /* TODO: add platform data here */ | ||
| 360 | }; | ||
| 361 | #endif | ||
| 362 | |||
| 363 | #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE) | ||
| 364 | static struct bfin5xx_spi_chip lq035q1_spi_chip_info = { | ||
| 365 | .enable_dma = 0, | ||
| 366 | .bits_per_word = 8, | ||
| 367 | }; | ||
| 368 | #endif | ||
| 369 | |||
| 370 | #if defined(CONFIG_GPIO_MCP23S08) || defined(CONFIG_GPIO_MCP23S08_MODULE) | ||
| 371 | static struct bfin5xx_spi_chip spi_mcp23s08_sys_chip_info = { | ||
| 372 | .enable_dma = 0, | ||
| 373 | .bits_per_word = 8, | ||
| 374 | }; | ||
| 375 | |||
| 376 | static struct bfin5xx_spi_chip spi_mcp23s08_usr_chip_info = { | ||
| 377 | .enable_dma = 0, | ||
| 378 | .bits_per_word = 8, | ||
| 379 | }; | ||
| 380 | |||
| 381 | #include <linux/spi/mcp23s08.h> | ||
| 382 | static const struct mcp23s08_platform_data bfin_mcp23s08_sys_gpio_info = { | ||
| 383 | .chip[0].is_present = true, | ||
| 384 | .base = 0x30, | ||
| 385 | }; | ||
| 386 | static const struct mcp23s08_platform_data bfin_mcp23s08_usr_gpio_info = { | ||
| 387 | .chip[2].is_present = true, | ||
| 388 | .base = 0x38, | ||
| 389 | }; | ||
| 390 | #endif | ||
| 391 | |||
| 392 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | ||
| 393 | #if defined(CONFIG_MTD_M25P80) \ | ||
| 394 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 395 | { | ||
| 396 | /* the modalias must be the same as spi device driver name */ | ||
| 397 | .modalias = "m25p80", /* Name of spi_driver for this device */ | ||
| 398 | .max_speed_hz = 25000000, | ||
| 399 | /* max spi clock (SCK) speed in HZ */ | ||
| 400 | .bus_num = 0, /* Framework bus number */ | ||
| 401 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x04 + MAX_CTRL_CS, | ||
| 402 | /* Can be connected to TLL6527M GPIO connector */ | ||
| 403 | /* Either SPI_ADC or M25P80 FLASH can be installed at a time */ | ||
| 404 | .platform_data = &bfin_spi_flash_data, | ||
| 405 | .controller_data = &spi_flash_chip_info, | ||
| 406 | .mode = SPI_MODE_3, | ||
| 407 | }, | ||
| 408 | #endif | ||
| 409 | |||
| 410 | #if defined(CONFIG_BFIN_SPI_ADC) | ||
| 411 | || defined(CONFIG_BFIN_SPI_ADC_MODULE) | ||
| 412 | { | ||
| 413 | .modalias = "bfin_spi_adc", | ||
| 414 | /* Name of spi_driver for this device */ | ||
| 415 | .max_speed_hz = 10000000, | ||
| 416 | /* max spi clock (SCK) speed in HZ */ | ||
| 417 | .bus_num = 0, /* Framework bus number */ | ||
| 418 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x04 + MAX_CTRL_CS, | ||
| 419 | /* Framework chip select. */ | ||
| 420 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 421 | .controller_data = &spi_adc_chip_info, | ||
| 422 | .mode = SPI_MODE_0, | ||
| 423 | }, | ||
| 424 | #endif | ||
| 425 | |||
| 426 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) | ||
| 427 | { | ||
| 428 | .modalias = "mmc_spi", | ||
| 429 | /* | ||
| 430 | * TLL6527M V1.0 does not support SD Card at SPI Clock > 10 MHz due to | ||
| 431 | * SPI buffer limitations | ||
| 432 | */ | ||
| 433 | .max_speed_hz = 10000000, | ||
| 434 | /* max spi clock (SCK) speed in HZ */ | ||
| 435 | .bus_num = 0, | ||
| 436 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x05 + MAX_CTRL_CS, | ||
| 437 | .controller_data = &mmc_spi_chip_info, | ||
| 438 | .mode = SPI_MODE_0, | ||
| 439 | }, | ||
| 440 | #endif | ||
| 441 | #if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) \ | ||
| 442 | || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE) | ||
| 443 | { | ||
| 444 | .modalias = "ad7879", | ||
| 445 | .platform_data = &bfin_ad7879_ts_info, | ||
| 446 | .irq = IRQ_PH14, | ||
| 447 | .max_speed_hz = 5000000, | ||
| 448 | /* max spi clock (SCK) speed in HZ */ | ||
| 449 | .bus_num = 0, | ||
| 450 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x07 + MAX_CTRL_CS, | ||
| 451 | .controller_data = &spi_ad7879_chip_info, | ||
| 452 | .mode = SPI_CPHA | SPI_CPOL, | ||
| 453 | }, | ||
| 454 | #endif | ||
| 455 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
| 456 | { | ||
| 457 | .modalias = "spidev", | ||
| 458 | .max_speed_hz = 10000000, | ||
| 459 | /* TLL6527Mv1-0 supports max spi clock (SCK) speed = 10 MHz */ | ||
| 460 | .bus_num = 0, | ||
| 461 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x03 + MAX_CTRL_CS, | ||
| 462 | .mode = SPI_CPHA | SPI_CPOL, | ||
| 463 | .controller_data = &spidev_chip_info, | ||
| 464 | }, | ||
| 465 | #endif | ||
| 466 | #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE) | ||
| 467 | { | ||
| 468 | .modalias = "bfin-lq035q1-spi", | ||
| 469 | .max_speed_hz = 20000000, | ||
| 470 | .bus_num = 0, | ||
| 471 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x06 + MAX_CTRL_CS, | ||
| 472 | .controller_data = &lq035q1_spi_chip_info, | ||
| 473 | .mode = SPI_CPHA | SPI_CPOL, | ||
| 474 | }, | ||
| 475 | #endif | ||
| 476 | #if defined(CONFIG_GPIO_MCP23S08) || defined(CONFIG_GPIO_MCP23S08_MODULE) | ||
| 477 | { | ||
| 478 | .modalias = "mcp23s08", | ||
| 479 | .platform_data = &bfin_mcp23s08_sys_gpio_info, | ||
| 480 | .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */ | ||
| 481 | .bus_num = 0, | ||
| 482 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x01 + MAX_CTRL_CS, | ||
| 483 | .controller_data = &spi_mcp23s08_sys_chip_info, | ||
| 484 | .mode = SPI_CPHA | SPI_CPOL, | ||
| 485 | }, | ||
| 486 | { | ||
| 487 | .modalias = "mcp23s08", | ||
| 488 | .platform_data = &bfin_mcp23s08_usr_gpio_info, | ||
| 489 | .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */ | ||
| 490 | .bus_num = 0, | ||
| 491 | .chip_select = EXP_GPIO_SPISEL_BASE + 0x02 + MAX_CTRL_CS, | ||
| 492 | .controller_data = &spi_mcp23s08_usr_chip_info, | ||
| 493 | .mode = SPI_CPHA | SPI_CPOL, | ||
| 494 | }, | ||
| 495 | #endif | ||
| 496 | }; | ||
| 497 | |||
| 498 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 499 | /* SPI controller data */ | ||
| 500 | static struct bfin5xx_spi_master bfin_spi0_info = { | ||
| 501 | .num_chipselect = EXP_GPIO_SPISEL_BASE + 8 + MAX_CTRL_CS, | ||
| 502 | /* EXP_GPIO_SPISEL_BASE will be > MAX_BLACKFIN_GPIOS */ | ||
| 503 | .enable_dma = 1, /* master has the ability to do dma transfer */ | ||
| 504 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
| 505 | }; | ||
| 506 | |||
| 507 | /* SPI (0) */ | ||
| 508 | static struct resource bfin_spi0_resource[] = { | ||
| 509 | [0] = { | ||
| 510 | .start = SPI0_REGBASE, | ||
| 511 | .end = SPI0_REGBASE + 0xFF, | ||
| 512 | .flags = IORESOURCE_MEM, | ||
| 513 | }, | ||
| 514 | [1] = { | ||
| 515 | .start = CH_SPI, | ||
| 516 | .end = CH_SPI, | ||
| 517 | .flags = IORESOURCE_DMA, | ||
| 518 | }, | ||
| 519 | [2] = { | ||
| 520 | .start = IRQ_SPI, | ||
| 521 | .end = IRQ_SPI, | ||
| 522 | .flags = IORESOURCE_IRQ, | ||
| 523 | }, | ||
| 524 | }; | ||
| 525 | |||
| 526 | static struct platform_device bfin_spi0_device = { | ||
| 527 | .name = "bfin-spi", | ||
| 528 | .id = 0, /* Bus number */ | ||
| 529 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | ||
| 530 | .resource = bfin_spi0_resource, | ||
| 531 | .dev = { | ||
| 532 | .platform_data = &bfin_spi0_info, /* Passed to driver */ | ||
| 533 | }, | ||
| 534 | }; | ||
| 535 | #endif /* spi master and devices */ | ||
| 536 | |||
| 537 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 538 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 539 | static struct resource bfin_uart0_resources[] = { | ||
| 540 | { | ||
| 541 | .start = UART0_THR, | ||
| 542 | .end = UART0_GCTL+2, | ||
| 543 | .flags = IORESOURCE_MEM, | ||
| 544 | }, | ||
| 545 | { | ||
| 546 | .start = IRQ_UART0_RX, | ||
| 547 | .end = IRQ_UART0_RX+1, | ||
| 548 | .flags = IORESOURCE_IRQ, | ||
| 549 | }, | ||
| 550 | { | ||
| 551 | .start = IRQ_UART0_ERROR, | ||
| 552 | .end = IRQ_UART0_ERROR, | ||
| 553 | .flags = IORESOURCE_IRQ, | ||
| 554 | }, | ||
| 555 | { | ||
| 556 | .start = CH_UART0_TX, | ||
| 557 | .end = CH_UART0_TX, | ||
| 558 | .flags = IORESOURCE_DMA, | ||
| 559 | }, | ||
| 560 | { | ||
| 561 | .start = CH_UART0_RX, | ||
| 562 | .end = CH_UART0_RX, | ||
| 563 | .flags = IORESOURCE_DMA, | ||
| 564 | }, | ||
| 565 | }; | ||
| 566 | |||
| 567 | unsigned short bfin_uart0_peripherals[] = { | ||
| 568 | P_UART0_TX, P_UART0_RX, 0 | ||
| 569 | }; | ||
| 570 | |||
| 571 | static struct platform_device bfin_uart0_device = { | ||
| 572 | .name = "bfin-uart", | ||
| 573 | .id = 0, | ||
| 574 | .num_resources = ARRAY_SIZE(bfin_uart0_resources), | ||
| 575 | .resource = bfin_uart0_resources, | ||
| 576 | .dev = { | ||
| 577 | .platform_data = &bfin_uart0_peripherals, | ||
| 578 | /* Passed to driver */ | ||
| 579 | }, | ||
| 580 | }; | ||
| 581 | #endif | ||
| 582 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 583 | static struct resource bfin_uart1_resources[] = { | ||
| 584 | { | ||
| 585 | .start = UART1_THR, | ||
| 586 | .end = UART1_GCTL+2, | ||
| 587 | .flags = IORESOURCE_MEM, | ||
| 588 | }, | ||
| 589 | { | ||
| 590 | .start = IRQ_UART1_RX, | ||
| 591 | .end = IRQ_UART1_RX+1, | ||
| 592 | .flags = IORESOURCE_IRQ, | ||
| 593 | }, | ||
| 594 | { | ||
| 595 | .start = IRQ_UART1_ERROR, | ||
| 596 | .end = IRQ_UART1_ERROR, | ||
| 597 | .flags = IORESOURCE_IRQ, | ||
| 598 | }, | ||
| 599 | { | ||
| 600 | .start = CH_UART1_TX, | ||
| 601 | .end = CH_UART1_TX, | ||
| 602 | .flags = IORESOURCE_DMA, | ||
| 603 | }, | ||
| 604 | { | ||
| 605 | .start = CH_UART1_RX, | ||
| 606 | .end = CH_UART1_RX, | ||
| 607 | .flags = IORESOURCE_DMA, | ||
| 608 | }, | ||
| 609 | #ifdef CONFIG_BFIN_UART1_CTSRTS | ||
| 610 | { /* CTS pin */ | ||
| 611 | .start = GPIO_PF9, | ||
| 612 | .end = GPIO_PF9, | ||
| 613 | .flags = IORESOURCE_IO, | ||
| 614 | }, | ||
| 615 | { /* RTS pin */ | ||
| 616 | .start = GPIO_PF10, | ||
| 617 | .end = GPIO_PF10, | ||
| 618 | .flags = IORESOURCE_IO, | ||
| 619 | }, | ||
| 620 | #endif | ||
| 621 | }; | ||
| 622 | |||
| 623 | unsigned short bfin_uart1_peripherals[] = { | ||
| 624 | P_UART1_TX, P_UART1_RX, 0 | ||
| 625 | }; | ||
| 626 | |||
| 627 | static struct platform_device bfin_uart1_device = { | ||
| 628 | .name = "bfin-uart", | ||
| 629 | .id = 1, | ||
| 630 | .num_resources = ARRAY_SIZE(bfin_uart1_resources), | ||
| 631 | .resource = bfin_uart1_resources, | ||
| 632 | .dev = { | ||
| 633 | .platform_data = &bfin_uart1_peripherals, | ||
| 634 | /* Passed to driver */ | ||
| 635 | }, | ||
| 636 | }; | ||
| 637 | #endif | ||
| 638 | #endif | ||
| 639 | |||
| 640 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) | ||
| 641 | #ifdef CONFIG_BFIN_SIR0 | ||
| 642 | static struct resource bfin_sir0_resources[] = { | ||
| 643 | { | ||
| 644 | .start = 0xFFC00400, | ||
| 645 | .end = 0xFFC004FF, | ||
| 646 | .flags = IORESOURCE_MEM, | ||
| 647 | }, | ||
| 648 | { | ||
| 649 | .start = IRQ_UART0_RX, | ||
| 650 | .end = IRQ_UART0_RX+1, | ||
| 651 | .flags = IORESOURCE_IRQ, | ||
| 652 | }, | ||
| 653 | { | ||
| 654 | .start = CH_UART0_RX, | ||
| 655 | .end = CH_UART0_RX+1, | ||
| 656 | .flags = IORESOURCE_DMA, | ||
| 657 | }, | ||
| 658 | }; | ||
| 659 | |||
| 660 | static struct platform_device bfin_sir0_device = { | ||
| 661 | .name = "bfin_sir", | ||
| 662 | .id = 0, | ||
| 663 | .num_resources = ARRAY_SIZE(bfin_sir0_resources), | ||
| 664 | .resource = bfin_sir0_resources, | ||
| 665 | }; | ||
| 666 | #endif | ||
| 667 | #ifdef CONFIG_BFIN_SIR1 | ||
| 668 | static struct resource bfin_sir1_resources[] = { | ||
| 669 | { | ||
| 670 | .start = 0xFFC02000, | ||
| 671 | .end = 0xFFC020FF, | ||
| 672 | .flags = IORESOURCE_MEM, | ||
| 673 | }, | ||
| 674 | { | ||
| 675 | .start = IRQ_UART1_RX, | ||
| 676 | .end = IRQ_UART1_RX+1, | ||
| 677 | .flags = IORESOURCE_IRQ, | ||
| 678 | }, | ||
| 679 | { | ||
| 680 | .start = CH_UART1_RX, | ||
| 681 | .end = CH_UART1_RX+1, | ||
| 682 | .flags = IORESOURCE_DMA, | ||
| 683 | }, | ||
| 684 | }; | ||
| 685 | |||
| 686 | static struct platform_device bfin_sir1_device = { | ||
| 687 | .name = "bfin_sir", | ||
| 688 | .id = 1, | ||
| 689 | .num_resources = ARRAY_SIZE(bfin_sir1_resources), | ||
| 690 | .resource = bfin_sir1_resources, | ||
| 691 | }; | ||
| 692 | #endif | ||
| 693 | #endif | ||
| 694 | |||
| 695 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
| 696 | static struct resource bfin_twi0_resource[] = { | ||
| 697 | [0] = { | ||
| 698 | .start = TWI0_REGBASE, | ||
| 699 | .end = TWI0_REGBASE, | ||
| 700 | .flags = IORESOURCE_MEM, | ||
| 701 | }, | ||
| 702 | [1] = { | ||
| 703 | .start = IRQ_TWI, | ||
| 704 | .end = IRQ_TWI, | ||
| 705 | .flags = IORESOURCE_IRQ, | ||
| 706 | }, | ||
| 707 | }; | ||
| 708 | |||
| 709 | static struct platform_device i2c_bfin_twi_device = { | ||
| 710 | .name = "i2c-bfin-twi", | ||
| 711 | .id = 0, | ||
| 712 | .num_resources = ARRAY_SIZE(bfin_twi0_resource), | ||
| 713 | .resource = bfin_twi0_resource, | ||
| 714 | }; | ||
| 715 | #endif | ||
| 716 | |||
| 717 | static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | ||
| 718 | #if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) | ||
| 719 | { | ||
| 720 | I2C_BOARD_INFO("pcf8574_lcd", 0x22), | ||
| 721 | }, | ||
| 722 | #endif | ||
| 723 | |||
| 724 | #if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE) | ||
| 725 | { | ||
| 726 | I2C_BOARD_INFO("bfin-adv7393", 0x2B), | ||
| 727 | }, | ||
| 728 | #endif | ||
| 729 | #if defined(CONFIG_TOUCHSCREEN_AD7879_I2C) \ | ||
| 730 | || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE) | ||
| 731 | { | ||
| 732 | I2C_BOARD_INFO("ad7879", 0x2C), | ||
| 733 | .irq = IRQ_PH14, | ||
| 734 | .platform_data = (void *)&bfin_ad7879_ts_info, | ||
| 735 | }, | ||
| 736 | #endif | ||
| 737 | #if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE) | ||
| 738 | { | ||
| 739 | I2C_BOARD_INFO("ssm2602", 0x1b), | ||
| 740 | }, | ||
| 741 | #endif | ||
| 742 | { | ||
| 743 | I2C_BOARD_INFO("adm1192", 0x2e), | ||
| 744 | }, | ||
| 745 | |||
| 746 | { | ||
| 747 | I2C_BOARD_INFO("ltc3576", 0x09), | ||
| 748 | }, | ||
| 749 | #if defined(CONFIG_INPUT_ADXL34X_I2C) \ | ||
| 750 | || defined(CONFIG_INPUT_ADXL34X_I2C_MODULE) | ||
| 751 | { | ||
| 752 | I2C_BOARD_INFO("adxl34x", 0x53), | ||
| 753 | .irq = IRQ_PH13, | ||
| 754 | .platform_data = (void *)&adxl345_info, | ||
| 755 | }, | ||
| 756 | #endif | ||
| 757 | }; | ||
| 758 | |||
| 759 | #if defined(CONFIG_SERIAL_BFIN_SPORT) \ | ||
| 760 | || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
| 761 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
| 762 | static struct resource bfin_sport0_uart_resources[] = { | ||
| 763 | { | ||
| 764 | .start = SPORT0_TCR1, | ||
| 765 | .end = SPORT0_MRCS3+4, | ||
| 766 | .flags = IORESOURCE_MEM, | ||
| 767 | }, | ||
| 768 | { | ||
| 769 | .start = IRQ_SPORT0_RX, | ||
| 770 | .end = IRQ_SPORT0_RX+1, | ||
| 771 | .flags = IORESOURCE_IRQ, | ||
| 772 | }, | ||
| 773 | { | ||
| 774 | .start = IRQ_SPORT0_ERROR, | ||
| 775 | .end = IRQ_SPORT0_ERROR, | ||
| 776 | .flags = IORESOURCE_IRQ, | ||
| 777 | }, | ||
| 778 | }; | ||
| 779 | |||
| 780 | unsigned short bfin_sport0_peripherals[] = { | ||
| 781 | P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS, | ||
| 782 | P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0 | ||
| 783 | }; | ||
| 784 | |||
| 785 | static struct platform_device bfin_sport0_uart_device = { | ||
| 786 | .name = "bfin-sport-uart", | ||
| 787 | .id = 0, | ||
| 788 | .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources), | ||
| 789 | .resource = bfin_sport0_uart_resources, | ||
| 790 | .dev = { | ||
| 791 | .platform_data = &bfin_sport0_peripherals, | ||
| 792 | /* Passed to driver */ | ||
| 793 | }, | ||
| 794 | }; | ||
| 795 | #endif | ||
| 796 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
| 797 | static struct resource bfin_sport1_uart_resources[] = { | ||
| 798 | { | ||
| 799 | .start = SPORT1_TCR1, | ||
| 800 | .end = SPORT1_MRCS3+4, | ||
| 801 | .flags = IORESOURCE_MEM, | ||
| 802 | }, | ||
| 803 | { | ||
| 804 | .start = IRQ_SPORT1_RX, | ||
| 805 | .end = IRQ_SPORT1_RX+1, | ||
| 806 | .flags = IORESOURCE_IRQ, | ||
| 807 | }, | ||
| 808 | { | ||
| 809 | .start = IRQ_SPORT1_ERROR, | ||
| 810 | .end = IRQ_SPORT1_ERROR, | ||
| 811 | .flags = IORESOURCE_IRQ, | ||
| 812 | }, | ||
| 813 | }; | ||
| 814 | |||
| 815 | unsigned short bfin_sport1_peripherals[] = { | ||
| 816 | P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS, | ||
| 817 | P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0 | ||
| 818 | }; | ||
| 819 | |||
| 820 | static struct platform_device bfin_sport1_uart_device = { | ||
| 821 | .name = "bfin-sport-uart", | ||
| 822 | .id = 1, | ||
| 823 | .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources), | ||
| 824 | .resource = bfin_sport1_uart_resources, | ||
| 825 | .dev = { | ||
| 826 | .platform_data = &bfin_sport1_peripherals, | ||
| 827 | /* Passed to driver */ | ||
| 828 | }, | ||
| 829 | }; | ||
| 830 | #endif | ||
| 831 | #endif | ||
| 832 | |||
| 833 | static const unsigned int cclk_vlev_datasheet[] = { | ||
| 834 | VRPAIR(VLEV_100, 400000000), | ||
| 835 | VRPAIR(VLEV_105, 426000000), | ||
| 836 | VRPAIR(VLEV_110, 500000000), | ||
| 837 | VRPAIR(VLEV_115, 533000000), | ||
| 838 | VRPAIR(VLEV_120, 600000000), | ||
| 839 | }; | ||
| 840 | |||
| 841 | static struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = { | ||
| 842 | .tuple_tab = cclk_vlev_datasheet, | ||
| 843 | .tabsize = ARRAY_SIZE(cclk_vlev_datasheet), | ||
| 844 | .vr_settling_time = 25 /* us */, | ||
| 845 | }; | ||
| 846 | |||
| 847 | static struct platform_device bfin_dpmc = { | ||
| 848 | .name = "bfin dpmc", | ||
| 849 | .dev = { | ||
| 850 | .platform_data = &bfin_dmpc_vreg_data, | ||
| 851 | }, | ||
| 852 | }; | ||
| 853 | |||
| 854 | static struct platform_device *tll6527m_devices[] __initdata = { | ||
| 855 | |||
| 856 | &bfin_dpmc, | ||
| 857 | |||
| 858 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 859 | &rtc_device, | ||
| 860 | #endif | ||
| 861 | |||
| 862 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | ||
| 863 | &musb_device, | ||
| 864 | #endif | ||
| 865 | |||
| 866 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
| 867 | &bfin_mii_bus, | ||
| 868 | &bfin_mac_device, | ||
| 869 | #endif | ||
| 870 | |||
| 871 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 872 | &bfin_spi0_device, | ||
| 873 | #endif | ||
| 874 | |||
| 875 | #if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE) | ||
| 876 | &bfin_lq035q1_device, | ||
| 877 | #endif | ||
| 878 | |||
| 879 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 880 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 881 | &bfin_uart0_device, | ||
| 882 | #endif | ||
| 883 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 884 | &bfin_uart1_device, | ||
| 885 | #endif | ||
| 886 | #endif | ||
| 887 | |||
| 888 | #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) | ||
| 889 | #ifdef CONFIG_BFIN_SIR0 | ||
| 890 | &bfin_sir0_device, | ||
| 891 | #endif | ||
| 892 | #ifdef CONFIG_BFIN_SIR1 | ||
| 893 | &bfin_sir1_device, | ||
| 894 | #endif | ||
| 895 | #endif | ||
| 896 | |||
| 897 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
| 898 | &i2c_bfin_twi_device, | ||
| 899 | #endif | ||
| 900 | |||
| 901 | #if defined(CONFIG_SERIAL_BFIN_SPORT) \ | ||
| 902 | || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
| 903 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
| 904 | &bfin_sport0_uart_device, | ||
| 905 | #endif | ||
| 906 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
| 907 | &bfin_sport1_uart_device, | ||
| 908 | #endif | ||
| 909 | #endif | ||
| 910 | |||
| 911 | #if defined(CONFIG_MTD_GPIO_ADDR) || defined(CONFIG_MTD_GPIO_ADDR_MODULE) | ||
| 912 | &tll6527m_flash_device, | ||
| 913 | #endif | ||
| 914 | |||
| 915 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 916 | &bfin_i2s, | ||
| 917 | #endif | ||
| 918 | |||
| 919 | #if defined(CONFIG_GPIO_DECODER) || defined(CONFIG_GPIO_DECODER_MODULE) | ||
| 920 | &spi_decoded_gpio, | ||
| 921 | #endif | ||
| 922 | }; | ||
| 923 | |||
| 924 | static int __init tll6527m_init(void) | ||
| 925 | { | ||
| 926 | printk(KERN_INFO "%s(): registering device resources\n", __func__); | ||
| 927 | i2c_register_board_info(0, bfin_i2c_board_info, | ||
| 928 | ARRAY_SIZE(bfin_i2c_board_info)); | ||
| 929 | platform_add_devices(tll6527m_devices, ARRAY_SIZE(tll6527m_devices)); | ||
| 930 | spi_register_board_info(bfin_spi_board_info, | ||
| 931 | ARRAY_SIZE(bfin_spi_board_info)); | ||
| 932 | return 0; | ||
| 933 | } | ||
| 934 | |||
| 935 | arch_initcall(tll6527m_init); | ||
| 936 | |||
| 937 | static struct platform_device *tll6527m_early_devices[] __initdata = { | ||
| 938 | #if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK) | ||
| 939 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
| 940 | &bfin_uart0_device, | ||
| 941 | #endif | ||
| 942 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
| 943 | &bfin_uart1_device, | ||
| 944 | #endif | ||
| 945 | #endif | ||
| 946 | |||
| 947 | #if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE) | ||
| 948 | #ifdef CONFIG_SERIAL_BFIN_SPORT0_UART | ||
| 949 | &bfin_sport0_uart_device, | ||
| 950 | #endif | ||
| 951 | #ifdef CONFIG_SERIAL_BFIN_SPORT1_UART | ||
| 952 | &bfin_sport1_uart_device, | ||
| 953 | #endif | ||
| 954 | #endif | ||
| 955 | }; | ||
| 956 | |||
| 957 | void __init native_machine_early_platform_add_devices(void) | ||
| 958 | { | ||
| 959 | printk(KERN_INFO "register early platform devices\n"); | ||
| 960 | early_platform_add_devices(tll6527m_early_devices, | ||
| 961 | ARRAY_SIZE(tll6527m_early_devices)); | ||
| 962 | } | ||
| 963 | |||
| 964 | void native_machine_restart(char *cmd) | ||
| 965 | { | ||
| 966 | /* workaround reboot hang when booting from SPI */ | ||
| 967 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | ||
| 968 | bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS); | ||
| 969 | } | ||
| 970 | |||
| 971 | void bfin_get_ether_addr(char *addr) | ||
| 972 | { | ||
| 973 | /* the MAC is stored in OTP memory page 0xDF */ | ||
| 974 | u32 ret; | ||
| 975 | u64 otp_mac; | ||
| 976 | u32 (*otp_read)(u32 page, u32 flags, | ||
| 977 | u64 *page_content) = (void *)0xEF00001A; | ||
| 978 | |||
| 979 | ret = otp_read(0xDF, 0x00, &otp_mac); | ||
| 980 | if (!(ret & 0x1)) { | ||
| 981 | char *otp_mac_p = (char *)&otp_mac; | ||
| 982 | for (ret = 0; ret < 6; ++ret) | ||
| 983 | addr[ret] = otp_mac_p[5 - ret]; | ||
| 984 | } | ||
| 985 | } | ||
| 986 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf527/include/mach/cdefBF52x_base.h b/arch/blackfin/mach-bf527/include/mach/cdefBF52x_base.h index 11fb27bc427d..3048b52bf46a 100644 --- a/arch/blackfin/mach-bf527/include/mach/cdefBF52x_base.h +++ b/arch/blackfin/mach-bf527/include/mach/cdefBF52x_base.h | |||
| @@ -279,14 +279,14 @@ | |||
| 279 | #define bfin_write_SPORT0_TX(val) bfin_write32(SPORT0_TX, val) | 279 | #define bfin_write_SPORT0_TX(val) bfin_write32(SPORT0_TX, val) |
| 280 | #define bfin_read_SPORT0_RX() bfin_read32(SPORT0_RX) | 280 | #define bfin_read_SPORT0_RX() bfin_read32(SPORT0_RX) |
| 281 | #define bfin_write_SPORT0_RX(val) bfin_write32(SPORT0_RX, val) | 281 | #define bfin_write_SPORT0_RX(val) bfin_write32(SPORT0_RX, val) |
| 282 | #define bfin_read_SPORT0_TX32() bfin_read32(SPORT0_TX32) | 282 | #define bfin_read_SPORT0_TX32() bfin_read32(SPORT0_TX) |
| 283 | #define bfin_write_SPORT0_TX32(val) bfin_write32(SPORT0_TX32, val) | 283 | #define bfin_write_SPORT0_TX32(val) bfin_write32(SPORT0_TX, val) |
| 284 | #define bfin_read_SPORT0_RX32() bfin_read32(SPORT0_RX32) | 284 | #define bfin_read_SPORT0_RX32() bfin_read32(SPORT0_RX) |
| 285 | #define bfin_write_SPORT0_RX32(val) bfin_write32(SPORT0_RX32, val) | 285 | #define bfin_write_SPORT0_RX32(val) bfin_write32(SPORT0_RX, val) |
| 286 | #define bfin_read_SPORT0_TX16() bfin_read16(SPORT0_TX16) | 286 | #define bfin_read_SPORT0_TX16() bfin_read16(SPORT0_TX) |
| 287 | #define bfin_write_SPORT0_TX16(val) bfin_write16(SPORT0_TX16, val) | 287 | #define bfin_write_SPORT0_TX16(val) bfin_write16(SPORT0_TX, val) |
| 288 | #define bfin_read_SPORT0_RX16() bfin_read16(SPORT0_RX16) | 288 | #define bfin_read_SPORT0_RX16() bfin_read16(SPORT0_RX) |
| 289 | #define bfin_write_SPORT0_RX16(val) bfin_write16(SPORT0_RX16, val) | 289 | #define bfin_write_SPORT0_RX16(val) bfin_write16(SPORT0_RX, val) |
| 290 | #define bfin_read_SPORT0_RCR1() bfin_read16(SPORT0_RCR1) | 290 | #define bfin_read_SPORT0_RCR1() bfin_read16(SPORT0_RCR1) |
| 291 | #define bfin_write_SPORT0_RCR1(val) bfin_write16(SPORT0_RCR1, val) | 291 | #define bfin_write_SPORT0_RCR1(val) bfin_write16(SPORT0_RCR1, val) |
| 292 | #define bfin_read_SPORT0_RCR2() bfin_read16(SPORT0_RCR2) | 292 | #define bfin_read_SPORT0_RCR2() bfin_read16(SPORT0_RCR2) |
| @@ -334,14 +334,14 @@ | |||
| 334 | #define bfin_write_SPORT1_TX(val) bfin_write32(SPORT1_TX, val) | 334 | #define bfin_write_SPORT1_TX(val) bfin_write32(SPORT1_TX, val) |
| 335 | #define bfin_read_SPORT1_RX() bfin_read32(SPORT1_RX) | 335 | #define bfin_read_SPORT1_RX() bfin_read32(SPORT1_RX) |
| 336 | #define bfin_write_SPORT1_RX(val) bfin_write32(SPORT1_RX, val) | 336 | #define bfin_write_SPORT1_RX(val) bfin_write32(SPORT1_RX, val) |
| 337 | #define bfin_read_SPORT1_TX32() bfin_read32(SPORT1_TX32) | 337 | #define bfin_read_SPORT1_TX32() bfin_read32(SPORT1_TX) |
| 338 | #define bfin_write_SPORT1_TX32(val) bfin_write32(SPORT1_TX32, val) | 338 | #define bfin_write_SPORT1_TX32(val) bfin_write32(SPORT1_TX, val) |
| 339 | #define bfin_read_SPORT1_RX32() bfin_read32(SPORT1_RX32) | 339 | #define bfin_read_SPORT1_RX32() bfin_read32(SPORT1_RX) |
| 340 | #define bfin_write_SPORT1_RX32(val) bfin_write32(SPORT1_RX32, val) | 340 | #define bfin_write_SPORT1_RX32(val) bfin_write32(SPORT1_RX, val) |
| 341 | #define bfin_read_SPORT1_TX16() bfin_read16(SPORT1_TX16) | 341 | #define bfin_read_SPORT1_TX16() bfin_read16(SPORT1_TX) |
| 342 | #define bfin_write_SPORT1_TX16(val) bfin_write16(SPORT1_TX16, val) | 342 | #define bfin_write_SPORT1_TX16(val) bfin_write16(SPORT1_TX, val) |
| 343 | #define bfin_read_SPORT1_RX16() bfin_read16(SPORT1_RX16) | 343 | #define bfin_read_SPORT1_RX16() bfin_read16(SPORT1_RX) |
| 344 | #define bfin_write_SPORT1_RX16(val) bfin_write16(SPORT1_RX16, val) | 344 | #define bfin_write_SPORT1_RX16(val) bfin_write16(SPORT1_RX, val) |
| 345 | #define bfin_read_SPORT1_RCR1() bfin_read16(SPORT1_RCR1) | 345 | #define bfin_read_SPORT1_RCR1() bfin_read16(SPORT1_RCR1) |
| 346 | #define bfin_write_SPORT1_RCR1(val) bfin_write16(SPORT1_RCR1, val) | 346 | #define bfin_write_SPORT1_RCR1(val) bfin_write16(SPORT1_RCR1, val) |
| 347 | #define bfin_read_SPORT1_RCR2() bfin_read16(SPORT1_RCR2) | 347 | #define bfin_read_SPORT1_RCR2() bfin_read16(SPORT1_RCR2) |
diff --git a/arch/blackfin/mach-bf527/include/mach/defBF52x_base.h b/arch/blackfin/mach-bf527/include/mach/defBF52x_base.h index 3e000756aacd..09475034c6a1 100644 --- a/arch/blackfin/mach-bf527/include/mach/defBF52x_base.h +++ b/arch/blackfin/mach-bf527/include/mach/defBF52x_base.h | |||
| @@ -749,51 +749,6 @@ | |||
| 749 | #define FFE 0x20 /* Force Framing Error On Transmit */ | 749 | #define FFE 0x20 /* Force Framing Error On Transmit */ |
| 750 | 750 | ||
| 751 | 751 | ||
| 752 | /* *********** SERIAL PERIPHERAL INTERFACE (SPI) MASKS ****************************/ | ||
| 753 | /* SPI_CTL Masks */ | ||
| 754 | #define TIMOD 0x0003 /* Transfer Initiate Mode */ | ||
| 755 | #define RDBR_CORE 0x0000 /* RDBR Read Initiates, IRQ When RDBR Full */ | ||
| 756 | #define TDBR_CORE 0x0001 /* TDBR Write Initiates, IRQ When TDBR Empty */ | ||
| 757 | #define RDBR_DMA 0x0002 /* DMA Read, DMA Until FIFO Empty */ | ||
| 758 | #define TDBR_DMA 0x0003 /* DMA Write, DMA Until FIFO Full */ | ||
| 759 | #define SZ 0x0004 /* Send Zero (When TDBR Empty, Send Zero/Last*) */ | ||
| 760 | #define GM 0x0008 /* Get More (When RDBR Full, Overwrite/Discard*) */ | ||
| 761 | #define PSSE 0x0010 /* Slave-Select Input Enable */ | ||
| 762 | #define EMISO 0x0020 /* Enable MISO As Output */ | ||
| 763 | #define SIZE 0x0100 /* Size of Words (16/8* Bits) */ | ||
| 764 | #define LSBF 0x0200 /* LSB First */ | ||
| 765 | #define CPHA 0x0400 /* Clock Phase */ | ||
| 766 | #define CPOL 0x0800 /* Clock Polarity */ | ||
| 767 | #define MSTR 0x1000 /* Master/Slave* */ | ||
| 768 | #define WOM 0x2000 /* Write Open Drain Master */ | ||
| 769 | #define SPE 0x4000 /* SPI Enable */ | ||
| 770 | |||
| 771 | /* SPI_FLG Masks */ | ||
| 772 | #define FLS1 0x0002 /* Enables SPI_FLOUT1 as SPI Slave-Select Output */ | ||
| 773 | #define FLS2 0x0004 /* Enables SPI_FLOUT2 as SPI Slave-Select Output */ | ||
| 774 | #define FLS3 0x0008 /* Enables SPI_FLOUT3 as SPI Slave-Select Output */ | ||
| 775 | #define FLS4 0x0010 /* Enables SPI_FLOUT4 as SPI Slave-Select Output */ | ||
| 776 | #define FLS5 0x0020 /* Enables SPI_FLOUT5 as SPI Slave-Select Output */ | ||
| 777 | #define FLS6 0x0040 /* Enables SPI_FLOUT6 as SPI Slave-Select Output */ | ||
| 778 | #define FLS7 0x0080 /* Enables SPI_FLOUT7 as SPI Slave-Select Output */ | ||
| 779 | #define FLG1 0xFDFF /* Activates SPI_FLOUT1 */ | ||
| 780 | #define FLG2 0xFBFF /* Activates SPI_FLOUT2 */ | ||
| 781 | #define FLG3 0xF7FF /* Activates SPI_FLOUT3 */ | ||
| 782 | #define FLG4 0xEFFF /* Activates SPI_FLOUT4 */ | ||
| 783 | #define FLG5 0xDFFF /* Activates SPI_FLOUT5 */ | ||
| 784 | #define FLG6 0xBFFF /* Activates SPI_FLOUT6 */ | ||
| 785 | #define FLG7 0x7FFF /* Activates SPI_FLOUT7 */ | ||
| 786 | |||
| 787 | /* SPI_STAT Masks */ | ||
| 788 | #define SPIF 0x0001 /* SPI Finished (Single-Word Transfer Complete) */ | ||
| 789 | #define MODF 0x0002 /* Mode Fault Error (Another Device Tried To Become Master) */ | ||
| 790 | #define TXE 0x0004 /* Transmission Error (Data Sent With No New Data In TDBR) */ | ||
| 791 | #define TXS 0x0008 /* SPI_TDBR Data Buffer Status (Full/Empty*) */ | ||
| 792 | #define RBSY 0x0010 /* Receive Error (Data Received With RDBR Full) */ | ||
| 793 | #define RXS 0x0020 /* SPI_RDBR Data Buffer Status (Full/Empty*) */ | ||
| 794 | #define TXCOL 0x0040 /* Transmit Collision Error (Corrupt Data May Have Been Sent) */ | ||
| 795 | |||
| 796 | |||
| 797 | /* **************** GENERAL PURPOSE TIMER MASKS **********************/ | 752 | /* **************** GENERAL PURPOSE TIMER MASKS **********************/ |
| 798 | /* TIMER_ENABLE Masks */ | 753 | /* TIMER_ENABLE Masks */ |
| 799 | #define TIMEN0 0x0001 /* Enable Timer 0 */ | 754 | #define TIMEN0 0x0001 /* Enable Timer 0 */ |
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c index 175371af0692..2ce7b16faee1 100644 --- a/arch/blackfin/mach-bf533/boards/H8606.c +++ b/arch/blackfin/mach-bf533/boards/H8606.c | |||
| @@ -171,7 +171,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 171 | }; | 171 | }; |
| 172 | #endif | 172 | #endif |
| 173 | 173 | ||
| 174 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 174 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 175 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 175 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 176 | .enable_dma = 0, | 176 | .enable_dma = 0, |
| 177 | .bits_per_word = 16, | 177 | .bits_per_word = 16, |
| @@ -206,12 +206,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 206 | }, | 206 | }, |
| 207 | #endif | 207 | #endif |
| 208 | 208 | ||
| 209 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 209 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 210 | { | 210 | { |
| 211 | .modalias = "ad1836", | 211 | .modalias = "ad183x", |
| 212 | .max_speed_hz = 16, | 212 | .max_speed_hz = 16, |
| 213 | .bus_num = 1, | 213 | .bus_num = 1, |
| 214 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 214 | .chip_select = 4, |
| 215 | .controller_data = &ad1836_spi_chip_info, | 215 | .controller_data = &ad1836_spi_chip_info, |
| 216 | }, | 216 | }, |
| 217 | #endif | 217 | #endif |
| @@ -347,6 +347,7 @@ static struct plat_serial8250_port serial8250_platform_data [] = { | |||
| 347 | .membase = (void *)0x20200000, | 347 | .membase = (void *)0x20200000, |
| 348 | .mapbase = 0x20200000, | 348 | .mapbase = 0x20200000, |
| 349 | .irq = IRQ_PF8, | 349 | .irq = IRQ_PF8, |
| 350 | .irqflags = IRQF_TRIGGER_HIGH, | ||
| 350 | .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, | 351 | .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, |
| 351 | .iotype = UPIO_MEM, | 352 | .iotype = UPIO_MEM, |
| 352 | .regshift = 1, | 353 | .regshift = 1, |
| @@ -355,6 +356,7 @@ static struct plat_serial8250_port serial8250_platform_data [] = { | |||
| 355 | .membase = (void *)0x20200010, | 356 | .membase = (void *)0x20200010, |
| 356 | .mapbase = 0x20200010, | 357 | .mapbase = 0x20200010, |
| 357 | .irq = IRQ_PF8, | 358 | .irq = IRQ_PF8, |
| 359 | .irqflags = IRQF_TRIGGER_HIGH, | ||
| 358 | .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, | 360 | .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, |
| 359 | .iotype = UPIO_MEM, | 361 | .iotype = UPIO_MEM, |
| 360 | .regshift = 1, | 362 | .regshift = 1, |
diff --git a/arch/blackfin/mach-bf533/boards/blackstamp.c b/arch/blackfin/mach-bf533/boards/blackstamp.c index 84a06f677dff..20c102285bef 100644 --- a/arch/blackfin/mach-bf533/boards/blackstamp.c +++ b/arch/blackfin/mach-bf533/boards/blackstamp.c | |||
| @@ -368,8 +368,8 @@ static struct platform_device bfin_device_gpiokeys = { | |||
| 368 | #include <linux/i2c-gpio.h> | 368 | #include <linux/i2c-gpio.h> |
| 369 | 369 | ||
| 370 | static struct i2c_gpio_platform_data i2c_gpio_data = { | 370 | static struct i2c_gpio_platform_data i2c_gpio_data = { |
| 371 | .sda_pin = 8, | 371 | .sda_pin = GPIO_PF8, |
| 372 | .scl_pin = 9, | 372 | .scl_pin = GPIO_PF9, |
| 373 | .sda_is_open_drain = 0, | 373 | .sda_is_open_drain = 0, |
| 374 | .scl_is_open_drain = 0, | 374 | .scl_is_open_drain = 0, |
| 375 | .udelay = 40, | 375 | .udelay = 40, |
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c index fdcde61906dc..adbe62a81e25 100644 --- a/arch/blackfin/mach-bf533/boards/cm_bf533.c +++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c | |||
| @@ -71,7 +71,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 71 | }; | 71 | }; |
| 72 | #endif | 72 | #endif |
| 73 | 73 | ||
| 74 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 74 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 75 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 75 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 76 | .enable_dma = 0, | 76 | .enable_dma = 0, |
| 77 | .bits_per_word = 16, | 77 | .bits_per_word = 16, |
| @@ -110,12 +110,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 110 | }, | 110 | }, |
| 111 | #endif | 111 | #endif |
| 112 | 112 | ||
| 113 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 113 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 114 | { | 114 | { |
| 115 | .modalias = "ad1836", | 115 | .modalias = "ad183x", |
| 116 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 116 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 117 | .bus_num = 0, | 117 | .bus_num = 0, |
| 118 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 118 | .chip_select = 4, |
| 119 | .controller_data = &ad1836_spi_chip_info, | 119 | .controller_data = &ad1836_spi_chip_info, |
| 120 | }, | 120 | }, |
| 121 | #endif | 121 | #endif |
| @@ -400,7 +400,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 400 | }, { | 400 | }, { |
| 401 | .start = IRQ_PF4, | 401 | .start = IRQ_PF4, |
| 402 | .end = IRQ_PF4, | 402 | .end = IRQ_PF4, |
| 403 | .flags = IORESOURCE_IRQ, | 403 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 404 | }, | 404 | }, |
| 405 | }; | 405 | }; |
| 406 | 406 | ||
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c index 739773cb7fc6..a1cb8e7c1010 100644 --- a/arch/blackfin/mach-bf533/boards/ezkit.c +++ b/arch/blackfin/mach-bf533/boards/ezkit.c | |||
| @@ -222,7 +222,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 222 | }; | 222 | }; |
| 223 | #endif | 223 | #endif |
| 224 | 224 | ||
| 225 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 225 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 226 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 226 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 227 | .enable_dma = 0, | 227 | .enable_dma = 0, |
| 228 | .bits_per_word = 16, | 228 | .bits_per_word = 16, |
| @@ -261,12 +261,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 261 | }, | 261 | }, |
| 262 | #endif | 262 | #endif |
| 263 | 263 | ||
| 264 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 264 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 265 | { | 265 | { |
| 266 | .modalias = "ad1836", | 266 | .modalias = "ad183x", |
| 267 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 267 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 268 | .bus_num = 0, | 268 | .bus_num = 0, |
| 269 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 269 | .chip_select = 4, |
| 270 | .controller_data = &ad1836_spi_chip_info, | 270 | .controller_data = &ad1836_spi_chip_info, |
| 271 | }, | 271 | }, |
| 272 | #endif | 272 | #endif |
| @@ -422,8 +422,8 @@ static struct platform_device bfin_device_gpiokeys = { | |||
| 422 | #include <linux/i2c-gpio.h> | 422 | #include <linux/i2c-gpio.h> |
| 423 | 423 | ||
| 424 | static struct i2c_gpio_platform_data i2c_gpio_data = { | 424 | static struct i2c_gpio_platform_data i2c_gpio_data = { |
| 425 | .sda_pin = 1, | 425 | .sda_pin = GPIO_PF1, |
| 426 | .scl_pin = 0, | 426 | .scl_pin = GPIO_PF0, |
| 427 | .sda_is_open_drain = 0, | 427 | .sda_is_open_drain = 0, |
| 428 | .scl_is_open_drain = 0, | 428 | .scl_is_open_drain = 0, |
| 429 | .udelay = 40, | 429 | .udelay = 40, |
diff --git a/arch/blackfin/mach-bf533/boards/ip0x.c b/arch/blackfin/mach-bf533/boards/ip0x.c index b8474cac6b03..5ba4b02a12eb 100644 --- a/arch/blackfin/mach-bf533/boards/ip0x.c +++ b/arch/blackfin/mach-bf533/boards/ip0x.c | |||
| @@ -232,7 +232,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 232 | },{ | 232 | },{ |
| 233 | .start = IRQ_PF11, | 233 | .start = IRQ_PF11, |
| 234 | .end = IRQ_PF11, | 234 | .end = IRQ_PF11, |
| 235 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 235 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 236 | }, | 236 | }, |
| 237 | }; | 237 | }; |
| 238 | 238 | ||
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 29c219eff2ff..b3b1cdea2703 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
| @@ -185,7 +185,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 185 | }; | 185 | }; |
| 186 | #endif | 186 | #endif |
| 187 | 187 | ||
| 188 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 188 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 189 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 189 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 190 | .enable_dma = 0, | 190 | .enable_dma = 0, |
| 191 | .bits_per_word = 16, | 191 | .bits_per_word = 16, |
| @@ -252,13 +252,15 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 252 | }, | 252 | }, |
| 253 | #endif | 253 | #endif |
| 254 | 254 | ||
| 255 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 255 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 256 | { | 256 | { |
| 257 | .modalias = "ad1836", | 257 | .modalias = "ad183x", |
| 258 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 258 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 259 | .bus_num = 0, | 259 | .bus_num = 0, |
| 260 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 260 | .chip_select = 4, |
| 261 | .platform_data = "ad1836", /* only includes chip name for the moment */ | ||
| 261 | .controller_data = &ad1836_spi_chip_info, | 262 | .controller_data = &ad1836_spi_chip_info, |
| 263 | .mode = SPI_MODE_3, | ||
| 262 | }, | 264 | }, |
| 263 | #endif | 265 | #endif |
| 264 | 266 | ||
| @@ -495,8 +497,8 @@ static struct platform_device bfin_device_gpiokeys = { | |||
| 495 | #include <linux/i2c-gpio.h> | 497 | #include <linux/i2c-gpio.h> |
| 496 | 498 | ||
| 497 | static struct i2c_gpio_platform_data i2c_gpio_data = { | 499 | static struct i2c_gpio_platform_data i2c_gpio_data = { |
| 498 | .sda_pin = 2, | 500 | .sda_pin = GPIO_PF2, |
| 499 | .scl_pin = 3, | 501 | .scl_pin = GPIO_PF3, |
| 500 | .sda_is_open_drain = 0, | 502 | .sda_is_open_drain = 0, |
| 501 | .scl_is_open_drain = 0, | 503 | .scl_is_open_drain = 0, |
| 502 | .udelay = 40, | 504 | .udelay = 40, |
| @@ -534,6 +536,11 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 534 | I2C_BOARD_INFO("bfin-adv7393", 0x2B), | 536 | I2C_BOARD_INFO("bfin-adv7393", 0x2B), |
| 535 | }, | 537 | }, |
| 536 | #endif | 538 | #endif |
| 539 | #if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) | ||
| 540 | { | ||
| 541 | I2C_BOARD_INFO("ad5252", 0x2f), | ||
| 542 | }, | ||
| 543 | #endif | ||
| 537 | }; | 544 | }; |
| 538 | 545 | ||
| 539 | static const unsigned int cclk_vlev_datasheet[] = | 546 | static const unsigned int cclk_vlev_datasheet[] = |
diff --git a/arch/blackfin/mach-bf533/include/mach/defBF532.h b/arch/blackfin/mach-bf533/include/mach/defBF532.h index 04acf1ed10f9..3adb0b44e597 100644 --- a/arch/blackfin/mach-bf533/include/mach/defBF532.h +++ b/arch/blackfin/mach-bf533/include/mach/defBF532.h | |||
| @@ -681,76 +681,6 @@ | |||
| 681 | #define PF14_P 14 | 681 | #define PF14_P 14 |
| 682 | #define PF15_P 15 | 682 | #define PF15_P 15 |
| 683 | 683 | ||
| 684 | /* *********** SERIAL PERIPHERAL INTERFACE (SPI) MASKS **************** */ | ||
| 685 | |||
| 686 | /* SPI_CTL Masks */ | ||
| 687 | #define TIMOD 0x00000003 /* Transfer initiation mode and interrupt generation */ | ||
| 688 | #define RDBR_CORE 0x0000 /* RDBR Read Initiates, IRQ When RDBR Full */ | ||
| 689 | #define TDBR_CORE 0x0001 /* TDBR Write Initiates, IRQ When TDBR Empty */ | ||
| 690 | #define RDBR_DMA 0x0002 /* DMA Read, DMA Until FIFO Empty */ | ||
| 691 | #define TDBR_DMA 0x0003 /* DMA Write, DMA Until FIFO Full */ | ||
| 692 | #define SZ 0x00000004 /* Send Zero (=0) or last (=1) word when TDBR empty. */ | ||
| 693 | #define GM 0x00000008 /* When RDBR full, get more (=1) data or discard (=0) incoming Data */ | ||
| 694 | #define PSSE 0x00000010 /* Enable (=1) Slave-Select input for Master. */ | ||
| 695 | #define EMISO 0x00000020 /* Enable (=1) MISO pin as an output. */ | ||
| 696 | #define SIZE 0x00000100 /* Word length (0 => 8 bits, 1 => 16 bits) */ | ||
| 697 | #define LSBF 0x00000200 /* Data format (0 => MSB sent/received first 1 => LSB sent/received first) */ | ||
| 698 | #define CPHA 0x00000400 /* Clock phase (0 => SPICLK starts toggling in middle of xfer, 1 => SPICLK toggles at the beginning of xfer. */ | ||
| 699 | #define CPOL 0x00000800 /* Clock polarity (0 => active-high, 1 => active-low) */ | ||
| 700 | #define MSTR 0x00001000 /* Configures SPI as master (=1) or slave (=0) */ | ||
| 701 | #define WOM 0x00002000 /* Open drain (=1) data output enable (for MOSI and MISO) */ | ||
| 702 | #define SPE 0x00004000 /* SPI module enable (=1), disable (=0) */ | ||
| 703 | |||
| 704 | /* SPI_FLG Masks */ | ||
| 705 | #define FLS1 0x00000002 /* Enables (=1) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 706 | #define FLS2 0x00000004 /* Enables (=1) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 707 | #define FLS3 0x00000008 /* Enables (=1) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 708 | #define FLS4 0x00000010 /* Enables (=1) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 709 | #define FLS5 0x00000020 /* Enables (=1) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 710 | #define FLS6 0x00000040 /* Enables (=1) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 711 | #define FLS7 0x00000080 /* Enables (=1) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 712 | #define FLG1 0x00000200 /* Activates (=0) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 713 | #define FLG2 0x00000400 /* Activates (=0) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 714 | #define FLG3 0x00000800 /* Activates (=0) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 715 | #define FLG4 0x00001000 /* Activates (=0) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 716 | #define FLG5 0x00002000 /* Activates (=0) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 717 | #define FLG6 0x00004000 /* Activates (=0) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 718 | #define FLG7 0x00008000 /* Activates (=0) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 719 | |||
| 720 | /* SPI_FLG Bit Positions */ | ||
| 721 | #define FLS1_P 0x00000001 /* Enables (=1) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 722 | #define FLS2_P 0x00000002 /* Enables (=1) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 723 | #define FLS3_P 0x00000003 /* Enables (=1) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 724 | #define FLS4_P 0x00000004 /* Enables (=1) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 725 | #define FLS5_P 0x00000005 /* Enables (=1) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 726 | #define FLS6_P 0x00000006 /* Enables (=1) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 727 | #define FLS7_P 0x00000007 /* Enables (=1) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 728 | #define FLG1_P 0x00000009 /* Activates (=0) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 729 | #define FLG2_P 0x0000000A /* Activates (=0) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 730 | #define FLG3_P 0x0000000B /* Activates (=0) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 731 | #define FLG4_P 0x0000000C /* Activates (=0) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 732 | #define FLG5_P 0x0000000D /* Activates (=0) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 733 | #define FLG6_P 0x0000000E /* Activates (=0) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 734 | #define FLG7_P 0x0000000F /* Activates (=0) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 735 | |||
| 736 | /* SPI_STAT Masks */ | ||
| 737 | #define SPIF 0x00000001 /* Set (=1) when SPI single-word transfer complete */ | ||
| 738 | #define MODF 0x00000002 /* Set (=1) in a master device when some other device tries to become master */ | ||
| 739 | #define TXE 0x00000004 /* Set (=1) when transmission occurs with no new data in SPI_TDBR */ | ||
| 740 | #define TXS 0x00000008 /* SPI_TDBR Data Buffer Status (0=Empty, 1=Full) */ | ||
| 741 | #define RBSY 0x00000010 /* Set (=1) when data is received with RDBR full */ | ||
| 742 | #define RXS 0x00000020 /* SPI_RDBR Data Buffer Status (0=Empty, 1=Full) */ | ||
| 743 | #define TXCOL 0x00000040 /* When set (=1), corrupt data may have been transmitted */ | ||
| 744 | |||
| 745 | /* SPIx_FLG Masks */ | ||
| 746 | #define FLG1E 0xFDFF /* Activates SPI_FLOUT1 */ | ||
| 747 | #define FLG2E 0xFBFF /* Activates SPI_FLOUT2 */ | ||
| 748 | #define FLG3E 0xF7FF /* Activates SPI_FLOUT3 */ | ||
| 749 | #define FLG4E 0xEFFF /* Activates SPI_FLOUT4 */ | ||
| 750 | #define FLG5E 0xDFFF /* Activates SPI_FLOUT5 */ | ||
| 751 | #define FLG6E 0xBFFF /* Activates SPI_FLOUT6 */ | ||
| 752 | #define FLG7E 0x7FFF /* Activates SPI_FLOUT7 */ | ||
| 753 | |||
| 754 | /* ********************* ASYNCHRONOUS MEMORY CONTROLLER MASKS ************* */ | 684 | /* ********************* ASYNCHRONOUS MEMORY CONTROLLER MASKS ************* */ |
| 755 | 685 | ||
| 756 | /* AMGCTL Masks */ | 686 | /* AMGCTL Masks */ |
diff --git a/arch/blackfin/mach-bf537/Kconfig b/arch/blackfin/mach-bf537/Kconfig index d81224f9d723..08b2b343ccec 100644 --- a/arch/blackfin/mach-bf537/Kconfig +++ b/arch/blackfin/mach-bf537/Kconfig | |||
| @@ -14,8 +14,8 @@ config IRQ_DMA_ERROR | |||
| 14 | int "IRQ_DMA_ERROR Generic" | 14 | int "IRQ_DMA_ERROR Generic" |
| 15 | default 7 | 15 | default 7 |
| 16 | config IRQ_ERROR | 16 | config IRQ_ERROR |
| 17 | int "IRQ_ERROR: CAN MAC SPORT0 SPORT1 SPI UART0 UART1" | 17 | int "IRQ_ERROR: PPI CAN MAC SPORT0 SPORT1 SPI UART0 UART1" |
| 18 | default 7 | 18 | default 11 |
| 19 | config IRQ_RTC | 19 | config IRQ_RTC |
| 20 | int "IRQ_RTC" | 20 | int "IRQ_RTC" |
| 21 | default 8 | 21 | default 8 |
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537e.c b/arch/blackfin/mach-bf537/boards/cm_bf537e.c index d35fc5fe4c2b..e2e7be40ef44 100644 --- a/arch/blackfin/mach-bf537/boards/cm_bf537e.c +++ b/arch/blackfin/mach-bf537/boards/cm_bf537e.c | |||
| @@ -73,7 +73,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 73 | }; | 73 | }; |
| 74 | #endif | 74 | #endif |
| 75 | 75 | ||
| 76 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 76 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 77 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 77 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 78 | .enable_dma = 0, | 78 | .enable_dma = 0, |
| 79 | .bits_per_word = 16, | 79 | .bits_per_word = 16, |
| @@ -112,12 +112,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 112 | }, | 112 | }, |
| 113 | #endif | 113 | #endif |
| 114 | 114 | ||
| 115 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 115 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 116 | { | 116 | { |
| 117 | .modalias = "ad1836", | 117 | .modalias = "ad183x", |
| 118 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 118 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 119 | .bus_num = 0, | 119 | .bus_num = 0, |
| 120 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 120 | .chip_select = 4, |
| 121 | .controller_data = &ad1836_spi_chip_info, | 121 | .controller_data = &ad1836_spi_chip_info, |
| 122 | }, | 122 | }, |
| 123 | #endif | 123 | #endif |
| @@ -229,7 +229,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 229 | }, { | 229 | }, { |
| 230 | .start = IRQ_PG15, | 230 | .start = IRQ_PG15, |
| 231 | .end = IRQ_PG15, | 231 | .end = IRQ_PG15, |
| 232 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 232 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 233 | }, | 233 | }, |
| 234 | }; | 234 | }; |
| 235 | 235 | ||
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537u.c b/arch/blackfin/mach-bf537/boards/cm_bf537u.c index d464ad5b72b2..752c833f7ca8 100644 --- a/arch/blackfin/mach-bf537/boards/cm_bf537u.c +++ b/arch/blackfin/mach-bf537/boards/cm_bf537u.c | |||
| @@ -74,7 +74,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 74 | }; | 74 | }; |
| 75 | #endif | 75 | #endif |
| 76 | 76 | ||
| 77 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 77 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 78 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 78 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 79 | .enable_dma = 0, | 79 | .enable_dma = 0, |
| 80 | .bits_per_word = 16, | 80 | .bits_per_word = 16, |
| @@ -113,12 +113,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 113 | }, | 113 | }, |
| 114 | #endif | 114 | #endif |
| 115 | 115 | ||
| 116 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 116 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 117 | { | 117 | { |
| 118 | .modalias = "ad1836", | 118 | .modalias = "ad183x", |
| 119 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 119 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 120 | .bus_num = 0, | 120 | .bus_num = 0, |
| 121 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 121 | .chip_select = 4, |
| 122 | .controller_data = &ad1836_spi_chip_info, | 122 | .controller_data = &ad1836_spi_chip_info, |
| 123 | }, | 123 | }, |
| 124 | #endif | 124 | #endif |
| @@ -230,7 +230,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 230 | }, { | 230 | }, { |
| 231 | .start = IRQ_PG15, | 231 | .start = IRQ_PG15, |
| 232 | .end = IRQ_PG15, | 232 | .end = IRQ_PG15, |
| 233 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 233 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 234 | }, | 234 | }, |
| 235 | }; | 235 | }; |
| 236 | 236 | ||
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c index 812e8f991601..6b03808800a6 100644 --- a/arch/blackfin/mach-bf537/boards/pnav10.c +++ b/arch/blackfin/mach-bf537/boards/pnav10.c | |||
| @@ -175,8 +175,8 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 175 | }; | 175 | }; |
| 176 | #endif | 176 | #endif |
| 177 | 177 | ||
| 178 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 178 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 179 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 179 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 180 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 180 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 181 | .enable_dma = 0, | 181 | .enable_dma = 0, |
| 182 | .bits_per_word = 16, | 182 | .bits_per_word = 16, |
| @@ -238,13 +238,13 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 238 | }, | 238 | }, |
| 239 | #endif | 239 | #endif |
| 240 | 240 | ||
| 241 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 241 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 242 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 242 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 243 | { | 243 | { |
| 244 | .modalias = "ad1836", | 244 | .modalias = "ad183x", |
| 245 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 245 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 246 | .bus_num = 0, | 246 | .bus_num = 0, |
| 247 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 247 | .chip_select = 4, |
| 248 | .controller_data = &ad1836_spi_chip_info, | 248 | .controller_data = &ad1836_spi_chip_info, |
| 249 | }, | 249 | }, |
| 250 | #endif | 250 | #endif |
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index 68a27bccc7d4..c9e0e85629bf 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
| @@ -35,12 +35,10 @@ | |||
| 35 | #include <asm/reboot.h> | 35 | #include <asm/reboot.h> |
| 36 | #include <asm/portmux.h> | 36 | #include <asm/portmux.h> |
| 37 | #include <asm/dpmc.h> | 37 | #include <asm/dpmc.h> |
| 38 | #ifdef CONFIG_REGULATOR_ADP_SWITCH | 38 | #ifdef CONFIG_REGULATOR_FIXED_VOLTAGE |
| 39 | #include <linux/regulator/adp_switch.h> | 39 | #include <linux/regulator/fixed.h> |
| 40 | #endif | ||
| 41 | #ifdef CONFIG_REGULATOR_AD5398 | ||
| 42 | #include <linux/regulator/ad5398.h> | ||
| 43 | #endif | 40 | #endif |
| 41 | #include <linux/regulator/machine.h> | ||
| 44 | #include <linux/regulator/consumer.h> | 42 | #include <linux/regulator/consumer.h> |
| 45 | #include <linux/regulator/userspace-consumer.h> | 43 | #include <linux/regulator/userspace-consumer.h> |
| 46 | 44 | ||
| @@ -264,7 +262,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 264 | }, { | 262 | }, { |
| 265 | .start = IRQ_PF3, | 263 | .start = IRQ_PF3, |
| 266 | .end = IRQ_PF3, | 264 | .end = IRQ_PF3, |
| 267 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 265 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 268 | }, | 266 | }, |
| 269 | }; | 267 | }; |
| 270 | 268 | ||
| @@ -418,7 +416,7 @@ static struct platform_nand_data bfin_plat_nand_data = { | |||
| 418 | static struct resource bfin_plat_nand_resources = { | 416 | static struct resource bfin_plat_nand_resources = { |
| 419 | .start = 0x20212000, | 417 | .start = 0x20212000, |
| 420 | .end = 0x20212000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)), | 418 | .end = 0x20212000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)), |
| 421 | .flags = IORESOURCE_IO, | 419 | .flags = IORESOURCE_MEM, |
| 422 | }; | 420 | }; |
| 423 | 421 | ||
| 424 | static struct platform_device bfin_async_nand_device = { | 422 | static struct platform_device bfin_async_nand_device = { |
| @@ -545,6 +543,14 @@ static struct bfin5xx_spi_chip ad1938_spi_chip_info = { | |||
| 545 | }; | 543 | }; |
| 546 | #endif | 544 | #endif |
| 547 | 545 | ||
| 546 | #if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) \ | ||
| 547 | || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE) | ||
| 548 | static struct bfin5xx_spi_chip adav801_spi_chip_info = { | ||
| 549 | .enable_dma = 0, | ||
| 550 | .bits_per_word = 8, | ||
| 551 | }; | ||
| 552 | #endif | ||
| 553 | |||
| 548 | #if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE) | 554 | #if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE) |
| 549 | #include <linux/input/ad714x.h> | 555 | #include <linux/input/ad714x.h> |
| 550 | static struct bfin5xx_spi_chip ad7147_spi_chip_info = { | 556 | static struct bfin5xx_spi_chip ad7147_spi_chip_info = { |
| @@ -693,6 +699,65 @@ static struct bfin5xx_spi_chip ad2s1210_spi_chip_info = { | |||
| 693 | }; | 699 | }; |
| 694 | #endif | 700 | #endif |
| 695 | 701 | ||
| 702 | #if defined(CONFIG_AD7314) || defined(CONFIG_AD7314_MODULE) | ||
| 703 | static struct bfin5xx_spi_chip ad7314_spi_chip_info = { | ||
| 704 | .enable_dma = 0, | ||
| 705 | .bits_per_word = 16, | ||
| 706 | }; | ||
| 707 | #endif | ||
| 708 | |||
| 709 | #if defined(CONFIG_AD7816) || defined(CONFIG_AD7816_MODULE) | ||
| 710 | static unsigned short ad7816_platform_data[] = { | ||
| 711 | GPIO_PF4, /* rdwr_pin */ | ||
| 712 | GPIO_PF5, /* convert_pin */ | ||
| 713 | GPIO_PF7, /* busy_pin */ | ||
| 714 | 0, | ||
| 715 | }; | ||
| 716 | |||
| 717 | static struct bfin5xx_spi_chip ad7816_spi_chip_info = { | ||
| 718 | .enable_dma = 0, | ||
| 719 | .bits_per_word = 8, | ||
| 720 | }; | ||
| 721 | #endif | ||
| 722 | |||
| 723 | #if defined(CONFIG_ADT7310) || defined(CONFIG_ADT7310_MODULE) | ||
| 724 | static unsigned long adt7310_platform_data[3] = { | ||
| 725 | /* INT bound temperature alarm event. line 1 */ | ||
| 726 | IRQ_PG4, IRQF_TRIGGER_LOW, | ||
| 727 | /* CT bound temperature alarm event irq_flags. line 0 */ | ||
| 728 | IRQF_TRIGGER_LOW, | ||
| 729 | }; | ||
| 730 | |||
| 731 | static struct bfin5xx_spi_chip adt7310_spi_chip_info = { | ||
| 732 | .enable_dma = 0, | ||
| 733 | .bits_per_word = 8, | ||
| 734 | }; | ||
| 735 | #endif | ||
| 736 | |||
| 737 | #if defined(CONFIG_AD7298) || defined(CONFIG_AD7298_MODULE) | ||
| 738 | static unsigned short ad7298_platform_data[] = { | ||
| 739 | GPIO_PF7, /* busy_pin */ | ||
| 740 | 0, | ||
| 741 | }; | ||
| 742 | |||
| 743 | static struct bfin5xx_spi_chip ad7298_spi_chip_info = { | ||
| 744 | .enable_dma = 0, | ||
| 745 | .bits_per_word = 16, | ||
| 746 | }; | ||
| 747 | #endif | ||
| 748 | |||
| 749 | #if defined(CONFIG_ADT7316_SPI) || defined(CONFIG_ADT7316_SPI_MODULE) | ||
| 750 | static unsigned long adt7316_spi_data[2] = { | ||
| 751 | IRQF_TRIGGER_LOW, /* interrupt flags */ | ||
| 752 | GPIO_PF7, /* ldac_pin, 0 means DAC/LDAC registers control DAC update */ | ||
| 753 | }; | ||
| 754 | |||
| 755 | static struct bfin5xx_spi_chip adt7316_spi_chip_info = { | ||
| 756 | .enable_dma = 0, | ||
| 757 | .bits_per_word = 8, | ||
| 758 | }; | ||
| 759 | #endif | ||
| 760 | |||
| 696 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) | 761 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) |
| 697 | #define MMC_SPI_CARD_DETECT_INT IRQ_PF5 | 762 | #define MMC_SPI_CARD_DETECT_INT IRQ_PF5 |
| 698 | 763 | ||
| @@ -824,14 +889,12 @@ static struct bfin5xx_spi_chip lq035q1_spi_chip_info = { | |||
| 824 | static struct bfin5xx_spi_chip enc28j60_spi_chip_info = { | 889 | static struct bfin5xx_spi_chip enc28j60_spi_chip_info = { |
| 825 | .enable_dma = 1, | 890 | .enable_dma = 1, |
| 826 | .bits_per_word = 8, | 891 | .bits_per_word = 8, |
| 827 | .cs_gpio = GPIO_PF10, | ||
| 828 | }; | 892 | }; |
| 829 | #endif | 893 | #endif |
| 830 | 894 | ||
| 831 | #if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE) | 895 | #if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE) |
| 832 | static struct bfin5xx_spi_chip adf7021_spi_chip_info = { | 896 | static struct bfin5xx_spi_chip adf7021_spi_chip_info = { |
| 833 | .bits_per_word = 16, | 897 | .bits_per_word = 16, |
| 834 | .cs_gpio = GPIO_PF10, | ||
| 835 | }; | 898 | }; |
| 836 | 899 | ||
| 837 | #include <linux/spi/adf702x.h> | 900 | #include <linux/spi/adf702x.h> |
| @@ -938,6 +1001,13 @@ static struct bfin5xx_spi_chip spi_adxl34x_chip_info = { | |||
| 938 | }; | 1001 | }; |
| 939 | #endif | 1002 | #endif |
| 940 | 1003 | ||
| 1004 | #if defined(CONFIG_AD7476) || defined(CONFIG_AD7476_MODULE) | ||
| 1005 | static struct bfin5xx_spi_chip spi_ad7476_chip_info = { | ||
| 1006 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
| 1007 | .bits_per_word = 8, | ||
| 1008 | }; | ||
| 1009 | #endif | ||
| 1010 | |||
| 941 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 1011 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
| 942 | #if defined(CONFIG_MTD_M25P80) \ | 1012 | #if defined(CONFIG_MTD_M25P80) \ |
| 943 | || defined(CONFIG_MTD_M25P80_MODULE) | 1013 | || defined(CONFIG_MTD_M25P80_MODULE) |
| @@ -982,7 +1052,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 982 | .modalias = "ad183x", | 1052 | .modalias = "ad183x", |
| 983 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 1053 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 984 | .bus_num = 0, | 1054 | .bus_num = 0, |
| 985 | .chip_select = 4,/* CONFIG_SND_BLACKFIN_SPI_PFBIT */ | 1055 | .chip_select = 4, |
| 986 | .platform_data = "ad1836", /* only includes chip name for the moment */ | 1056 | .platform_data = "ad1836", /* only includes chip name for the moment */ |
| 987 | .controller_data = &ad1836_spi_chip_info, | 1057 | .controller_data = &ad1836_spi_chip_info, |
| 988 | .mode = SPI_MODE_3, | 1058 | .mode = SPI_MODE_3, |
| @@ -1000,6 +1070,17 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1000 | }, | 1070 | }, |
| 1001 | #endif | 1071 | #endif |
| 1002 | 1072 | ||
| 1073 | #if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE) | ||
| 1074 | { | ||
| 1075 | .modalias = "adav80x", | ||
| 1076 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
| 1077 | .bus_num = 0, | ||
| 1078 | .chip_select = 1, | ||
| 1079 | .controller_data = &adav801_spi_chip_info, | ||
| 1080 | .mode = SPI_MODE_3, | ||
| 1081 | }, | ||
| 1082 | #endif | ||
| 1083 | |||
| 1003 | #if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE) | 1084 | #if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE) |
| 1004 | { | 1085 | { |
| 1005 | .modalias = "ad714x_captouch", | 1086 | .modalias = "ad714x_captouch", |
| @@ -1018,6 +1099,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1018 | .modalias = "ad2s90", | 1099 | .modalias = "ad2s90", |
| 1019 | .bus_num = 0, | 1100 | .bus_num = 0, |
| 1020 | .chip_select = 3, /* change it for your board */ | 1101 | .chip_select = 3, /* change it for your board */ |
| 1102 | .mode = SPI_MODE_3, | ||
| 1021 | .platform_data = NULL, | 1103 | .platform_data = NULL, |
| 1022 | .controller_data = &ad2s90_spi_chip_info, | 1104 | .controller_data = &ad2s90_spi_chip_info, |
| 1023 | }, | 1105 | }, |
| @@ -1044,6 +1126,67 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1044 | }, | 1126 | }, |
| 1045 | #endif | 1127 | #endif |
| 1046 | 1128 | ||
| 1129 | #if defined(CONFIG_AD7314) || defined(CONFIG_AD7314_MODULE) | ||
| 1130 | { | ||
| 1131 | .modalias = "ad7314", | ||
| 1132 | .max_speed_hz = 1000000, | ||
| 1133 | .bus_num = 0, | ||
| 1134 | .chip_select = 4, /* CS, change it for your board */ | ||
| 1135 | .controller_data = &ad7314_spi_chip_info, | ||
| 1136 | .mode = SPI_MODE_1, | ||
| 1137 | }, | ||
| 1138 | #endif | ||
| 1139 | |||
| 1140 | #if defined(CONFIG_AD7816) || defined(CONFIG_AD7816_MODULE) | ||
| 1141 | { | ||
| 1142 | .modalias = "ad7818", | ||
| 1143 | .max_speed_hz = 1000000, | ||
| 1144 | .bus_num = 0, | ||
| 1145 | .chip_select = 4, /* CS, change it for your board */ | ||
| 1146 | .platform_data = ad7816_platform_data, | ||
| 1147 | .controller_data = &ad7816_spi_chip_info, | ||
| 1148 | .mode = SPI_MODE_3, | ||
| 1149 | }, | ||
| 1150 | #endif | ||
| 1151 | |||
| 1152 | #if defined(CONFIG_ADT7310) || defined(CONFIG_ADT7310_MODULE) | ||
| 1153 | { | ||
| 1154 | .modalias = "adt7310", | ||
| 1155 | .max_speed_hz = 1000000, | ||
| 1156 | .irq = IRQ_PG5, /* CT alarm event. Line 0 */ | ||
| 1157 | .bus_num = 0, | ||
| 1158 | .chip_select = 4, /* CS, change it for your board */ | ||
| 1159 | .platform_data = adt7310_platform_data, | ||
| 1160 | .controller_data = &adt7310_spi_chip_info, | ||
| 1161 | .mode = SPI_MODE_3, | ||
| 1162 | }, | ||
| 1163 | #endif | ||
| 1164 | |||
| 1165 | #if defined(CONFIG_AD7298) || defined(CONFIG_AD7298_MODULE) | ||
| 1166 | { | ||
| 1167 | .modalias = "ad7298", | ||
| 1168 | .max_speed_hz = 1000000, | ||
| 1169 | .bus_num = 0, | ||
| 1170 | .chip_select = 4, /* CS, change it for your board */ | ||
| 1171 | .platform_data = ad7298_platform_data, | ||
| 1172 | .controller_data = &ad7298_spi_chip_info, | ||
| 1173 | .mode = SPI_MODE_3, | ||
| 1174 | }, | ||
| 1175 | #endif | ||
| 1176 | |||
| 1177 | #if defined(CONFIG_ADT7316_SPI) || defined(CONFIG_ADT7316_SPI_MODULE) | ||
| 1178 | { | ||
| 1179 | .modalias = "adt7316", | ||
| 1180 | .max_speed_hz = 1000000, | ||
| 1181 | .irq = IRQ_PG5, /* interrupt line */ | ||
| 1182 | .bus_num = 0, | ||
| 1183 | .chip_select = 4, /* CS, change it for your board */ | ||
| 1184 | .platform_data = adt7316_spi_data, | ||
| 1185 | .controller_data = &adt7316_spi_chip_info, | ||
| 1186 | .mode = SPI_MODE_3, | ||
| 1187 | }, | ||
| 1188 | #endif | ||
| 1189 | |||
| 1047 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) | 1190 | #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) |
| 1048 | { | 1191 | { |
| 1049 | .modalias = "mmc_spi", | 1192 | .modalias = "mmc_spi", |
| @@ -1103,7 +1246,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1103 | .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */ | 1246 | .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */ |
| 1104 | .irq = IRQ_PF6, | 1247 | .irq = IRQ_PF6, |
| 1105 | .bus_num = 0, | 1248 | .bus_num = 0, |
| 1106 | .chip_select = 0, /* GPIO controlled SSEL */ | 1249 | .chip_select = GPIO_PF10 + MAX_CTRL_CS, /* GPIO controlled SSEL */ |
| 1107 | .controller_data = &enc28j60_spi_chip_info, | 1250 | .controller_data = &enc28j60_spi_chip_info, |
| 1108 | .mode = SPI_MODE_0, | 1251 | .mode = SPI_MODE_0, |
| 1109 | }, | 1252 | }, |
| @@ -1125,7 +1268,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1125 | .modalias = "adf702x", | 1268 | .modalias = "adf702x", |
| 1126 | .max_speed_hz = 16000000, /* max spi clock (SCK) speed in HZ */ | 1269 | .max_speed_hz = 16000000, /* max spi clock (SCK) speed in HZ */ |
| 1127 | .bus_num = 0, | 1270 | .bus_num = 0, |
| 1128 | .chip_select = 0, /* GPIO controlled SSEL */ | 1271 | .chip_select = GPIO_PF10 + MAX_CTRL_CS, /* GPIO controlled SSEL */ |
| 1129 | .controller_data = &adf7021_spi_chip_info, | 1272 | .controller_data = &adf7021_spi_chip_info, |
| 1130 | .platform_data = &adf7021_platform_data, | 1273 | .platform_data = &adf7021_platform_data, |
| 1131 | .mode = SPI_MODE_0, | 1274 | .mode = SPI_MODE_0, |
| @@ -1143,12 +1286,239 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1143 | .mode = SPI_MODE_0, | 1286 | .mode = SPI_MODE_0, |
| 1144 | }, | 1287 | }, |
| 1145 | #endif | 1288 | #endif |
| 1289 | #if defined(CONFIG_AD7476) \ | ||
| 1290 | || defined(CONFIG_AD7476_MODULE) | ||
| 1291 | { | ||
| 1292 | .modalias = "ad7476", /* Name of spi_driver for this device */ | ||
| 1293 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ | ||
| 1294 | .bus_num = 0, /* Framework bus number */ | ||
| 1295 | .chip_select = 1, /* Framework chip select. */ | ||
| 1296 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1297 | .controller_data = &spi_ad7476_chip_info, | ||
| 1298 | .mode = SPI_MODE_3, | ||
| 1299 | }, | ||
| 1300 | #endif | ||
| 1301 | #if defined(CONFIG_ADE7753) \ | ||
| 1302 | || defined(CONFIG_ADE7753_MODULE) | ||
| 1303 | { | ||
| 1304 | .modalias = "ade7753", | ||
| 1305 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1306 | .bus_num = 0, | ||
| 1307 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1308 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1309 | .mode = SPI_MODE_1, | ||
| 1310 | }, | ||
| 1311 | #endif | ||
| 1312 | #if defined(CONFIG_ADE7754) \ | ||
| 1313 | || defined(CONFIG_ADE7754_MODULE) | ||
| 1314 | { | ||
| 1315 | .modalias = "ade7754", | ||
| 1316 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1317 | .bus_num = 0, | ||
| 1318 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1319 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1320 | .mode = SPI_MODE_1, | ||
| 1321 | }, | ||
| 1322 | #endif | ||
| 1323 | #if defined(CONFIG_ADE7758) \ | ||
| 1324 | || defined(CONFIG_ADE7758_MODULE) | ||
| 1325 | { | ||
| 1326 | .modalias = "ade7758", | ||
| 1327 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1328 | .bus_num = 0, | ||
| 1329 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1330 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1331 | .mode = SPI_MODE_1, | ||
| 1332 | }, | ||
| 1333 | #endif | ||
| 1334 | #if defined(CONFIG_ADE7759) \ | ||
| 1335 | || defined(CONFIG_ADE7759_MODULE) | ||
| 1336 | { | ||
| 1337 | .modalias = "ade7759", | ||
| 1338 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1339 | .bus_num = 0, | ||
| 1340 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1341 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1342 | .mode = SPI_MODE_1, | ||
| 1343 | }, | ||
| 1344 | #endif | ||
| 1345 | #if defined(CONFIG_ADE7854_SPI) \ | ||
| 1346 | || defined(CONFIG_ADE7854_SPI_MODULE) | ||
| 1347 | { | ||
| 1348 | .modalias = "ade7854", | ||
| 1349 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1350 | .bus_num = 0, | ||
| 1351 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1352 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1353 | .mode = SPI_MODE_3, | ||
| 1354 | }, | ||
| 1355 | #endif | ||
| 1356 | #if defined(CONFIG_ADIS16060) \ | ||
| 1357 | || defined(CONFIG_ADIS16060_MODULE) | ||
| 1358 | { | ||
| 1359 | .modalias = "adis16060_r", | ||
| 1360 | .max_speed_hz = 2900000, /* max spi clock (SCK) speed in HZ */ | ||
| 1361 | .bus_num = 0, | ||
| 1362 | .chip_select = MAX_CTRL_CS + 1, /* CS for read, change it for your board */ | ||
| 1363 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1364 | .mode = SPI_MODE_0, | ||
| 1365 | }, | ||
| 1366 | { | ||
| 1367 | .modalias = "adis16060_w", | ||
| 1368 | .max_speed_hz = 2900000, /* max spi clock (SCK) speed in HZ */ | ||
| 1369 | .bus_num = 0, | ||
| 1370 | .chip_select = 2, /* CS for write, change it for your board */ | ||
| 1371 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1372 | .mode = SPI_MODE_1, | ||
| 1373 | }, | ||
| 1374 | #endif | ||
| 1375 | #if defined(CONFIG_ADIS16130) \ | ||
| 1376 | || defined(CONFIG_ADIS16130_MODULE) | ||
| 1377 | { | ||
| 1378 | .modalias = "adis16130", | ||
| 1379 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1380 | .bus_num = 0, | ||
| 1381 | .chip_select = 1, /* CS for read, change it for your board */ | ||
| 1382 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1383 | .mode = SPI_MODE_3, | ||
| 1384 | }, | ||
| 1385 | #endif | ||
| 1386 | #if defined(CONFIG_ADIS16201) \ | ||
| 1387 | || defined(CONFIG_ADIS16201_MODULE) | ||
| 1388 | { | ||
| 1389 | .modalias = "adis16201", | ||
| 1390 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1391 | .bus_num = 0, | ||
| 1392 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1393 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1394 | .mode = SPI_MODE_3, | ||
| 1395 | .irq = IRQ_PF4, | ||
| 1396 | }, | ||
| 1397 | #endif | ||
| 1398 | #if defined(CONFIG_ADIS16203) \ | ||
| 1399 | || defined(CONFIG_ADIS16203_MODULE) | ||
| 1400 | { | ||
| 1401 | .modalias = "adis16203", | ||
| 1402 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1403 | .bus_num = 0, | ||
| 1404 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1405 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1406 | .mode = SPI_MODE_3, | ||
| 1407 | .irq = IRQ_PF4, | ||
| 1408 | }, | ||
| 1409 | #endif | ||
| 1410 | #if defined(CONFIG_ADIS16204) \ | ||
| 1411 | || defined(CONFIG_ADIS16204_MODULE) | ||
| 1412 | { | ||
| 1413 | .modalias = "adis16204", | ||
| 1414 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1415 | .bus_num = 0, | ||
| 1416 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1417 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1418 | .mode = SPI_MODE_3, | ||
| 1419 | .irq = IRQ_PF4, | ||
| 1420 | }, | ||
| 1421 | #endif | ||
| 1422 | #if defined(CONFIG_ADIS16209) \ | ||
| 1423 | || defined(CONFIG_ADIS16209_MODULE) | ||
| 1424 | { | ||
| 1425 | .modalias = "adis16209", | ||
| 1426 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1427 | .bus_num = 0, | ||
| 1428 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1429 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1430 | .mode = SPI_MODE_3, | ||
| 1431 | .irq = IRQ_PF4, | ||
| 1432 | }, | ||
| 1433 | #endif | ||
| 1434 | #if defined(CONFIG_ADIS16220) \ | ||
| 1435 | || defined(CONFIG_ADIS16220_MODULE) | ||
| 1436 | { | ||
| 1437 | .modalias = "adis16220", | ||
| 1438 | .max_speed_hz = 2000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1439 | .bus_num = 0, | ||
| 1440 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1441 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1442 | .mode = SPI_MODE_3, | ||
| 1443 | .irq = IRQ_PF4, | ||
| 1444 | }, | ||
| 1445 | #endif | ||
| 1446 | #if defined(CONFIG_ADIS16240) \ | ||
| 1447 | || defined(CONFIG_ADIS16240_MODULE) | ||
| 1448 | { | ||
| 1449 | .modalias = "adis16240", | ||
| 1450 | .max_speed_hz = 1500000, /* max spi clock (SCK) speed in HZ */ | ||
| 1451 | .bus_num = 0, | ||
| 1452 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1453 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1454 | .mode = SPI_MODE_3, | ||
| 1455 | .irq = IRQ_PF4, | ||
| 1456 | }, | ||
| 1457 | #endif | ||
| 1458 | #if defined(CONFIG_ADIS16260) \ | ||
| 1459 | || defined(CONFIG_ADIS16260_MODULE) | ||
| 1460 | { | ||
| 1461 | .modalias = "adis16260", | ||
| 1462 | .max_speed_hz = 1500000, /* max spi clock (SCK) speed in HZ */ | ||
| 1463 | .bus_num = 0, | ||
| 1464 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1465 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1466 | .mode = SPI_MODE_3, | ||
| 1467 | .irq = IRQ_PF4, | ||
| 1468 | }, | ||
| 1469 | #endif | ||
| 1470 | #if defined(CONFIG_ADIS16261) \ | ||
| 1471 | || defined(CONFIG_ADIS16261_MODULE) | ||
| 1472 | { | ||
| 1473 | .modalias = "adis16261", | ||
| 1474 | .max_speed_hz = 2500000, /* max spi clock (SCK) speed in HZ */ | ||
| 1475 | .bus_num = 0, | ||
| 1476 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1477 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1478 | .mode = SPI_MODE_3, | ||
| 1479 | }, | ||
| 1480 | #endif | ||
| 1481 | #if defined(CONFIG_ADIS16300) \ | ||
| 1482 | || defined(CONFIG_ADIS16300_MODULE) | ||
| 1483 | { | ||
| 1484 | .modalias = "adis16300", | ||
| 1485 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1486 | .bus_num = 0, | ||
| 1487 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1488 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1489 | .mode = SPI_MODE_3, | ||
| 1490 | .irq = IRQ_PF4, | ||
| 1491 | }, | ||
| 1492 | #endif | ||
| 1493 | #if defined(CONFIG_ADIS16350) \ | ||
| 1494 | || defined(CONFIG_ADIS16350_MODULE) | ||
| 1495 | { | ||
| 1496 | .modalias = "adis16364", | ||
| 1497 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1498 | .bus_num = 0, | ||
| 1499 | .chip_select = 5, /* CS, change it for your board */ | ||
| 1500 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1501 | .mode = SPI_MODE_3, | ||
| 1502 | .irq = IRQ_PF4, | ||
| 1503 | }, | ||
| 1504 | #endif | ||
| 1505 | #if defined(CONFIG_ADIS16400) \ | ||
| 1506 | || defined(CONFIG_ADIS16400_MODULE) | ||
| 1507 | { | ||
| 1508 | .modalias = "adis16400", | ||
| 1509 | .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ | ||
| 1510 | .bus_num = 0, | ||
| 1511 | .chip_select = 1, /* CS, change it for your board */ | ||
| 1512 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 1513 | .mode = SPI_MODE_3, | ||
| 1514 | }, | ||
| 1515 | #endif | ||
| 1146 | }; | 1516 | }; |
| 1147 | 1517 | ||
| 1148 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 1518 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 1149 | /* SPI controller data */ | 1519 | /* SPI controller data */ |
| 1150 | static struct bfin5xx_spi_master bfin_spi0_info = { | 1520 | static struct bfin5xx_spi_master bfin_spi0_info = { |
| 1151 | .num_chipselect = 8, | 1521 | .num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS, |
| 1152 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 1522 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 1153 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | 1523 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, |
| 1154 | }; | 1524 | }; |
| @@ -1773,12 +2143,6 @@ static struct regulator_init_data ad5398_regulator_data = { | |||
| 1773 | .consumer_supplies = &ad5398_consumer, | 2143 | .consumer_supplies = &ad5398_consumer, |
| 1774 | }; | 2144 | }; |
| 1775 | 2145 | ||
| 1776 | static struct ad5398_platform_data ad5398_i2c_platform_data = { | ||
| 1777 | .current_bits = 10, | ||
| 1778 | .current_offset = 4, | ||
| 1779 | .regulator_data = &ad5398_regulator_data, | ||
| 1780 | }; | ||
| 1781 | |||
| 1782 | #if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \ | 2146 | #if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \ |
| 1783 | defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE) | 2147 | defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE) |
| 1784 | static struct platform_device ad5398_virt_consumer_device = { | 2148 | static struct platform_device ad5398_virt_consumer_device = { |
| @@ -1811,7 +2175,34 @@ static struct platform_device ad5398_userspace_consumer_device = { | |||
| 1811 | #endif | 2175 | #endif |
| 1812 | #endif | 2176 | #endif |
| 1813 | 2177 | ||
| 2178 | #if defined(CONFIG_ADT7410) || defined(CONFIG_ADT7410_MODULE) | ||
| 2179 | /* INT bound temperature alarm event. line 1 */ | ||
| 2180 | static unsigned long adt7410_platform_data[2] = { | ||
| 2181 | IRQ_PG4, IRQF_TRIGGER_LOW, | ||
| 2182 | }; | ||
| 2183 | #endif | ||
| 2184 | |||
| 2185 | #if defined(CONFIG_ADT7316_I2C) || defined(CONFIG_ADT7316_I2C_MODULE) | ||
| 2186 | /* INT bound temperature alarm event. line 1 */ | ||
| 2187 | static unsigned long adt7316_i2c_data[2] = { | ||
| 2188 | IRQF_TRIGGER_LOW, /* interrupt flags */ | ||
| 2189 | GPIO_PF4, /* ldac_pin, 0 means DAC/LDAC registers control DAC update */ | ||
| 2190 | }; | ||
| 2191 | #endif | ||
| 2192 | |||
| 1814 | static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | 2193 | static struct i2c_board_info __initdata bfin_i2c_board_info[] = { |
| 2194 | #if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE) | ||
| 2195 | { | ||
| 2196 | I2C_BOARD_INFO("ad1937", 0x04), | ||
| 2197 | }, | ||
| 2198 | #endif | ||
| 2199 | |||
| 2200 | #if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE) | ||
| 2201 | { | ||
| 2202 | I2C_BOARD_INFO("adav803", 0x10), | ||
| 2203 | }, | ||
| 2204 | #endif | ||
| 2205 | |||
| 1815 | #if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE) | 2206 | #if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE) |
| 1816 | { | 2207 | { |
| 1817 | I2C_BOARD_INFO("ad7142_captouch", 0x2C), | 2208 | I2C_BOARD_INFO("ad7142_captouch", 0x2C), |
| @@ -1843,12 +2234,7 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 1843 | { | 2234 | { |
| 1844 | I2C_BOARD_INFO("ad7414", 0x9), | 2235 | I2C_BOARD_INFO("ad7414", 0x9), |
| 1845 | .irq = IRQ_PG5, | 2236 | .irq = IRQ_PG5, |
| 1846 | /* | 2237 | .irq_flags = IRQF_TRIGGER_LOW, |
| 1847 | * platform_data pointer is borrwoed by the driver to | ||
| 1848 | * store custimer defined IRQ ALART level mode. | ||
| 1849 | * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid. | ||
| 1850 | */ | ||
| 1851 | .platform_data = (void *)IRQF_TRIGGER_LOW, | ||
| 1852 | }, | 2238 | }, |
| 1853 | #endif | 2239 | #endif |
| 1854 | 2240 | ||
| @@ -1856,12 +2242,56 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 1856 | { | 2242 | { |
| 1857 | I2C_BOARD_INFO("ad7417", 0xb), | 2243 | I2C_BOARD_INFO("ad7417", 0xb), |
| 1858 | .irq = IRQ_PG5, | 2244 | .irq = IRQ_PG5, |
| 1859 | /* | 2245 | .irq_flags = IRQF_TRIGGER_LOW, |
| 1860 | * platform_data pointer is borrwoed by the driver to | 2246 | .platform_data = (void *)GPIO_PF4, |
| 1861 | * store custimer defined IRQ ALART level mode. | 2247 | }, |
| 1862 | * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid. | 2248 | #endif |
| 1863 | */ | 2249 | |
| 1864 | .platform_data = (void *)IRQF_TRIGGER_LOW, | 2250 | #if defined(CONFIG_ADE7854_I2C) || defined(CONFIG_ADE7854_I2C_MODULE) |
| 2251 | { | ||
| 2252 | I2C_BOARD_INFO("ade7854", 0x38), | ||
| 2253 | }, | ||
| 2254 | #endif | ||
| 2255 | |||
| 2256 | #if defined(CONFIG_ADT75) || defined(CONFIG_ADT75_MODULE) | ||
| 2257 | { | ||
| 2258 | I2C_BOARD_INFO("adt75", 0x9), | ||
| 2259 | .irq = IRQ_PG5, | ||
| 2260 | .irq_flags = IRQF_TRIGGER_LOW, | ||
| 2261 | }, | ||
| 2262 | #endif | ||
| 2263 | |||
| 2264 | #if defined(CONFIG_ADT7408) || defined(CONFIG_ADT7408_MODULE) | ||
| 2265 | { | ||
| 2266 | I2C_BOARD_INFO("adt7408", 0x18), | ||
| 2267 | .irq = IRQ_PG5, | ||
| 2268 | .irq_flags = IRQF_TRIGGER_LOW, | ||
| 2269 | }, | ||
| 2270 | #endif | ||
| 2271 | |||
| 2272 | #if defined(CONFIG_ADT7410) || defined(CONFIG_ADT7410_MODULE) | ||
| 2273 | { | ||
| 2274 | I2C_BOARD_INFO("adt7410", 0x48), | ||
| 2275 | /* CT critical temperature event. line 0 */ | ||
| 2276 | .irq = IRQ_PG5, | ||
| 2277 | .irq_flags = IRQF_TRIGGER_LOW, | ||
| 2278 | .platform_data = (void *)&adt7410_platform_data, | ||
| 2279 | }, | ||
| 2280 | #endif | ||
| 2281 | |||
| 2282 | #if defined(CONFIG_AD7291) || defined(CONFIG_AD7291_MODULE) | ||
| 2283 | { | ||
| 2284 | I2C_BOARD_INFO("ad7291", 0x20), | ||
| 2285 | .irq = IRQ_PG5, | ||
| 2286 | .irq_flags = IRQF_TRIGGER_LOW, | ||
| 2287 | }, | ||
| 2288 | #endif | ||
| 2289 | |||
| 2290 | #if defined(CONFIG_ADT7316_I2C) || defined(CONFIG_ADT7316_I2C_MODULE) | ||
| 2291 | { | ||
| 2292 | I2C_BOARD_INFO("adt7316", 0x48), | ||
| 2293 | .irq = IRQ_PG6, | ||
| 2294 | .platform_data = (void *)&adt7316_i2c_data, | ||
| 1865 | }, | 2295 | }, |
| 1866 | #endif | 2296 | #endif |
| 1867 | 2297 | ||
| @@ -1917,7 +2347,7 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 1917 | #endif | 2347 | #endif |
| 1918 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) | 2348 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) |
| 1919 | { | 2349 | { |
| 1920 | I2C_BOARD_INFO("bf537-lq035-ad5280", 0x2C), | 2350 | I2C_BOARD_INFO("bf537-lq035-ad5280", 0x2F), |
| 1921 | }, | 2351 | }, |
| 1922 | #endif | 2352 | #endif |
| 1923 | #if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE) | 2353 | #if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE) |
| @@ -1954,7 +2384,7 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 1954 | #if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE) | 2384 | #if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE) |
| 1955 | { | 2385 | { |
| 1956 | I2C_BOARD_INFO("ad5398", 0xC), | 2386 | I2C_BOARD_INFO("ad5398", 0xC), |
| 1957 | .platform_data = (void *)&ad5398_i2c_platform_data, | 2387 | .platform_data = (void *)&ad5398_regulator_data, |
| 1958 | }, | 2388 | }, |
| 1959 | #endif | 2389 | #endif |
| 1960 | #if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE) | 2390 | #if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE) |
| @@ -1963,6 +2393,16 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
| 1963 | .platform_data = (void *)&adp8860_pdata, | 2393 | .platform_data = (void *)&adp8860_pdata, |
| 1964 | }, | 2394 | }, |
| 1965 | #endif | 2395 | #endif |
| 2396 | #if defined(CONFIG_SND_SOC_ADAU1373) || defined(CONFIG_SND_SOC_ADAU1373_MODULE) | ||
| 2397 | { | ||
| 2398 | I2C_BOARD_INFO("adau1373", 0x1A), | ||
| 2399 | }, | ||
| 2400 | #endif | ||
| 2401 | #if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) | ||
| 2402 | { | ||
| 2403 | I2C_BOARD_INFO("ad5252", 0x2e), | ||
| 2404 | }, | ||
| 2405 | #endif | ||
| 1966 | }; | 2406 | }; |
| 1967 | 2407 | ||
| 1968 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | 2408 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) |
| @@ -2147,50 +2587,38 @@ static struct platform_device bfin_ac97 = { | |||
| 2147 | }; | 2587 | }; |
| 2148 | #endif | 2588 | #endif |
| 2149 | 2589 | ||
| 2150 | #if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE) | 2590 | #if defined(CONFIG_REGULATOR_FIXED_VOLTAGE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE) |
| 2151 | #define REGULATOR_ADP122 "adp122" | 2591 | #define REGULATOR_ADP122 "adp122" |
| 2152 | #define REGULATOR_ADP150 "adp150" | 2592 | #define REGULATOR_ADP122_UV 2500000 |
| 2153 | 2593 | ||
| 2154 | static struct regulator_consumer_supply adp122_consumers = { | 2594 | static struct regulator_consumer_supply adp122_consumers = { |
| 2155 | .supply = REGULATOR_ADP122, | 2595 | .supply = REGULATOR_ADP122, |
| 2156 | }; | 2596 | }; |
| 2157 | 2597 | ||
| 2158 | static struct regulator_consumer_supply adp150_consumers = { | 2598 | static struct regulator_init_data adp_switch_regulator_data = { |
| 2159 | .supply = REGULATOR_ADP150, | 2599 | .constraints = { |
| 2160 | }; | 2600 | .name = REGULATOR_ADP122, |
| 2161 | 2601 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | |
| 2162 | static struct regulator_init_data adp_switch_regulator_data[] = { | 2602 | .min_uV = REGULATOR_ADP122_UV, |
| 2163 | { | 2603 | .max_uV = REGULATOR_ADP122_UV, |
| 2164 | .constraints = { | 2604 | .min_uA = 0, |
| 2165 | .name = REGULATOR_ADP122, | 2605 | .max_uA = 300000, |
| 2166 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
| 2167 | .min_uA = 0, | ||
| 2168 | .max_uA = 300000, | ||
| 2169 | }, | ||
| 2170 | .num_consumer_supplies = 1, /* only 1 */ | ||
| 2171 | .consumer_supplies = &adp122_consumers, | ||
| 2172 | .driver_data = (void *)GPIO_PF2, /* gpio port only */ | ||
| 2173 | }, | ||
| 2174 | { | ||
| 2175 | .constraints = { | ||
| 2176 | .name = REGULATOR_ADP150, | ||
| 2177 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
| 2178 | .min_uA = 0, | ||
| 2179 | .max_uA = 150000, | ||
| 2180 | }, | ||
| 2181 | .num_consumer_supplies = 1, /* only 1 */ | ||
| 2182 | .consumer_supplies = &adp150_consumers, | ||
| 2183 | .driver_data = (void *)GPIO_PF3, /* gpio port only */ | ||
| 2184 | }, | 2606 | }, |
| 2607 | .num_consumer_supplies = 1, /* only 1 */ | ||
| 2608 | .consumer_supplies = &adp122_consumers, | ||
| 2185 | }; | 2609 | }; |
| 2186 | 2610 | ||
| 2187 | static struct adp_switch_platform_data adp_switch_pdata = { | 2611 | static struct fixed_voltage_config adp_switch_pdata = { |
| 2188 | .regulator_num = ARRAY_SIZE(adp_switch_regulator_data), | 2612 | .supply_name = REGULATOR_ADP122, |
| 2189 | .regulator_data = adp_switch_regulator_data, | 2613 | .microvolts = REGULATOR_ADP122_UV, |
| 2614 | .gpio = GPIO_PF2, | ||
| 2615 | .enable_high = 1, | ||
| 2616 | .enabled_at_boot = 0, | ||
| 2617 | .init_data = &adp_switch_regulator_data, | ||
| 2190 | }; | 2618 | }; |
| 2191 | 2619 | ||
| 2192 | static struct platform_device adp_switch_device = { | 2620 | static struct platform_device adp_switch_device = { |
| 2193 | .name = "adp_switch", | 2621 | .name = "reg-fixed-voltage", |
| 2194 | .id = 0, | 2622 | .id = 0, |
| 2195 | .dev = { | 2623 | .dev = { |
| 2196 | .platform_data = &adp_switch_pdata, | 2624 | .platform_data = &adp_switch_pdata, |
| @@ -2216,27 +2644,26 @@ static struct platform_device adp122_userspace_consumer_device = { | |||
| 2216 | .platform_data = &adp122_userspace_comsumer_data, | 2644 | .platform_data = &adp122_userspace_comsumer_data, |
| 2217 | }, | 2645 | }, |
| 2218 | }; | 2646 | }; |
| 2647 | #endif | ||
| 2648 | #endif | ||
| 2219 | 2649 | ||
| 2220 | static struct regulator_bulk_data adp150_bulk_data = { | 2650 | #if defined(CONFIG_IIO_GPIO_TRIGGER) || \ |
| 2221 | .supply = REGULATOR_ADP150, | 2651 | defined(CONFIG_IIO_GPIO_TRIGGER_MODULE) |
| 2222 | }; | ||
| 2223 | 2652 | ||
| 2224 | static struct regulator_userspace_consumer_data adp150_userspace_comsumer_data = { | 2653 | static struct resource iio_gpio_trigger_resources[] = { |
| 2225 | .name = REGULATOR_ADP150, | 2654 | [0] = { |
| 2226 | .num_supplies = 1, | 2655 | .start = IRQ_PF5, |
| 2227 | .supplies = &adp150_bulk_data, | 2656 | .end = IRQ_PF5, |
| 2657 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, | ||
| 2658 | }, | ||
| 2228 | }; | 2659 | }; |
| 2229 | 2660 | ||
| 2230 | static struct platform_device adp150_userspace_consumer_device = { | 2661 | static struct platform_device iio_gpio_trigger = { |
| 2231 | .name = "reg-userspace-consumer", | 2662 | .name = "iio_gpio_trigger", |
| 2232 | .id = 1, | 2663 | .num_resources = ARRAY_SIZE(iio_gpio_trigger_resources), |
| 2233 | .dev = { | 2664 | .resource = iio_gpio_trigger_resources, |
| 2234 | .platform_data = &adp150_userspace_comsumer_data, | ||
| 2235 | }, | ||
| 2236 | }; | 2665 | }; |
| 2237 | #endif | 2666 | #endif |
| 2238 | #endif | ||
| 2239 | |||
| 2240 | 2667 | ||
| 2241 | static struct platform_device *stamp_devices[] __initdata = { | 2668 | static struct platform_device *stamp_devices[] __initdata = { |
| 2242 | 2669 | ||
| @@ -2369,14 +2796,18 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
| 2369 | #endif | 2796 | #endif |
| 2370 | #endif | 2797 | #endif |
| 2371 | 2798 | ||
| 2372 | #if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE) | 2799 | #if defined(CONFIG_REGULATOR_FIXED_VOLTAGE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE) |
| 2373 | &adp_switch_device, | 2800 | &adp_switch_device, |
| 2374 | #if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \ | 2801 | #if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \ |
| 2375 | defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE) | 2802 | defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE) |
| 2376 | &adp122_userspace_consumer_device, | 2803 | &adp122_userspace_consumer_device, |
| 2377 | &adp150_userspace_consumer_device, | ||
| 2378 | #endif | 2804 | #endif |
| 2379 | #endif | 2805 | #endif |
| 2806 | |||
| 2807 | #if defined(CONFIG_IIO_GPIO_TRIGGER) || \ | ||
| 2808 | defined(CONFIG_IIO_GPIO_TRIGGER_MODULE) | ||
| 2809 | &iio_gpio_trigger, | ||
| 2810 | #endif | ||
| 2380 | }; | 2811 | }; |
| 2381 | 2812 | ||
| 2382 | static int __init stamp_init(void) | 2813 | static int __init stamp_init(void) |
diff --git a/arch/blackfin/mach-bf537/boards/tcm_bf537.c b/arch/blackfin/mach-bf537/boards/tcm_bf537.c index 4f0a2e72ce4c..a4d62b5fc7ba 100644 --- a/arch/blackfin/mach-bf537/boards/tcm_bf537.c +++ b/arch/blackfin/mach-bf537/boards/tcm_bf537.c | |||
| @@ -74,7 +74,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 74 | }; | 74 | }; |
| 75 | #endif | 75 | #endif |
| 76 | 76 | ||
| 77 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 77 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 78 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 78 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 79 | .enable_dma = 0, | 79 | .enable_dma = 0, |
| 80 | .bits_per_word = 16, | 80 | .bits_per_word = 16, |
| @@ -113,12 +113,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 113 | }, | 113 | }, |
| 114 | #endif | 114 | #endif |
| 115 | 115 | ||
| 116 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 116 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 117 | { | 117 | { |
| 118 | .modalias = "ad1836", | 118 | .modalias = "ad183x", |
| 119 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 119 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 120 | .bus_num = 0, | 120 | .bus_num = 0, |
| 121 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 121 | .chip_select = 4, |
| 122 | .controller_data = &ad1836_spi_chip_info, | 122 | .controller_data = &ad1836_spi_chip_info, |
| 123 | }, | 123 | }, |
| 124 | #endif | 124 | #endif |
| @@ -230,7 +230,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 230 | }, { | 230 | }, { |
| 231 | .start = IRQ_PG15, | 231 | .start = IRQ_PG15, |
| 232 | .end = IRQ_PG15, | 232 | .end = IRQ_PG15, |
| 233 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 233 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 234 | }, | 234 | }, |
| 235 | }; | 235 | }; |
| 236 | 236 | ||
diff --git a/arch/blackfin/mach-bf537/include/mach/defBF534.h b/arch/blackfin/mach-bf537/include/mach/defBF534.h index 6f56907a18c0..0323e6bacdae 100644 --- a/arch/blackfin/mach-bf537/include/mach/defBF534.h +++ b/arch/blackfin/mach-bf537/include/mach/defBF534.h | |||
| @@ -1071,50 +1071,6 @@ | |||
| 1071 | #define FPE 0x10 /* Force Parity Error On Transmit */ | 1071 | #define FPE 0x10 /* Force Parity Error On Transmit */ |
| 1072 | #define FFE 0x20 /* Force Framing Error On Transmit */ | 1072 | #define FFE 0x20 /* Force Framing Error On Transmit */ |
| 1073 | 1073 | ||
| 1074 | /* *********** SERIAL PERIPHERAL INTERFACE (SPI) MASKS ****************************/ | ||
| 1075 | /* SPI_CTL Masks */ | ||
| 1076 | #define TIMOD 0x0003 /* Transfer Initiate Mode */ | ||
| 1077 | #define RDBR_CORE 0x0000 /* RDBR Read Initiates, IRQ When RDBR Full */ | ||
| 1078 | #define TDBR_CORE 0x0001 /* TDBR Write Initiates, IRQ When TDBR Empty */ | ||
| 1079 | #define RDBR_DMA 0x0002 /* DMA Read, DMA Until FIFO Empty */ | ||
| 1080 | #define TDBR_DMA 0x0003 /* DMA Write, DMA Until FIFO Full */ | ||
| 1081 | #define SZ 0x0004 /* Send Zero (When TDBR Empty, Send Zero/Last*) */ | ||
| 1082 | #define GM 0x0008 /* Get More (When RDBR Full, Overwrite/Discard*) */ | ||
| 1083 | #define PSSE 0x0010 /* Slave-Select Input Enable */ | ||
| 1084 | #define EMISO 0x0020 /* Enable MISO As Output */ | ||
| 1085 | #define SIZE 0x0100 /* Size of Words (16/8* Bits) */ | ||
| 1086 | #define LSBF 0x0200 /* LSB First */ | ||
| 1087 | #define CPHA 0x0400 /* Clock Phase */ | ||
| 1088 | #define CPOL 0x0800 /* Clock Polarity */ | ||
| 1089 | #define MSTR 0x1000 /* Master/Slave* */ | ||
| 1090 | #define WOM 0x2000 /* Write Open Drain Master */ | ||
| 1091 | #define SPE 0x4000 /* SPI Enable */ | ||
| 1092 | |||
| 1093 | /* SPI_FLG Masks */ | ||
| 1094 | #define FLS1 0x0002 /* Enables SPI_FLOUT1 as SPI Slave-Select Output */ | ||
| 1095 | #define FLS2 0x0004 /* Enables SPI_FLOUT2 as SPI Slave-Select Output */ | ||
| 1096 | #define FLS3 0x0008 /* Enables SPI_FLOUT3 as SPI Slave-Select Output */ | ||
| 1097 | #define FLS4 0x0010 /* Enables SPI_FLOUT4 as SPI Slave-Select Output */ | ||
| 1098 | #define FLS5 0x0020 /* Enables SPI_FLOUT5 as SPI Slave-Select Output */ | ||
| 1099 | #define FLS6 0x0040 /* Enables SPI_FLOUT6 as SPI Slave-Select Output */ | ||
| 1100 | #define FLS7 0x0080 /* Enables SPI_FLOUT7 as SPI Slave-Select Output */ | ||
| 1101 | #define FLG1 0xFDFF /* Activates SPI_FLOUT1 */ | ||
| 1102 | #define FLG2 0xFBFF /* Activates SPI_FLOUT2 */ | ||
| 1103 | #define FLG3 0xF7FF /* Activates SPI_FLOUT3 */ | ||
| 1104 | #define FLG4 0xEFFF /* Activates SPI_FLOUT4 */ | ||
| 1105 | #define FLG5 0xDFFF /* Activates SPI_FLOUT5 */ | ||
| 1106 | #define FLG6 0xBFFF /* Activates SPI_FLOUT6 */ | ||
| 1107 | #define FLG7 0x7FFF /* Activates SPI_FLOUT7 */ | ||
| 1108 | |||
| 1109 | /* SPI_STAT Masks */ | ||
| 1110 | #define SPIF 0x0001 /* SPI Finished (Single-Word Transfer Complete) */ | ||
| 1111 | #define MODF 0x0002 /* Mode Fault Error (Another Device Tried To Become Master) */ | ||
| 1112 | #define TXE 0x0004 /* Transmission Error (Data Sent With No New Data In TDBR) */ | ||
| 1113 | #define TXS 0x0008 /* SPI_TDBR Data Buffer Status (Full/Empty*) */ | ||
| 1114 | #define RBSY 0x0010 /* Receive Error (Data Received With RDBR Full) */ | ||
| 1115 | #define RXS 0x0020 /* SPI_RDBR Data Buffer Status (Full/Empty*) */ | ||
| 1116 | #define TXCOL 0x0040 /* Transmit Collision Error (Corrupt Data May Have Been Sent) */ | ||
| 1117 | |||
| 1118 | /* **************** GENERAL PURPOSE TIMER MASKS **********************/ | 1074 | /* **************** GENERAL PURPOSE TIMER MASKS **********************/ |
| 1119 | /* TIMER_ENABLE Masks */ | 1075 | /* TIMER_ENABLE Masks */ |
| 1120 | #define TIMEN0 0x0001 /* Enable Timer 0 */ | 1076 | #define TIMEN0 0x0001 /* Enable Timer 0 */ |
diff --git a/arch/blackfin/mach-bf538/boards/ezkit.c b/arch/blackfin/mach-bf538/boards/ezkit.c index 1a1f65855b03..c6fb0a52f849 100644 --- a/arch/blackfin/mach-bf538/boards/ezkit.c +++ b/arch/blackfin/mach-bf538/boards/ezkit.c | |||
| @@ -695,7 +695,7 @@ static struct platform_device bf538_spi_master0 = { | |||
| 695 | }; | 695 | }; |
| 696 | 696 | ||
| 697 | static struct bfin5xx_spi_master bf538_spi_master_info1 = { | 697 | static struct bfin5xx_spi_master bf538_spi_master_info1 = { |
| 698 | .num_chipselect = 8, | 698 | .num_chipselect = 2, |
| 699 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 699 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 700 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, | 700 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, |
| 701 | }; | 701 | }; |
| @@ -711,7 +711,7 @@ static struct platform_device bf538_spi_master1 = { | |||
| 711 | }; | 711 | }; |
| 712 | 712 | ||
| 713 | static struct bfin5xx_spi_master bf538_spi_master_info2 = { | 713 | static struct bfin5xx_spi_master bf538_spi_master_info2 = { |
| 714 | .num_chipselect = 8, | 714 | .num_chipselect = 2, |
| 715 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 715 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 716 | .pin_req = {P_SPI2_SCK, P_SPI2_MISO, P_SPI2_MOSI, 0}, | 716 | .pin_req = {P_SPI2_SCK, P_SPI2_MISO, P_SPI2_MOSI, 0}, |
| 717 | }; | 717 | }; |
diff --git a/arch/blackfin/mach-bf538/include/mach/defBF539.h b/arch/blackfin/mach-bf538/include/mach/defBF539.h index fe43062b4975..7a8ac5f44204 100644 --- a/arch/blackfin/mach-bf538/include/mach/defBF539.h +++ b/arch/blackfin/mach-bf538/include/mach/defBF539.h | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | /* System Interrupt Controller (0xFFC00100 - 0xFFC001FF) */ | 32 | /* System Interrupt Controller (0xFFC00100 - 0xFFC001FF) */ |
| 33 | #define SWRST 0xFFC00100 /* Software Reset Register (16-bit) */ | 33 | #define SWRST 0xFFC00100 /* Software Reset Register (16-bit) */ |
| 34 | #define SYSCR 0xFFC00104 /* System Configuration registe */ | 34 | #define SYSCR 0xFFC00104 /* System Configuration registe */ |
| 35 | #define SIC_RVECT 0xFFC00108 | ||
| 35 | #define SIC_IMASK0 0xFFC0010C /* Interrupt Mask Register */ | 36 | #define SIC_IMASK0 0xFFC0010C /* Interrupt Mask Register */ |
| 36 | #define SIC_IAR0 0xFFC00110 /* Interrupt Assignment Register 0 */ | 37 | #define SIC_IAR0 0xFFC00110 /* Interrupt Assignment Register 0 */ |
| 37 | #define SIC_IAR1 0xFFC00114 /* Interrupt Assignment Register 1 */ | 38 | #define SIC_IAR1 0xFFC00114 /* Interrupt Assignment Register 1 */ |
| @@ -1894,78 +1895,6 @@ | |||
| 1894 | #define PE14_P 0xE | 1895 | #define PE14_P 0xE |
| 1895 | #define PE15_P 0xF | 1896 | #define PE15_P 0xF |
| 1896 | 1897 | ||
| 1897 | |||
| 1898 | /* *********** SERIAL PERIPHERAL INTERFACE (SPI) MASKS **************** */ | ||
| 1899 | /* SPIx_CTL Masks */ | ||
| 1900 | #define TIMOD 0x0003 /* Transfer Initiate Mode */ | ||
| 1901 | #define RDBR_CORE 0x0000 /* RDBR Read Initiates, IRQ When RDBR Full */ | ||
| 1902 | #define TDBR_CORE 0x0001 /* TDBR Write Initiates, IRQ When TDBR Empty */ | ||
| 1903 | #define RDBR_DMA 0x0002 /* DMA Read, DMA Until FIFO Empty */ | ||
| 1904 | #define TDBR_DMA 0x0003 /* DMA Write, DMA Until FIFO Full */ | ||
| 1905 | #define SZ 0x0004 /* Send Zero (When TDBR Empty, Send Zero/Last*) */ | ||
| 1906 | #define GM 0x0008 /* Get More (When RDBR Full, Overwrite/Discard*) */ | ||
| 1907 | #define PSSE 0x0010 /* Slave-Select Input Enable */ | ||
| 1908 | #define EMISO 0x0020 /* Enable MISO As Output */ | ||
| 1909 | #define SIZE 0x0100 /* Size of Words (16/8* Bits) */ | ||
| 1910 | #define LSBF 0x0200 /* LSB First */ | ||
| 1911 | #define CPHA 0x0400 /* Clock Phase */ | ||
| 1912 | #define CPOL 0x0800 /* Clock Polarity */ | ||
| 1913 | #define MSTR 0x1000 /* Master/Slave* */ | ||
| 1914 | #define WOM 0x2000 /* Write Open Drain Master */ | ||
| 1915 | #define SPE 0x4000 /* SPI Enable */ | ||
| 1916 | |||
| 1917 | /* SPIx_FLG Masks */ | ||
| 1918 | #define FLS1 0x0002 /* Enables (=1) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1919 | #define FLS2 0x0004 /* Enables (=1) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1920 | #define FLS3 0x0008 /* Enables (=1) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1921 | #define FLS4 0x0010 /* Enables (=1) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1922 | #define FLS5 0x0020 /* Enables (=1) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1923 | #define FLS6 0x0040 /* Enables (=1) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1924 | #define FLS7 0x0080 /* Enables (=1) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1925 | |||
| 1926 | #define FLG1 0x0200 /* Activates (=0) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1927 | #define FLG2 0x0400 /* Activates (=0) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1928 | #define FLG3 0x0800 /* Activates (=0) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1929 | #define FLG4 0x1000 /* Activates (=0) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1930 | #define FLG5 0x2000 /* Activates (=0) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1931 | #define FLG6 0x4000 /* Activates (=0) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1932 | #define FLG7 0x8000 /* Activates (=0) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1933 | |||
| 1934 | /* SPIx_FLG Bit Positions */ | ||
| 1935 | #define FLS1_P 0x0001 /* Enables (=1) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1936 | #define FLS2_P 0x0002 /* Enables (=1) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1937 | #define FLS3_P 0x0003 /* Enables (=1) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1938 | #define FLS4_P 0x0004 /* Enables (=1) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1939 | #define FLS5_P 0x0005 /* Enables (=1) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1940 | #define FLS6_P 0x0006 /* Enables (=1) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1941 | #define FLS7_P 0x0007 /* Enables (=1) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1942 | #define FLG1_P 0x0009 /* Activates (=0) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1943 | #define FLG2_P 0x000A /* Activates (=0) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1944 | #define FLG3_P 0x000B /* Activates (=0) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1945 | #define FLG4_P 0x000C /* Activates (=0) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1946 | #define FLG5_P 0x000D /* Activates (=0) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1947 | #define FLG6_P 0x000E /* Activates (=0) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1948 | #define FLG7_P 0x000F /* Activates (=0) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1949 | |||
| 1950 | /* SPIx_STAT Masks */ | ||
| 1951 | #define SPIF 0x0001 /* Set (=1) when SPI single-word transfer complete */ | ||
| 1952 | #define MODF 0x0002 /* Set (=1) in a master device when some other device tries to become master */ | ||
| 1953 | #define TXE 0x0004 /* Set (=1) when transmission occurs with no new data in SPI_TDBR */ | ||
| 1954 | #define TXS 0x0008 /* SPI_TDBR Data Buffer Status (0=Empty, 1=Full) */ | ||
| 1955 | #define RBSY 0x0010 /* Set (=1) when data is received with RDBR full */ | ||
| 1956 | #define RXS 0x0020 /* SPI_RDBR Data Buffer Status (0=Empty, 1=Full) */ | ||
| 1957 | #define TXCOL 0x0040 /* When set (=1), corrupt data may have been transmitted */ | ||
| 1958 | |||
| 1959 | /* SPIx_FLG Masks */ | ||
| 1960 | #define FLG1E 0xFDFF /* Activates SPI_FLOUT1 */ | ||
| 1961 | #define FLG2E 0xFBFF /* Activates SPI_FLOUT2 */ | ||
| 1962 | #define FLG3E 0xF7FF /* Activates SPI_FLOUT3 */ | ||
| 1963 | #define FLG4E 0xEFFF /* Activates SPI_FLOUT4 */ | ||
| 1964 | #define FLG5E 0xDFFF /* Activates SPI_FLOUT5 */ | ||
| 1965 | #define FLG6E 0xBFFF /* Activates SPI_FLOUT6 */ | ||
| 1966 | #define FLG7E 0x7FFF /* Activates SPI_FLOUT7 */ | ||
| 1967 | |||
| 1968 | |||
| 1969 | /* ********************* ASYNCHRONOUS MEMORY CONTROLLER MASKS ************* */ | 1898 | /* ********************* ASYNCHRONOUS MEMORY CONTROLLER MASKS ************* */ |
| 1970 | /* EBIU_AMGCTL Masks */ | 1899 | /* EBIU_AMGCTL Masks */ |
| 1971 | #define AMCKEN 0x0001 /* Enable CLKOUT */ | 1900 | #define AMCKEN 0x0001 /* Enable CLKOUT */ |
diff --git a/arch/blackfin/mach-bf548/boards/cm_bf548.c b/arch/blackfin/mach-bf548/boards/cm_bf548.c index 0c38eec9ade1..f0c0eef95ba8 100644 --- a/arch/blackfin/mach-bf548/boards/cm_bf548.c +++ b/arch/blackfin/mach-bf548/boards/cm_bf548.c | |||
| @@ -753,6 +753,44 @@ static struct platform_device bf54x_sdh_device = { | |||
| 753 | }; | 753 | }; |
| 754 | #endif | 754 | #endif |
| 755 | 755 | ||
| 756 | #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) | ||
| 757 | unsigned short bfin_can_peripherals[] = { | ||
| 758 | P_CAN0_RX, P_CAN0_TX, 0 | ||
| 759 | }; | ||
| 760 | |||
| 761 | static struct resource bfin_can_resources[] = { | ||
| 762 | { | ||
| 763 | .start = 0xFFC02A00, | ||
| 764 | .end = 0xFFC02FFF, | ||
| 765 | .flags = IORESOURCE_MEM, | ||
| 766 | }, | ||
| 767 | { | ||
| 768 | .start = IRQ_CAN0_RX, | ||
| 769 | .end = IRQ_CAN0_RX, | ||
| 770 | .flags = IORESOURCE_IRQ, | ||
| 771 | }, | ||
| 772 | { | ||
| 773 | .start = IRQ_CAN0_TX, | ||
| 774 | .end = IRQ_CAN0_TX, | ||
| 775 | .flags = IORESOURCE_IRQ, | ||
| 776 | }, | ||
| 777 | { | ||
| 778 | .start = IRQ_CAN0_ERROR, | ||
| 779 | .end = IRQ_CAN0_ERROR, | ||
| 780 | .flags = IORESOURCE_IRQ, | ||
| 781 | }, | ||
| 782 | }; | ||
| 783 | |||
| 784 | static struct platform_device bfin_can_device = { | ||
| 785 | .name = "bfin_can", | ||
| 786 | .num_resources = ARRAY_SIZE(bfin_can_resources), | ||
| 787 | .resource = bfin_can_resources, | ||
| 788 | .dev = { | ||
| 789 | .platform_data = &bfin_can_peripherals, /* Passed to driver */ | ||
| 790 | }, | ||
| 791 | }; | ||
| 792 | #endif | ||
| 793 | |||
| 756 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | 794 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) |
| 757 | static struct mtd_partition para_partitions[] = { | 795 | static struct mtd_partition para_partitions[] = { |
| 758 | { | 796 | { |
| @@ -928,7 +966,7 @@ static struct resource bfin_spi1_resource[] = { | |||
| 928 | 966 | ||
| 929 | /* SPI controller data */ | 967 | /* SPI controller data */ |
| 930 | static struct bfin5xx_spi_master bf54x_spi_master_info0 = { | 968 | static struct bfin5xx_spi_master bf54x_spi_master_info0 = { |
| 931 | .num_chipselect = 3, | 969 | .num_chipselect = 4, |
| 932 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 970 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 933 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | 971 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, |
| 934 | }; | 972 | }; |
| @@ -944,7 +982,7 @@ static struct platform_device bf54x_spi_master0 = { | |||
| 944 | }; | 982 | }; |
| 945 | 983 | ||
| 946 | static struct bfin5xx_spi_master bf54x_spi_master_info1 = { | 984 | static struct bfin5xx_spi_master bf54x_spi_master_info1 = { |
| 947 | .num_chipselect = 3, | 985 | .num_chipselect = 4, |
| 948 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 986 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 949 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, | 987 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, |
| 950 | }; | 988 | }; |
| @@ -1152,6 +1190,11 @@ static struct platform_device *cm_bf548_devices[] __initdata = { | |||
| 1152 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | 1190 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) |
| 1153 | ¶_flash_device, | 1191 | ¶_flash_device, |
| 1154 | #endif | 1192 | #endif |
| 1193 | |||
| 1194 | #if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) | ||
| 1195 | &bfin_can_device, | ||
| 1196 | #endif | ||
| 1197 | |||
| 1155 | }; | 1198 | }; |
| 1156 | 1199 | ||
| 1157 | static int __init cm_bf548_init(void) | 1200 | static int __init cm_bf548_init(void) |
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c index 56682a36e42d..216e26999af9 100644 --- a/arch/blackfin/mach-bf548/boards/ezkit.c +++ b/arch/blackfin/mach-bf548/boards/ezkit.c | |||
| @@ -837,8 +837,12 @@ static struct platform_device bfin_atapi_device = { | |||
| 837 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | 837 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) |
| 838 | static struct mtd_partition partition_info[] = { | 838 | static struct mtd_partition partition_info[] = { |
| 839 | { | 839 | { |
| 840 | .name = "linux kernel(nand)", | 840 | .name = "bootloader(nand)", |
| 841 | .offset = 0, | 841 | .offset = 0, |
| 842 | .size = 0x80000, | ||
| 843 | }, { | ||
| 844 | .name = "linux kernel(nand)", | ||
| 845 | .offset = MTDPART_OFS_APPEND, | ||
| 842 | .size = 4 * 1024 * 1024, | 846 | .size = 4 * 1024 * 1024, |
| 843 | }, | 847 | }, |
| 844 | { | 848 | { |
| @@ -901,7 +905,7 @@ static struct platform_device bf54x_sdh_device = { | |||
| 901 | static struct mtd_partition ezkit_partitions[] = { | 905 | static struct mtd_partition ezkit_partitions[] = { |
| 902 | { | 906 | { |
| 903 | .name = "bootloader(nor)", | 907 | .name = "bootloader(nor)", |
| 904 | .size = 0x40000, | 908 | .size = 0x80000, |
| 905 | .offset = 0, | 909 | .offset = 0, |
| 906 | }, { | 910 | }, { |
| 907 | .name = "linux kernel(nor)", | 911 | .name = "linux kernel(nor)", |
| @@ -943,7 +947,7 @@ static struct platform_device ezkit_flash_device = { | |||
| 943 | static struct mtd_partition bfin_spi_flash_partitions[] = { | 947 | static struct mtd_partition bfin_spi_flash_partitions[] = { |
| 944 | { | 948 | { |
| 945 | .name = "bootloader(spi)", | 949 | .name = "bootloader(spi)", |
| 946 | .size = 0x00040000, | 950 | .size = 0x00080000, |
| 947 | .offset = 0, | 951 | .offset = 0, |
| 948 | .mask_flags = MTD_CAP_ROM | 952 | .mask_flags = MTD_CAP_ROM |
| 949 | }, { | 953 | }, { |
| @@ -966,8 +970,8 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = { | |||
| 966 | }; | 970 | }; |
| 967 | #endif | 971 | #endif |
| 968 | 972 | ||
| 969 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 973 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 970 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 974 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 971 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 975 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 972 | .enable_dma = 0, | 976 | .enable_dma = 0, |
| 973 | .bits_per_word = 16, | 977 | .bits_per_word = 16, |
| @@ -1023,13 +1027,13 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 1023 | .mode = SPI_MODE_3, | 1027 | .mode = SPI_MODE_3, |
| 1024 | }, | 1028 | }, |
| 1025 | #endif | 1029 | #endif |
| 1026 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 1030 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 1027 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 1031 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 1028 | { | 1032 | { |
| 1029 | .modalias = "ad1836", | 1033 | .modalias = "ad183x", |
| 1030 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 1034 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 1031 | .bus_num = 1, | 1035 | .bus_num = 1, |
| 1032 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 1036 | .chip_select = 4, |
| 1033 | .controller_data = &ad1836_spi_chip_info, | 1037 | .controller_data = &ad1836_spi_chip_info, |
| 1034 | }, | 1038 | }, |
| 1035 | #endif | 1039 | #endif |
| @@ -1107,7 +1111,7 @@ static struct resource bfin_spi1_resource[] = { | |||
| 1107 | 1111 | ||
| 1108 | /* SPI controller data */ | 1112 | /* SPI controller data */ |
| 1109 | static struct bfin5xx_spi_master bf54x_spi_master_info0 = { | 1113 | static struct bfin5xx_spi_master bf54x_spi_master_info0 = { |
| 1110 | .num_chipselect = 3, | 1114 | .num_chipselect = 4, |
| 1111 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 1115 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 1112 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | 1116 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, |
| 1113 | }; | 1117 | }; |
| @@ -1123,7 +1127,7 @@ static struct platform_device bf54x_spi_master0 = { | |||
| 1123 | }; | 1127 | }; |
| 1124 | 1128 | ||
| 1125 | static struct bfin5xx_spi_master bf54x_spi_master_info1 = { | 1129 | static struct bfin5xx_spi_master bf54x_spi_master_info1 = { |
| 1126 | .num_chipselect = 3, | 1130 | .num_chipselect = 4, |
| 1127 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 1131 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
| 1128 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, | 1132 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, |
| 1129 | }; | 1133 | }; |
| @@ -1206,6 +1210,11 @@ static struct i2c_board_info __initdata bfin_i2c_board_info1[] = { | |||
| 1206 | .platform_data = (void *)&adxl34x_info, | 1210 | .platform_data = (void *)&adxl34x_info, |
| 1207 | }, | 1211 | }, |
| 1208 | #endif | 1212 | #endif |
| 1213 | #if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) | ||
| 1214 | { | ||
| 1215 | I2C_BOARD_INFO("ad5252", 0x2f), | ||
| 1216 | }, | ||
| 1217 | #endif | ||
| 1209 | }; | 1218 | }; |
| 1210 | #endif | 1219 | #endif |
| 1211 | 1220 | ||
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c index 039a6d9d38f3..888b9cc0b822 100644 --- a/arch/blackfin/mach-bf548/dma.c +++ b/arch/blackfin/mach-bf548/dma.c | |||
| @@ -63,6 +63,7 @@ int channel2irq(unsigned int channel) | |||
| 63 | break; | 63 | break; |
| 64 | case CH_SPORT1_TX: | 64 | case CH_SPORT1_TX: |
| 65 | ret_irq = IRQ_SPORT1_TX; | 65 | ret_irq = IRQ_SPORT1_TX; |
| 66 | break; | ||
| 66 | case CH_SPI0: | 67 | case CH_SPI0: |
| 67 | ret_irq = IRQ_SPI0; | 68 | ret_irq = IRQ_SPI0; |
| 68 | break; | 69 | break; |
diff --git a/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h b/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h index 0c16067df4f3..deaf5d6542d5 100644 --- a/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h +++ b/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h | |||
| @@ -40,6 +40,8 @@ | |||
| 40 | 40 | ||
| 41 | /* SIC Registers */ | 41 | /* SIC Registers */ |
| 42 | 42 | ||
| 43 | #define bfin_read_SIC_RVECT() bfin_read32(SIC_RVECT) | ||
| 44 | #define bfin_write_SIC_RVECT(val) bfin_write32(SIC_RVECT, val) | ||
| 43 | #define bfin_read_SIC_IMASK0() bfin_read32(SIC_IMASK0) | 45 | #define bfin_read_SIC_IMASK0() bfin_read32(SIC_IMASK0) |
| 44 | #define bfin_write_SIC_IMASK0(val) bfin_write32(SIC_IMASK0, val) | 46 | #define bfin_write_SIC_IMASK0(val) bfin_write32(SIC_IMASK0, val) |
| 45 | #define bfin_read_SIC_IMASK1() bfin_read32(SIC_IMASK1) | 47 | #define bfin_read_SIC_IMASK1() bfin_read32(SIC_IMASK1) |
diff --git a/arch/blackfin/mach-bf548/include/mach/defBF54x_base.h b/arch/blackfin/mach-bf548/include/mach/defBF54x_base.h index 7866197f5485..78f91103f175 100644 --- a/arch/blackfin/mach-bf548/include/mach/defBF54x_base.h +++ b/arch/blackfin/mach-bf548/include/mach/defBF54x_base.h | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | 35 | ||
| 36 | /* SIC Registers */ | 36 | /* SIC Registers */ |
| 37 | 37 | ||
| 38 | #define SIC_RVECT 0xffc00108 | ||
| 38 | #define SIC_IMASK0 0xffc0010c /* System Interrupt Mask Register 0 */ | 39 | #define SIC_IMASK0 0xffc0010c /* System Interrupt Mask Register 0 */ |
| 39 | #define SIC_IMASK1 0xffc00110 /* System Interrupt Mask Register 1 */ | 40 | #define SIC_IMASK1 0xffc00110 /* System Interrupt Mask Register 1 */ |
| 40 | #define SIC_IMASK2 0xffc00114 /* System Interrupt Mask Register 2 */ | 41 | #define SIC_IMASK2 0xffc00114 /* System Interrupt Mask Register 2 */ |
| @@ -2061,56 +2062,6 @@ | |||
| 2061 | #define LOW_EVEN 0xff0000 /* Lower Limit for Even Bytes (Luma) */ | 2062 | #define LOW_EVEN 0xff0000 /* Lower Limit for Even Bytes (Luma) */ |
| 2062 | #define HIGH_EVEN 0xff000000 /* Upper Limit for Even Bytes (Luma) */ | 2063 | #define HIGH_EVEN 0xff000000 /* Upper Limit for Even Bytes (Luma) */ |
| 2063 | 2064 | ||
| 2064 | /* Bit masks for SPIx_BAUD */ | ||
| 2065 | |||
| 2066 | #define SPI_BAUD 0xffff /* Baud Rate */ | ||
| 2067 | |||
| 2068 | /* Bit masks for SPIx_CTL */ | ||
| 2069 | |||
| 2070 | #define SPE 0x4000 /* SPI Enable */ | ||
| 2071 | #define WOM 0x2000 /* Write Open Drain Master */ | ||
| 2072 | #define MSTR 0x1000 /* Master Mode */ | ||
| 2073 | #define CPOL 0x800 /* Clock Polarity */ | ||
| 2074 | #define CPHA 0x400 /* Clock Phase */ | ||
| 2075 | #define LSBF 0x200 /* LSB First */ | ||
| 2076 | #define SIZE 0x100 /* Size of Words */ | ||
| 2077 | #define EMISO 0x20 /* Enable MISO Output */ | ||
| 2078 | #define PSSE 0x10 /* Slave-Select Enable */ | ||
| 2079 | #define GM 0x8 /* Get More Data */ | ||
| 2080 | #define SZ 0x4 /* Send Zero */ | ||
| 2081 | #define TIMOD 0x3 /* Transfer Initiation Mode */ | ||
| 2082 | |||
| 2083 | /* Bit masks for SPIx_FLG */ | ||
| 2084 | |||
| 2085 | #define FLS1 0x2 /* Slave Select Enable 1 */ | ||
| 2086 | #define FLS2 0x4 /* Slave Select Enable 2 */ | ||
| 2087 | #define FLS3 0x8 /* Slave Select Enable 3 */ | ||
| 2088 | #define FLG1 0x200 /* Slave Select Value 1 */ | ||
| 2089 | #define FLG2 0x400 /* Slave Select Value 2 */ | ||
| 2090 | #define FLG3 0x800 /* Slave Select Value 3 */ | ||
| 2091 | |||
| 2092 | /* Bit masks for SPIx_STAT */ | ||
| 2093 | |||
| 2094 | #define TXCOL 0x40 /* Transmit Collision Error */ | ||
| 2095 | #define RXS 0x20 /* RDBR Data Buffer Status */ | ||
| 2096 | #define RBSY 0x10 /* Receive Error */ | ||
| 2097 | #define TXS 0x8 /* TDBR Data Buffer Status */ | ||
| 2098 | #define TXE 0x4 /* Transmission Error */ | ||
| 2099 | #define MODF 0x2 /* Mode Fault Error */ | ||
| 2100 | #define SPIF 0x1 /* SPI Finished */ | ||
| 2101 | |||
| 2102 | /* Bit masks for SPIx_TDBR */ | ||
| 2103 | |||
| 2104 | #define TDBR 0xffff /* Transmit Data Buffer */ | ||
| 2105 | |||
| 2106 | /* Bit masks for SPIx_RDBR */ | ||
| 2107 | |||
| 2108 | #define RDBR 0xffff /* Receive Data Buffer */ | ||
| 2109 | |||
| 2110 | /* Bit masks for SPIx_SHADOW */ | ||
| 2111 | |||
| 2112 | #define SHADOW 0xffff /* RDBR Shadow */ | ||
| 2113 | |||
| 2114 | /* ************************************************ */ | 2065 | /* ************************************************ */ |
| 2115 | /* The TWI bit masks fields are from the ADSP-BF538 */ | 2066 | /* The TWI bit masks fields are from the ADSP-BF538 */ |
| 2116 | /* and they have not been verified as the final */ | 2067 | /* and they have not been verified as the final */ |
diff --git a/arch/blackfin/mach-bf561/boards/acvilon.c b/arch/blackfin/mach-bf561/boards/acvilon.c index 35b6d124c1e3..0b1c20f14fe0 100644 --- a/arch/blackfin/mach-bf561/boards/acvilon.c +++ b/arch/blackfin/mach-bf561/boards/acvilon.c | |||
| @@ -302,7 +302,7 @@ static struct platform_nand_data bfin_plat_nand_data = { | |||
| 302 | static struct resource bfin_plat_nand_resources = { | 302 | static struct resource bfin_plat_nand_resources = { |
| 303 | .start = 0x24000000, | 303 | .start = 0x24000000, |
| 304 | .end = 0x24000000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)), | 304 | .end = 0x24000000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)), |
| 305 | .flags = IORESOURCE_IO, | 305 | .flags = IORESOURCE_MEM, |
| 306 | }; | 306 | }; |
| 307 | 307 | ||
| 308 | static struct platform_device bfin_async_nand_device = { | 308 | static struct platform_device bfin_async_nand_device = { |
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c index e127aedc1d7f..087b6b05cc73 100644 --- a/arch/blackfin/mach-bf561/boards/cm_bf561.c +++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c | |||
| @@ -72,7 +72,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = { | |||
| 72 | }; | 72 | }; |
| 73 | #endif | 73 | #endif |
| 74 | 74 | ||
| 75 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 75 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 76 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 76 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 77 | .enable_dma = 0, | 77 | .enable_dma = 0, |
| 78 | .bits_per_word = 16, | 78 | .bits_per_word = 16, |
| @@ -111,12 +111,12 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 111 | }, | 111 | }, |
| 112 | #endif | 112 | #endif |
| 113 | 113 | ||
| 114 | #if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 114 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 115 | { | 115 | { |
| 116 | .modalias = "ad1836", | 116 | .modalias = "ad183x", |
| 117 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 117 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 118 | .bus_num = 0, | 118 | .bus_num = 0, |
| 119 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 119 | .chip_select = 4, |
| 120 | .controller_data = &ad1836_spi_chip_info, | 120 | .controller_data = &ad1836_spi_chip_info, |
| 121 | }, | 121 | }, |
| 122 | #endif | 122 | #endif |
| @@ -278,7 +278,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 278 | }, { | 278 | }, { |
| 279 | .start = IRQ_PF47, | 279 | .start = IRQ_PF47, |
| 280 | .end = IRQ_PF47, | 280 | .end = IRQ_PF47, |
| 281 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 281 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 282 | }, | 282 | }, |
| 283 | }; | 283 | }; |
| 284 | 284 | ||
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c index 9b93e2f95791..ab7a487975fd 100644 --- a/arch/blackfin/mach-bf561/boards/ezkit.c +++ b/arch/blackfin/mach-bf561/boards/ezkit.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/spi/spi.h> | 14 | #include <linux/spi/spi.h> |
| 15 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
| 16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
| 17 | #include <linux/delay.h> | ||
| 17 | #include <asm/dma.h> | 18 | #include <asm/dma.h> |
| 18 | #include <asm/bfin5xx_spi.h> | 19 | #include <asm/bfin5xx_spi.h> |
| 19 | #include <asm/portmux.h> | 20 | #include <asm/portmux.h> |
| @@ -74,7 +75,7 @@ static struct resource isp1362_hcd_resources[] = { | |||
| 74 | }, { | 75 | }, { |
| 75 | .start = IRQ_PF8, | 76 | .start = IRQ_PF8, |
| 76 | .end = IRQ_PF8, | 77 | .end = IRQ_PF8, |
| 77 | .flags = IORESOURCE_IRQ, | 78 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, |
| 78 | }, | 79 | }, |
| 79 | }; | 80 | }; |
| 80 | 81 | ||
| @@ -274,8 +275,8 @@ static struct platform_device ezkit_flash_device = { | |||
| 274 | }; | 275 | }; |
| 275 | #endif | 276 | #endif |
| 276 | 277 | ||
| 277 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 278 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 278 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 279 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 279 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 280 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| 280 | .enable_dma = 0, | 281 | .enable_dma = 0, |
| 281 | .bits_per_word = 16, | 282 | .bits_per_word = 16, |
| @@ -328,14 +329,16 @@ static struct platform_device bfin_spi0_device = { | |||
| 328 | #endif | 329 | #endif |
| 329 | 330 | ||
| 330 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 331 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
| 331 | #if defined(CONFIG_SND_BLACKFIN_AD183X) \ | 332 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \ |
| 332 | || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE) | 333 | || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) |
| 333 | { | 334 | { |
| 334 | .modalias = "ad1836", | 335 | .modalias = "ad183x", |
| 335 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | 336 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ |
| 336 | .bus_num = 0, | 337 | .bus_num = 0, |
| 337 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | 338 | .chip_select = 4, |
| 339 | .platform_data = "ad1836", /* only includes chip name for the moment */ | ||
| 338 | .controller_data = &ad1836_spi_chip_info, | 340 | .controller_data = &ad1836_spi_chip_info, |
| 341 | .mode = SPI_MODE_3, | ||
| 339 | }, | 342 | }, |
| 340 | #endif | 343 | #endif |
| 341 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | 344 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) |
| @@ -377,8 +380,8 @@ static struct platform_device bfin_device_gpiokeys = { | |||
| 377 | #include <linux/i2c-gpio.h> | 380 | #include <linux/i2c-gpio.h> |
| 378 | 381 | ||
| 379 | static struct i2c_gpio_platform_data i2c_gpio_data = { | 382 | static struct i2c_gpio_platform_data i2c_gpio_data = { |
| 380 | .sda_pin = 1, | 383 | .sda_pin = GPIO_PF1, |
| 381 | .scl_pin = 0, | 384 | .scl_pin = GPIO_PF0, |
| 382 | .sda_is_open_drain = 0, | 385 | .sda_is_open_drain = 0, |
| 383 | .scl_is_open_drain = 0, | 386 | .scl_is_open_drain = 0, |
| 384 | .udelay = 40, | 387 | .udelay = 40, |
| @@ -420,6 +423,30 @@ static struct platform_device bfin_dpmc = { | |||
| 420 | }, | 423 | }, |
| 421 | }; | 424 | }; |
| 422 | 425 | ||
| 426 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 427 | static struct platform_device bfin_i2s = { | ||
| 428 | .name = "bfin-i2s", | ||
| 429 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 430 | /* TODO: add platform data here */ | ||
| 431 | }; | ||
| 432 | #endif | ||
| 433 | |||
| 434 | #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) | ||
| 435 | static struct platform_device bfin_tdm = { | ||
| 436 | .name = "bfin-tdm", | ||
| 437 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 438 | /* TODO: add platform data here */ | ||
| 439 | }; | ||
| 440 | #endif | ||
| 441 | |||
| 442 | #if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE) | ||
| 443 | static struct platform_device bfin_ac97 = { | ||
| 444 | .name = "bfin-ac97", | ||
| 445 | .id = CONFIG_SND_BF5XX_SPORT_NUM, | ||
| 446 | /* TODO: add platform data here */ | ||
| 447 | }; | ||
| 448 | #endif | ||
| 449 | |||
| 423 | static struct platform_device *ezkit_devices[] __initdata = { | 450 | static struct platform_device *ezkit_devices[] __initdata = { |
| 424 | 451 | ||
| 425 | &bfin_dpmc, | 452 | &bfin_dpmc, |
| @@ -467,6 +494,18 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
| 467 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | 494 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) |
| 468 | &ezkit_flash_device, | 495 | &ezkit_flash_device, |
| 469 | #endif | 496 | #endif |
| 497 | |||
| 498 | #if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) | ||
| 499 | &bfin_i2s, | ||
| 500 | #endif | ||
| 501 | |||
| 502 | #if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) | ||
| 503 | &bfin_tdm, | ||
| 504 | #endif | ||
| 505 | |||
| 506 | #if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE) | ||
| 507 | &bfin_ac97, | ||
| 508 | #endif | ||
| 470 | }; | 509 | }; |
| 471 | 510 | ||
| 472 | static int __init ezkit_init(void) | 511 | static int __init ezkit_init(void) |
| @@ -484,6 +523,17 @@ static int __init ezkit_init(void) | |||
| 484 | SSYNC(); | 523 | SSYNC(); |
| 485 | #endif | 524 | #endif |
| 486 | 525 | ||
| 526 | #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE) | ||
| 527 | bfin_write_FIO0_DIR(bfin_read_FIO0_DIR() | (1 << 15)); | ||
| 528 | bfin_write_FIO0_FLAG_S(1 << 15); | ||
| 529 | SSYNC(); | ||
| 530 | /* | ||
| 531 | * This initialization lasts for approximately 4500 MCLKs. | ||
| 532 | * MCLK = 12.288MHz | ||
| 533 | */ | ||
| 534 | udelay(400); | ||
| 535 | #endif | ||
| 536 | |||
| 487 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | 537 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); |
| 488 | return 0; | 538 | return 0; |
| 489 | } | 539 | } |
diff --git a/arch/blackfin/mach-bf561/coreb.c b/arch/blackfin/mach-bf561/coreb.c index c6a4c8f2d37b..78ecb50bafc8 100644 --- a/arch/blackfin/mach-bf561/coreb.c +++ b/arch/blackfin/mach-bf561/coreb.c | |||
| @@ -18,9 +18,9 @@ | |||
| 18 | #include <linux/miscdevice.h> | 18 | #include <linux/miscdevice.h> |
| 19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 20 | 20 | ||
| 21 | #define CMD_COREB_START 2 | 21 | #define CMD_COREB_START _IO('b', 0) |
| 22 | #define CMD_COREB_STOP 3 | 22 | #define CMD_COREB_STOP _IO('b', 1) |
| 23 | #define CMD_COREB_RESET 4 | 23 | #define CMD_COREB_RESET _IO('b', 2) |
| 24 | 24 | ||
| 25 | static long | 25 | static long |
| 26 | coreb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 26 | coreb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
| @@ -29,10 +29,10 @@ coreb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
| 29 | 29 | ||
| 30 | switch (cmd) { | 30 | switch (cmd) { |
| 31 | case CMD_COREB_START: | 31 | case CMD_COREB_START: |
| 32 | bfin_write_SICA_SYSCR(bfin_read_SICA_SYSCR() & ~0x0020); | 32 | bfin_write_SYSCR(bfin_read_SYSCR() & ~0x0020); |
| 33 | break; | 33 | break; |
| 34 | case CMD_COREB_STOP: | 34 | case CMD_COREB_STOP: |
| 35 | bfin_write_SICA_SYSCR(bfin_read_SICA_SYSCR() | 0x0020); | 35 | bfin_write_SYSCR(bfin_read_SYSCR() | 0x0020); |
| 36 | bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | 0x0080); | 36 | bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | 0x0080); |
| 37 | break; | 37 | break; |
| 38 | case CMD_COREB_RESET: | 38 | case CMD_COREB_RESET: |
| @@ -74,3 +74,4 @@ module_exit(bf561_coreb_exit); | |||
| 74 | 74 | ||
| 75 | MODULE_AUTHOR("Bas Vermeulen <bvermeul@blackstar.xs4all.nl>"); | 75 | MODULE_AUTHOR("Bas Vermeulen <bvermeul@blackstar.xs4all.nl>"); |
| 76 | MODULE_DESCRIPTION("BF561 Core B Support"); | 76 | MODULE_DESCRIPTION("BF561 Core B Support"); |
| 77 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/blackfin/mach-bf561/include/mach/blackfin.h b/arch/blackfin/mach-bf561/include/mach/blackfin.h index 67d6bdcd3fa8..6c7dc58c018c 100644 --- a/arch/blackfin/mach-bf561/include/mach/blackfin.h +++ b/arch/blackfin/mach-bf561/include/mach/blackfin.h | |||
| @@ -24,29 +24,16 @@ | |||
| 24 | #define bfin_read_FIO_INEN() bfin_read_FIO0_INEN() | 24 | #define bfin_read_FIO_INEN() bfin_read_FIO0_INEN() |
| 25 | #define bfin_write_FIO_INEN(val) bfin_write_FIO0_INEN(val) | 25 | #define bfin_write_FIO_INEN(val) bfin_write_FIO0_INEN(val) |
| 26 | 26 | ||
| 27 | #define SIC_IWR0 SICA_IWR0 | 27 | /* Weird muxer funcs which pick SIC regs from IMASK base */ |
| 28 | #define SIC_IWR1 SICA_IWR1 | 28 | #define __SIC_MUX(base, x) ((base) + ((x) << 2)) |
| 29 | #define SIC_IAR0 SICA_IAR0 | 29 | #define bfin_read_SIC_IMASK(x) bfin_read32(__SIC_MUX(SIC_IMASK0, x)) |
| 30 | #define bfin_write_SIC_IMASK0 bfin_write_SICA_IMASK0 | 30 | #define bfin_write_SIC_IMASK(x, val) bfin_write32(__SIC_MUX(SIC_IMASK0, x), val) |
| 31 | #define bfin_write_SIC_IMASK1 bfin_write_SICA_IMASK1 | 31 | #define bfin_read_SICB_IMASK(x) bfin_read32(__SIC_MUX(SICB_IMASK0, x)) |
| 32 | #define bfin_write_SIC_IWR0 bfin_write_SICA_IWR0 | 32 | #define bfin_write_SICB_IMASK(x, val) bfin_write32(__SIC_MUX(SICB_IMASK0, x), val) |
| 33 | #define bfin_write_SIC_IWR1 bfin_write_SICA_IWR1 | 33 | #define bfin_read_SIC_ISR(x) bfin_read32(__SIC_MUX(SIC_ISR0, x)) |
| 34 | 34 | #define bfin_write_SIC_ISR(x, val) bfin_write32(__SIC_MUX(SIC_ISR0, x), val) | |
| 35 | #define bfin_read_SIC_IMASK0 bfin_read_SICA_IMASK0 | 35 | #define bfin_read_SICB_ISR(x) bfin_read32(__SIC_MUX(SICB_ISR0, x)) |
| 36 | #define bfin_read_SIC_IMASK1 bfin_read_SICA_IMASK1 | 36 | #define bfin_write_SICB_ISR(x, val) bfin_write32(__SIC_MUX(SICB_ISR0, x), val) |
| 37 | #define bfin_read_SIC_IWR0 bfin_read_SICA_IWR0 | ||
| 38 | #define bfin_read_SIC_IWR1 bfin_read_SICA_IWR1 | ||
| 39 | #define bfin_read_SIC_ISR0 bfin_read_SICA_ISR0 | ||
| 40 | #define bfin_read_SIC_ISR1 bfin_read_SICA_ISR1 | ||
| 41 | |||
| 42 | #define bfin_read_SIC_IMASK(x) bfin_read32(SICA_IMASK0 + (x << 2)) | ||
| 43 | #define bfin_write_SIC_IMASK(x, val) bfin_write32((SICA_IMASK0 + (x << 2)), val) | ||
| 44 | #define bfin_read_SICB_IMASK(x) bfin_read32(SICB_IMASK0 + (x << 2)) | ||
| 45 | #define bfin_write_SICB_IMASK(x, val) bfin_write32((SICB_IMASK0 + (x << 2)), val) | ||
| 46 | #define bfin_read_SIC_ISR(x) bfin_read32(SICA_ISR0 + (x << 2)) | ||
| 47 | #define bfin_write_SIC_ISR(x, val) bfin_write32((SICA_ISR0 + (x << 2)), val) | ||
| 48 | #define bfin_read_SICB_ISR(x) bfin_read32(SICB_ISR0 + (x << 2)) | ||
| 49 | #define bfin_write_SICB_ISR(x, val) bfin_write32((SICB_ISR0 + (x << 2)), val) | ||
| 50 | 37 | ||
| 51 | #define BFIN_UART_NR_PORTS 1 | 38 | #define BFIN_UART_NR_PORTS 1 |
| 52 | 39 | ||
diff --git a/arch/blackfin/mach-bf561/include/mach/cdefBF561.h b/arch/blackfin/mach-bf561/include/mach/cdefBF561.h index cc0416a5fa02..2bab99152495 100644 --- a/arch/blackfin/mach-bf561/include/mach/cdefBF561.h +++ b/arch/blackfin/mach-bf561/include/mach/cdefBF561.h | |||
| @@ -30,49 +30,41 @@ | |||
| 30 | #define bfin_write_PLL_LOCKCNT(val) bfin_write16(PLL_LOCKCNT,val) | 30 | #define bfin_write_PLL_LOCKCNT(val) bfin_write16(PLL_LOCKCNT,val) |
| 31 | #define bfin_read_CHIPID() bfin_read32(CHIPID) | 31 | #define bfin_read_CHIPID() bfin_read32(CHIPID) |
| 32 | 32 | ||
| 33 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ | ||
| 34 | #define bfin_read_SWRST() bfin_read_SICA_SWRST() | ||
| 35 | #define bfin_write_SWRST(val) bfin_write_SICA_SWRST(val) | ||
| 36 | #define bfin_read_SYSCR() bfin_read_SICA_SYSCR() | ||
| 37 | #define bfin_write_SYSCR(val) bfin_write_SICA_SYSCR(val) | ||
| 38 | |||
| 39 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ | 33 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ |
| 40 | #define bfin_read_SICA_SWRST() bfin_read16(SICA_SWRST) | 34 | #define bfin_read_SWRST() bfin_read16(SWRST) |
| 41 | #define bfin_write_SICA_SWRST(val) bfin_write16(SICA_SWRST,val) | 35 | #define bfin_write_SWRST(val) bfin_write16(SWRST,val) |
| 42 | #define bfin_read_SICA_SYSCR() bfin_read16(SICA_SYSCR) | 36 | #define bfin_read_SYSCR() bfin_read16(SYSCR) |
| 43 | #define bfin_write_SICA_SYSCR(val) bfin_write16(SICA_SYSCR,val) | 37 | #define bfin_write_SYSCR(val) bfin_write16(SYSCR,val) |
| 44 | #define bfin_read_SICA_RVECT() bfin_read16(SICA_RVECT) | 38 | #define bfin_read_SIC_RVECT() bfin_read16(SIC_RVECT) |
| 45 | #define bfin_write_SICA_RVECT(val) bfin_write16(SICA_RVECT,val) | 39 | #define bfin_write_SIC_RVECT(val) bfin_write16(SIC_RVECT,val) |
| 46 | #define bfin_read_SICA_IMASK() bfin_read32(SICA_IMASK) | 40 | #define bfin_read_SIC_IMASK0() bfin_read32(SIC_IMASK0) |
| 47 | #define bfin_write_SICA_IMASK(val) bfin_write32(SICA_IMASK,val) | 41 | #define bfin_write_SIC_IMASK0(val) bfin_write32(SIC_IMASK0,val) |
| 48 | #define bfin_read_SICA_IMASK0() bfin_read32(SICA_IMASK0) | 42 | #define bfin_read_SIC_IMASK1() bfin_read32(SIC_IMASK1) |
| 49 | #define bfin_write_SICA_IMASK0(val) bfin_write32(SICA_IMASK0,val) | 43 | #define bfin_write_SIC_IMASK1(val) bfin_write32(SIC_IMASK1,val) |
| 50 | #define bfin_read_SICA_IMASK1() bfin_read32(SICA_IMASK1) | 44 | #define bfin_read_SIC_IAR0() bfin_read32(SIC_IAR0) |
| 51 | #define bfin_write_SICA_IMASK1(val) bfin_write32(SICA_IMASK1,val) | 45 | #define bfin_write_SIC_IAR0(val) bfin_write32(SIC_IAR0,val) |
| 52 | #define bfin_read_SICA_IAR0() bfin_read32(SICA_IAR0) | 46 | #define bfin_read_SIC_IAR1() bfin_read32(SIC_IAR1) |
| 53 | #define bfin_write_SICA_IAR0(val) bfin_write32(SICA_IAR0,val) | 47 | #define bfin_write_SIC_IAR1(val) bfin_write32(SIC_IAR1,val) |
| 54 | #define bfin_read_SICA_IAR1() bfin_read32(SICA_IAR1) | 48 | #define bfin_read_SIC_IAR2() bfin_read32(SIC_IAR2) |
| 55 | #define bfin_write_SICA_IAR1(val) bfin_write32(SICA_IAR1,val) | 49 | #define bfin_write_SIC_IAR2(val) bfin_write32(SIC_IAR2,val) |
| 56 | #define bfin_read_SICA_IAR2() bfin_read32(SICA_IAR2) | 50 | #define bfin_read_SIC_IAR3() bfin_read32(SIC_IAR3) |
| 57 | #define bfin_write_SICA_IAR2(val) bfin_write32(SICA_IAR2,val) | 51 | #define bfin_write_SIC_IAR3(val) bfin_write32(SIC_IAR3,val) |
| 58 | #define bfin_read_SICA_IAR3() bfin_read32(SICA_IAR3) | 52 | #define bfin_read_SIC_IAR4() bfin_read32(SIC_IAR4) |
| 59 | #define bfin_write_SICA_IAR3(val) bfin_write32(SICA_IAR3,val) | 53 | #define bfin_write_SIC_IAR4(val) bfin_write32(SIC_IAR4,val) |
| 60 | #define bfin_read_SICA_IAR4() bfin_read32(SICA_IAR4) | 54 | #define bfin_read_SIC_IAR5() bfin_read32(SIC_IAR5) |
| 61 | #define bfin_write_SICA_IAR4(val) bfin_write32(SICA_IAR4,val) | 55 | #define bfin_write_SIC_IAR5(val) bfin_write32(SIC_IAR5,val) |
| 62 | #define bfin_read_SICA_IAR5() bfin_read32(SICA_IAR5) | 56 | #define bfin_read_SIC_IAR6() bfin_read32(SIC_IAR6) |
| 63 | #define bfin_write_SICA_IAR5(val) bfin_write32(SICA_IAR5,val) | 57 | #define bfin_write_SIC_IAR6(val) bfin_write32(SIC_IAR6,val) |
| 64 | #define bfin_read_SICA_IAR6() bfin_read32(SICA_IAR6) | 58 | #define bfin_read_SIC_IAR7() bfin_read32(SIC_IAR7) |
| 65 | #define bfin_write_SICA_IAR6(val) bfin_write32(SICA_IAR6,val) | 59 | #define bfin_write_SIC_IAR7(val) bfin_write32(SIC_IAR7,val) |
| 66 | #define bfin_read_SICA_IAR7() bfin_read32(SICA_IAR7) | 60 | #define bfin_read_SIC_ISR0() bfin_read32(SIC_ISR0) |
| 67 | #define bfin_write_SICA_IAR7(val) bfin_write32(SICA_IAR7,val) | 61 | #define bfin_write_SIC_ISR0(val) bfin_write32(SIC_ISR0,val) |
| 68 | #define bfin_read_SICA_ISR0() bfin_read32(SICA_ISR0) | 62 | #define bfin_read_SIC_ISR1() bfin_read32(SIC_ISR1) |
| 69 | #define bfin_write_SICA_ISR0(val) bfin_write32(SICA_ISR0,val) | 63 | #define bfin_write_SIC_ISR1(val) bfin_write32(SIC_ISR1,val) |
| 70 | #define bfin_read_SICA_ISR1() bfin_read32(SICA_ISR1) | 64 | #define bfin_read_SIC_IWR0() bfin_read32(SIC_IWR0) |
| 71 | #define bfin_write_SICA_ISR1(val) bfin_write32(SICA_ISR1,val) | 65 | #define bfin_write_SIC_IWR0(val) bfin_write32(SIC_IWR0,val) |
| 72 | #define bfin_read_SICA_IWR0() bfin_read32(SICA_IWR0) | 66 | #define bfin_read_SIC_IWR1() bfin_read32(SIC_IWR1) |
| 73 | #define bfin_write_SICA_IWR0(val) bfin_write32(SICA_IWR0,val) | 67 | #define bfin_write_SIC_IWR1(val) bfin_write32(SIC_IWR1,val) |
| 74 | #define bfin_read_SICA_IWR1() bfin_read32(SICA_IWR1) | ||
| 75 | #define bfin_write_SICA_IWR1(val) bfin_write32(SICA_IWR1,val) | ||
| 76 | 68 | ||
| 77 | /* System Reset and Interrupt Controller registers for Core B (0xFFC0 1100-0xFFC0 11FF) */ | 69 | /* System Reset and Interrupt Controller registers for Core B (0xFFC0 1100-0xFFC0 11FF) */ |
| 78 | #define bfin_read_SICB_SWRST() bfin_read16(SICB_SWRST) | 70 | #define bfin_read_SICB_SWRST() bfin_read16(SICB_SWRST) |
diff --git a/arch/blackfin/mach-bf561/include/mach/defBF561.h b/arch/blackfin/mach-bf561/include/mach/defBF561.h index 2674f0097576..79e048d452e0 100644 --- a/arch/blackfin/mach-bf561/include/mach/defBF561.h +++ b/arch/blackfin/mach-bf561/include/mach/defBF561.h | |||
| @@ -28,32 +28,29 @@ | |||
| 28 | #define CHIPID 0xFFC00014 /* Chip ID Register */ | 28 | #define CHIPID 0xFFC00014 /* Chip ID Register */ |
| 29 | 29 | ||
| 30 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ | 30 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ |
| 31 | #define SWRST SICA_SWRST | ||
| 32 | #define SYSCR SICA_SYSCR | ||
| 33 | #define DOUBLE_FAULT (DOUBLE_FAULT_B|DOUBLE_FAULT_A) | 31 | #define DOUBLE_FAULT (DOUBLE_FAULT_B|DOUBLE_FAULT_A) |
| 34 | #define RESET_DOUBLE (SWRST_DBL_FAULT_B|SWRST_DBL_FAULT_A) | 32 | #define RESET_DOUBLE (SWRST_DBL_FAULT_B|SWRST_DBL_FAULT_A) |
| 35 | #define RESET_WDOG (SWRST_WDT_B|SWRST_WDT_A) | 33 | #define RESET_WDOG (SWRST_WDT_B|SWRST_WDT_A) |
| 36 | #define RESET_SOFTWARE (SWRST_OCCURRED) | 34 | #define RESET_SOFTWARE (SWRST_OCCURRED) |
| 37 | 35 | ||
| 38 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ | 36 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ |
| 39 | #define SICA_SWRST 0xFFC00100 /* Software Reset register */ | 37 | #define SWRST 0xFFC00100 /* Software Reset register */ |
| 40 | #define SICA_SYSCR 0xFFC00104 /* System Reset Configuration register */ | 38 | #define SYSCR 0xFFC00104 /* System Reset Configuration register */ |
| 41 | #define SICA_RVECT 0xFFC00108 /* SIC Reset Vector Address Register */ | 39 | #define SIC_RVECT 0xFFC00108 /* SIC Reset Vector Address Register */ |
| 42 | #define SICA_IMASK 0xFFC0010C /* SIC Interrupt Mask register 0 - hack to fix old tests */ | 40 | #define SIC_IMASK0 0xFFC0010C /* SIC Interrupt Mask register 0 */ |
| 43 | #define SICA_IMASK0 0xFFC0010C /* SIC Interrupt Mask register 0 */ | 41 | #define SIC_IMASK1 0xFFC00110 /* SIC Interrupt Mask register 1 */ |
| 44 | #define SICA_IMASK1 0xFFC00110 /* SIC Interrupt Mask register 1 */ | 42 | #define SIC_IAR0 0xFFC00124 /* SIC Interrupt Assignment Register 0 */ |
| 45 | #define SICA_IAR0 0xFFC00124 /* SIC Interrupt Assignment Register 0 */ | 43 | #define SIC_IAR1 0xFFC00128 /* SIC Interrupt Assignment Register 1 */ |
| 46 | #define SICA_IAR1 0xFFC00128 /* SIC Interrupt Assignment Register 1 */ | 44 | #define SIC_IAR2 0xFFC0012C /* SIC Interrupt Assignment Register 2 */ |
| 47 | #define SICA_IAR2 0xFFC0012C /* SIC Interrupt Assignment Register 2 */ | 45 | #define SIC_IAR3 0xFFC00130 /* SIC Interrupt Assignment Register 3 */ |
| 48 | #define SICA_IAR3 0xFFC00130 /* SIC Interrupt Assignment Register 3 */ | 46 | #define SIC_IAR4 0xFFC00134 /* SIC Interrupt Assignment Register 4 */ |
| 49 | #define SICA_IAR4 0xFFC00134 /* SIC Interrupt Assignment Register 4 */ | 47 | #define SIC_IAR5 0xFFC00138 /* SIC Interrupt Assignment Register 5 */ |
| 50 | #define SICA_IAR5 0xFFC00138 /* SIC Interrupt Assignment Register 5 */ | 48 | #define SIC_IAR6 0xFFC0013C /* SIC Interrupt Assignment Register 6 */ |
| 51 | #define SICA_IAR6 0xFFC0013C /* SIC Interrupt Assignment Register 6 */ | 49 | #define SIC_IAR7 0xFFC00140 /* SIC Interrupt Assignment Register 7 */ |
| 52 | #define SICA_IAR7 0xFFC00140 /* SIC Interrupt Assignment Register 7 */ | 50 | #define SIC_ISR0 0xFFC00114 /* SIC Interrupt Status register 0 */ |
| 53 | #define SICA_ISR0 0xFFC00114 /* SIC Interrupt Status register 0 */ | 51 | #define SIC_ISR1 0xFFC00118 /* SIC Interrupt Status register 1 */ |
| 54 | #define SICA_ISR1 0xFFC00118 /* SIC Interrupt Status register 1 */ | 52 | #define SIC_IWR0 0xFFC0011C /* SIC Interrupt Wakeup-Enable register 0 */ |
| 55 | #define SICA_IWR0 0xFFC0011C /* SIC Interrupt Wakeup-Enable register 0 */ | 53 | #define SIC_IWR1 0xFFC00120 /* SIC Interrupt Wakeup-Enable register 1 */ |
| 56 | #define SICA_IWR1 0xFFC00120 /* SIC Interrupt Wakeup-Enable register 1 */ | ||
| 57 | 54 | ||
| 58 | /* System Reset and Interrupt Controller registers for Core B (0xFFC0 1100-0xFFC0 11FF) */ | 55 | /* System Reset and Interrupt Controller registers for Core B (0xFFC0 1100-0xFFC0 11FF) */ |
| 59 | #define SICB_SWRST 0xFFC01100 /* reserved */ | 56 | #define SICB_SWRST 0xFFC01100 /* reserved */ |
| @@ -1271,63 +1268,6 @@ | |||
| 1271 | #define PF14_P 14 | 1268 | #define PF14_P 14 |
| 1272 | #define PF15_P 15 | 1269 | #define PF15_P 15 |
| 1273 | 1270 | ||
| 1274 | /* *********** SERIAL PERIPHERAL INTERFACE (SPI) MASKS **************** */ | ||
| 1275 | |||
| 1276 | /* SPI_CTL Masks */ | ||
| 1277 | #define TIMOD 0x00000003 /* Transfer initiation mode and interrupt generation */ | ||
| 1278 | #define SZ 0x00000004 /* Send Zero (=0) or last (=1) word when TDBR empty. */ | ||
| 1279 | #define GM 0x00000008 /* When RDBR full, get more (=1) data or discard (=0) incoming Data */ | ||
| 1280 | #define PSSE 0x00000010 /* Enable (=1) Slave-Select input for Master. */ | ||
| 1281 | #define EMISO 0x00000020 /* Enable (=1) MISO pin as an output. */ | ||
| 1282 | #define SIZE 0x00000100 /* Word length (0 => 8 bits, 1 => 16 bits) */ | ||
| 1283 | #define LSBF 0x00000200 /* Data format (0 => MSB sent/received first 1 => LSB sent/received first) */ | ||
| 1284 | #define CPHA 0x00000400 /* Clock phase (0 => SPICLK starts toggling in middle of xfer, 1 => SPICLK toggles at the beginning of xfer. */ | ||
| 1285 | #define CPOL 0x00000800 /* Clock polarity (0 => active-high, 1 => active-low) */ | ||
| 1286 | #define MSTR 0x00001000 /* Configures SPI as master (=1) or slave (=0) */ | ||
| 1287 | #define WOM 0x00002000 /* Open drain (=1) data output enable (for MOSI and MISO) */ | ||
| 1288 | #define SPE 0x00004000 /* SPI module enable (=1), disable (=0) */ | ||
| 1289 | |||
| 1290 | /* SPI_FLG Masks */ | ||
| 1291 | #define FLS1 0x00000002 /* Enables (=1) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1292 | #define FLS2 0x00000004 /* Enables (=1) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1293 | #define FLS3 0x00000008 /* Enables (=1) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1294 | #define FLS4 0x00000010 /* Enables (=1) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1295 | #define FLS5 0x00000020 /* Enables (=1) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1296 | #define FLS6 0x00000040 /* Enables (=1) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1297 | #define FLS7 0x00000080 /* Enables (=1) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1298 | #define FLG1 0x00000200 /* Activates (=0) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1299 | #define FLG2 0x00000400 /* Activates (=0) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1300 | #define FLG3 0x00000800 /* Activates (=0) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1301 | #define FLG4 0x00001000 /* Activates (=0) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1302 | #define FLG5 0x00002000 /* Activates (=0) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1303 | #define FLG6 0x00004000 /* Activates (=0) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1304 | #define FLG7 0x00008000 /* Activates (=0) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1305 | |||
| 1306 | /* SPI_FLG Bit Positions */ | ||
| 1307 | #define FLS1_P 0x00000001 /* Enables (=1) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1308 | #define FLS2_P 0x00000002 /* Enables (=1) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1309 | #define FLS3_P 0x00000003 /* Enables (=1) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1310 | #define FLS4_P 0x00000004 /* Enables (=1) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1311 | #define FLS5_P 0x00000005 /* Enables (=1) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1312 | #define FLS6_P 0x00000006 /* Enables (=1) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1313 | #define FLS7_P 0x00000007 /* Enables (=1) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1314 | #define FLG1_P 0x00000009 /* Activates (=0) SPI_FLOUT1 as flag output for SPI Slave-select */ | ||
| 1315 | #define FLG2_P 0x0000000A /* Activates (=0) SPI_FLOUT2 as flag output for SPI Slave-select */ | ||
| 1316 | #define FLG3_P 0x0000000B /* Activates (=0) SPI_FLOUT3 as flag output for SPI Slave-select */ | ||
| 1317 | #define FLG4_P 0x0000000C /* Activates (=0) SPI_FLOUT4 as flag output for SPI Slave-select */ | ||
| 1318 | #define FLG5_P 0x0000000D /* Activates (=0) SPI_FLOUT5 as flag output for SPI Slave-select */ | ||
| 1319 | #define FLG6_P 0x0000000E /* Activates (=0) SPI_FLOUT6 as flag output for SPI Slave-select */ | ||
| 1320 | #define FLG7_P 0x0000000F /* Activates (=0) SPI_FLOUT7 as flag output for SPI Slave-select */ | ||
| 1321 | |||
| 1322 | /* SPI_STAT Masks */ | ||
| 1323 | #define SPIF 0x00000001 /* Set (=1) when SPI single-word transfer complete */ | ||
| 1324 | #define MODF 0x00000002 /* Set (=1) in a master device when some other device tries to become master */ | ||
| 1325 | #define TXE 0x00000004 /* Set (=1) when transmission occurs with no new data in SPI_TDBR */ | ||
| 1326 | #define TXS 0x00000008 /* SPI_TDBR Data Buffer Status (0=Empty, 1=Full) */ | ||
| 1327 | #define RBSY 0x00000010 /* Set (=1) when data is received with RDBR full */ | ||
| 1328 | #define RXS 0x00000020 /* SPI_RDBR Data Buffer Status (0=Empty, 1=Full) */ | ||
| 1329 | #define TXCOL 0x00000040 /* When set (=1), corrupt data may have been transmitted */ | ||
| 1330 | |||
| 1331 | /* ********************* ASYNCHRONOUS MEMORY CONTROLLER MASKS ************* */ | 1271 | /* ********************* ASYNCHRONOUS MEMORY CONTROLLER MASKS ************* */ |
| 1332 | 1272 | ||
| 1333 | /* AMGCTL Masks */ | 1273 | /* AMGCTL Masks */ |
diff --git a/arch/blackfin/mach-bf561/ints-priority.c b/arch/blackfin/mach-bf561/ints-priority.c index b4424172ad9e..7ee9262fe132 100644 --- a/arch/blackfin/mach-bf561/ints-priority.c +++ b/arch/blackfin/mach-bf561/ints-priority.c | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | void __init program_IAR(void) | 13 | void __init program_IAR(void) |
| 14 | { | 14 | { |
| 15 | /* Program the IAR0 Register with the configured priority */ | 15 | /* Program the IAR0 Register with the configured priority */ |
| 16 | bfin_write_SICA_IAR0(((CONFIG_IRQ_PLL_WAKEUP - 7) << IRQ_PLL_WAKEUP_POS) | | 16 | bfin_write_SIC_IAR0(((CONFIG_IRQ_PLL_WAKEUP - 7) << IRQ_PLL_WAKEUP_POS) | |
| 17 | ((CONFIG_IRQ_DMA1_ERROR - 7) << IRQ_DMA1_ERROR_POS) | | 17 | ((CONFIG_IRQ_DMA1_ERROR - 7) << IRQ_DMA1_ERROR_POS) | |
| 18 | ((CONFIG_IRQ_DMA2_ERROR - 7) << IRQ_DMA2_ERROR_POS) | | 18 | ((CONFIG_IRQ_DMA2_ERROR - 7) << IRQ_DMA2_ERROR_POS) | |
| 19 | ((CONFIG_IRQ_IMDMA_ERROR - 7) << IRQ_IMDMA_ERROR_POS) | | 19 | ((CONFIG_IRQ_IMDMA_ERROR - 7) << IRQ_IMDMA_ERROR_POS) | |
| @@ -22,7 +22,7 @@ void __init program_IAR(void) | |||
| 22 | ((CONFIG_IRQ_SPORT0_ERROR - 7) << IRQ_SPORT0_ERROR_POS) | | 22 | ((CONFIG_IRQ_SPORT0_ERROR - 7) << IRQ_SPORT0_ERROR_POS) | |
| 23 | ((CONFIG_IRQ_SPORT1_ERROR - 7) << IRQ_SPORT1_ERROR_POS)); | 23 | ((CONFIG_IRQ_SPORT1_ERROR - 7) << IRQ_SPORT1_ERROR_POS)); |
| 24 | 24 | ||
| 25 | bfin_write_SICA_IAR1(((CONFIG_IRQ_SPI_ERROR - 7) << IRQ_SPI_ERROR_POS) | | 25 | bfin_write_SIC_IAR1(((CONFIG_IRQ_SPI_ERROR - 7) << IRQ_SPI_ERROR_POS) | |
| 26 | ((CONFIG_IRQ_UART_ERROR - 7) << IRQ_UART_ERROR_POS) | | 26 | ((CONFIG_IRQ_UART_ERROR - 7) << IRQ_UART_ERROR_POS) | |
| 27 | ((CONFIG_IRQ_RESERVED_ERROR - 7) << IRQ_RESERVED_ERROR_POS) | | 27 | ((CONFIG_IRQ_RESERVED_ERROR - 7) << IRQ_RESERVED_ERROR_POS) | |
| 28 | ((CONFIG_IRQ_DMA1_0 - 7) << IRQ_DMA1_0_POS) | | 28 | ((CONFIG_IRQ_DMA1_0 - 7) << IRQ_DMA1_0_POS) | |
| @@ -31,7 +31,7 @@ void __init program_IAR(void) | |||
| 31 | ((CONFIG_IRQ_DMA1_3 - 7) << IRQ_DMA1_3_POS) | | 31 | ((CONFIG_IRQ_DMA1_3 - 7) << IRQ_DMA1_3_POS) | |
| 32 | ((CONFIG_IRQ_DMA1_4 - 7) << IRQ_DMA1_4_POS)); | 32 | ((CONFIG_IRQ_DMA1_4 - 7) << IRQ_DMA1_4_POS)); |
| 33 | 33 | ||
| 34 | bfin_write_SICA_IAR2(((CONFIG_IRQ_DMA1_5 - 7) << IRQ_DMA1_5_POS) | | 34 | bfin_write_SIC_IAR2(((CONFIG_IRQ_DMA1_5 - 7) << IRQ_DMA1_5_POS) | |
| 35 | ((CONFIG_IRQ_DMA1_6 - 7) << IRQ_DMA1_6_POS) | | 35 | ((CONFIG_IRQ_DMA1_6 - 7) << IRQ_DMA1_6_POS) | |
| 36 | ((CONFIG_IRQ_DMA1_7 - 7) << IRQ_DMA1_7_POS) | | 36 | ((CONFIG_IRQ_DMA1_7 - 7) << IRQ_DMA1_7_POS) | |
| 37 | ((CONFIG_IRQ_DMA1_8 - 7) << IRQ_DMA1_8_POS) | | 37 | ((CONFIG_IRQ_DMA1_8 - 7) << IRQ_DMA1_8_POS) | |
| @@ -40,7 +40,7 @@ void __init program_IAR(void) | |||
| 40 | ((CONFIG_IRQ_DMA1_11 - 7) << IRQ_DMA1_11_POS) | | 40 | ((CONFIG_IRQ_DMA1_11 - 7) << IRQ_DMA1_11_POS) | |
| 41 | ((CONFIG_IRQ_DMA2_0 - 7) << IRQ_DMA2_0_POS)); | 41 | ((CONFIG_IRQ_DMA2_0 - 7) << IRQ_DMA2_0_POS)); |
| 42 | 42 | ||
| 43 | bfin_write_SICA_IAR3(((CONFIG_IRQ_DMA2_1 - 7) << IRQ_DMA2_1_POS) | | 43 | bfin_write_SIC_IAR3(((CONFIG_IRQ_DMA2_1 - 7) << IRQ_DMA2_1_POS) | |
| 44 | ((CONFIG_IRQ_DMA2_2 - 7) << IRQ_DMA2_2_POS) | | 44 | ((CONFIG_IRQ_DMA2_2 - 7) << IRQ_DMA2_2_POS) | |
| 45 | ((CONFIG_IRQ_DMA2_3 - 7) << IRQ_DMA2_3_POS) | | 45 | ((CONFIG_IRQ_DMA2_3 - 7) << IRQ_DMA2_3_POS) | |
| 46 | ((CONFIG_IRQ_DMA2_4 - 7) << IRQ_DMA2_4_POS) | | 46 | ((CONFIG_IRQ_DMA2_4 - 7) << IRQ_DMA2_4_POS) | |
| @@ -49,7 +49,7 @@ void __init program_IAR(void) | |||
| 49 | ((CONFIG_IRQ_DMA2_7 - 7) << IRQ_DMA2_7_POS) | | 49 | ((CONFIG_IRQ_DMA2_7 - 7) << IRQ_DMA2_7_POS) | |
| 50 | ((CONFIG_IRQ_DMA2_8 - 7) << IRQ_DMA2_8_POS)); | 50 | ((CONFIG_IRQ_DMA2_8 - 7) << IRQ_DMA2_8_POS)); |
| 51 | 51 | ||
| 52 | bfin_write_SICA_IAR4(((CONFIG_IRQ_DMA2_9 - 7) << IRQ_DMA2_9_POS) | | 52 | bfin_write_SIC_IAR4(((CONFIG_IRQ_DMA2_9 - 7) << IRQ_DMA2_9_POS) | |
| 53 | ((CONFIG_IRQ_DMA2_10 - 7) << IRQ_DMA2_10_POS) | | 53 | ((CONFIG_IRQ_DMA2_10 - 7) << IRQ_DMA2_10_POS) | |
| 54 | ((CONFIG_IRQ_DMA2_11 - 7) << IRQ_DMA2_11_POS) | | 54 | ((CONFIG_IRQ_DMA2_11 - 7) << IRQ_DMA2_11_POS) | |
| 55 | ((CONFIG_IRQ_TIMER0 - 7) << IRQ_TIMER0_POS) | | 55 | ((CONFIG_IRQ_TIMER0 - 7) << IRQ_TIMER0_POS) | |
| @@ -58,7 +58,7 @@ void __init program_IAR(void) | |||
| 58 | ((CONFIG_IRQ_TIMER3 - 7) << IRQ_TIMER3_POS) | | 58 | ((CONFIG_IRQ_TIMER3 - 7) << IRQ_TIMER3_POS) | |
| 59 | ((CONFIG_IRQ_TIMER4 - 7) << IRQ_TIMER4_POS)); | 59 | ((CONFIG_IRQ_TIMER4 - 7) << IRQ_TIMER4_POS)); |
| 60 | 60 | ||
| 61 | bfin_write_SICA_IAR5(((CONFIG_IRQ_TIMER5 - 7) << IRQ_TIMER5_POS) | | 61 | bfin_write_SIC_IAR5(((CONFIG_IRQ_TIMER5 - 7) << IRQ_TIMER5_POS) | |
| 62 | ((CONFIG_IRQ_TIMER6 - 7) << IRQ_TIMER6_POS) | | 62 | ((CONFIG_IRQ_TIMER6 - 7) << IRQ_TIMER6_POS) | |
| 63 | ((CONFIG_IRQ_TIMER7 - 7) << IRQ_TIMER7_POS) | | 63 | ((CONFIG_IRQ_TIMER7 - 7) << IRQ_TIMER7_POS) | |
| 64 | ((CONFIG_IRQ_TIMER8 - 7) << IRQ_TIMER8_POS) | | 64 | ((CONFIG_IRQ_TIMER8 - 7) << IRQ_TIMER8_POS) | |
| @@ -67,7 +67,7 @@ void __init program_IAR(void) | |||
| 67 | ((CONFIG_IRQ_TIMER11 - 7) << IRQ_TIMER11_POS) | | 67 | ((CONFIG_IRQ_TIMER11 - 7) << IRQ_TIMER11_POS) | |
| 68 | ((CONFIG_IRQ_PROG0_INTA - 7) << IRQ_PROG0_INTA_POS)); | 68 | ((CONFIG_IRQ_PROG0_INTA - 7) << IRQ_PROG0_INTA_POS)); |
| 69 | 69 | ||
| 70 | bfin_write_SICA_IAR6(((CONFIG_IRQ_PROG0_INTB - 7) << IRQ_PROG0_INTB_POS) | | 70 | bfin_write_SIC_IAR6(((CONFIG_IRQ_PROG0_INTB - 7) << IRQ_PROG0_INTB_POS) | |
| 71 | ((CONFIG_IRQ_PROG1_INTA - 7) << IRQ_PROG1_INTA_POS) | | 71 | ((CONFIG_IRQ_PROG1_INTA - 7) << IRQ_PROG1_INTA_POS) | |
| 72 | ((CONFIG_IRQ_PROG1_INTB - 7) << IRQ_PROG1_INTB_POS) | | 72 | ((CONFIG_IRQ_PROG1_INTB - 7) << IRQ_PROG1_INTB_POS) | |
| 73 | ((CONFIG_IRQ_PROG2_INTA - 7) << IRQ_PROG2_INTA_POS) | | 73 | ((CONFIG_IRQ_PROG2_INTA - 7) << IRQ_PROG2_INTA_POS) | |
| @@ -76,7 +76,7 @@ void __init program_IAR(void) | |||
| 76 | ((CONFIG_IRQ_DMA1_WRRD1 - 7) << IRQ_DMA1_WRRD1_POS) | | 76 | ((CONFIG_IRQ_DMA1_WRRD1 - 7) << IRQ_DMA1_WRRD1_POS) | |
| 77 | ((CONFIG_IRQ_DMA2_WRRD0 - 7) << IRQ_DMA2_WRRD0_POS)); | 77 | ((CONFIG_IRQ_DMA2_WRRD0 - 7) << IRQ_DMA2_WRRD0_POS)); |
| 78 | 78 | ||
| 79 | bfin_write_SICA_IAR7(((CONFIG_IRQ_DMA2_WRRD1 - 7) << IRQ_DMA2_WRRD1_POS) | | 79 | bfin_write_SIC_IAR7(((CONFIG_IRQ_DMA2_WRRD1 - 7) << IRQ_DMA2_WRRD1_POS) | |
| 80 | ((CONFIG_IRQ_IMDMA_WRRD0 - 7) << IRQ_IMDMA_WRRD0_POS) | | 80 | ((CONFIG_IRQ_IMDMA_WRRD0 - 7) << IRQ_IMDMA_WRRD0_POS) | |
| 81 | ((CONFIG_IRQ_IMDMA_WRRD1 - 7) << IRQ_IMDMA_WRRD1_POS) | | 81 | ((CONFIG_IRQ_IMDMA_WRRD1 - 7) << IRQ_IMDMA_WRRD1_POS) | |
| 82 | ((CONFIG_IRQ_WDTIMER - 7) << IRQ_WDTIMER_POS) | | 82 | ((CONFIG_IRQ_WDTIMER - 7) << IRQ_WDTIMER_POS) | |
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c index 3b9a4bf7dacc..f540ed1257d6 100644 --- a/arch/blackfin/mach-bf561/smp.c +++ b/arch/blackfin/mach-bf561/smp.c | |||
| @@ -52,19 +52,19 @@ int __init setup_profiling_timer(unsigned int multiplier) /* not supported */ | |||
| 52 | void __cpuinit platform_secondary_init(unsigned int cpu) | 52 | void __cpuinit platform_secondary_init(unsigned int cpu) |
| 53 | { | 53 | { |
| 54 | /* Clone setup for peripheral interrupt sources from CoreA. */ | 54 | /* Clone setup for peripheral interrupt sources from CoreA. */ |
| 55 | bfin_write_SICB_IMASK0(bfin_read_SICA_IMASK0()); | 55 | bfin_write_SICB_IMASK0(bfin_read_SIC_IMASK0()); |
| 56 | bfin_write_SICB_IMASK1(bfin_read_SICA_IMASK1()); | 56 | bfin_write_SICB_IMASK1(bfin_read_SIC_IMASK1()); |
| 57 | SSYNC(); | 57 | SSYNC(); |
| 58 | 58 | ||
| 59 | /* Clone setup for IARs from CoreA. */ | 59 | /* Clone setup for IARs from CoreA. */ |
| 60 | bfin_write_SICB_IAR0(bfin_read_SICA_IAR0()); | 60 | bfin_write_SICB_IAR0(bfin_read_SIC_IAR0()); |
| 61 | bfin_write_SICB_IAR1(bfin_read_SICA_IAR1()); | 61 | bfin_write_SICB_IAR1(bfin_read_SIC_IAR1()); |
| 62 | bfin_write_SICB_IAR2(bfin_read_SICA_IAR2()); | 62 | bfin_write_SICB_IAR2(bfin_read_SIC_IAR2()); |
| 63 | bfin_write_SICB_IAR3(bfin_read_SICA_IAR3()); | 63 | bfin_write_SICB_IAR3(bfin_read_SIC_IAR3()); |
| 64 | bfin_write_SICB_IAR4(bfin_read_SICA_IAR4()); | 64 | bfin_write_SICB_IAR4(bfin_read_SIC_IAR4()); |
| 65 | bfin_write_SICB_IAR5(bfin_read_SICA_IAR5()); | 65 | bfin_write_SICB_IAR5(bfin_read_SIC_IAR5()); |
| 66 | bfin_write_SICB_IAR6(bfin_read_SICA_IAR6()); | 66 | bfin_write_SICB_IAR6(bfin_read_SIC_IAR6()); |
| 67 | bfin_write_SICB_IAR7(bfin_read_SICA_IAR7()); | 67 | bfin_write_SICB_IAR7(bfin_read_SIC_IAR7()); |
| 68 | bfin_write_SICB_IWR0(IWR_DISABLE_ALL); | 68 | bfin_write_SICB_IWR0(IWR_DISABLE_ALL); |
| 69 | bfin_write_SICB_IWR1(IWR_DISABLE_ALL); | 69 | bfin_write_SICB_IWR1(IWR_DISABLE_ALL); |
| 70 | SSYNC(); | 70 | SSYNC(); |
| @@ -86,12 +86,12 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle | |||
| 86 | 86 | ||
| 87 | spin_lock(&boot_lock); | 87 | spin_lock(&boot_lock); |
| 88 | 88 | ||
| 89 | if ((bfin_read_SICA_SYSCR() & COREB_SRAM_INIT) == 0) { | 89 | if ((bfin_read_SIC_SYSCR() & COREB_SRAM_INIT) == 0) { |
| 90 | /* CoreB already running, sending ipi to wakeup it */ | 90 | /* CoreB already running, sending ipi to wakeup it */ |
| 91 | platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0); | 91 | platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0); |
| 92 | } else { | 92 | } else { |
| 93 | /* Kick CoreB, which should start execution from CORE_SRAM_BASE. */ | 93 | /* Kick CoreB, which should start execution from CORE_SRAM_BASE. */ |
| 94 | bfin_write_SICA_SYSCR(bfin_read_SICA_SYSCR() & ~COREB_SRAM_INIT); | 94 | bfin_write_SIC_SYSCR(bfin_read_SIC_SYSCR() & ~COREB_SRAM_INIT); |
| 95 | SSYNC(); | 95 | SSYNC(); |
| 96 | } | 96 | } |
| 97 | 97 | ||
diff --git a/arch/blackfin/mach-common/dpmc_modes.S b/arch/blackfin/mach-common/dpmc_modes.S index 5969d86836a5..9cfdd49a3127 100644 --- a/arch/blackfin/mach-common/dpmc_modes.S +++ b/arch/blackfin/mach-common/dpmc_modes.S | |||
| @@ -292,13 +292,7 @@ ENTRY(_do_hibernate) | |||
| 292 | #ifdef SIC_IMASK | 292 | #ifdef SIC_IMASK |
| 293 | PM_SYS_PUSH(SIC_IMASK) | 293 | PM_SYS_PUSH(SIC_IMASK) |
| 294 | #endif | 294 | #endif |
| 295 | #ifdef SICA_IMASK0 | 295 | #ifdef SIC_IAR0 |
| 296 | PM_SYS_PUSH(SICA_IMASK0) | ||
| 297 | #endif | ||
| 298 | #ifdef SICA_IMASK1 | ||
| 299 | PM_SYS_PUSH(SICA_IMASK1) | ||
| 300 | #endif | ||
| 301 | #ifdef SIC_IAR2 | ||
| 302 | PM_SYS_PUSH(SIC_IAR0) | 296 | PM_SYS_PUSH(SIC_IAR0) |
| 303 | PM_SYS_PUSH(SIC_IAR1) | 297 | PM_SYS_PUSH(SIC_IAR1) |
| 304 | PM_SYS_PUSH(SIC_IAR2) | 298 | PM_SYS_PUSH(SIC_IAR2) |
| @@ -321,17 +315,6 @@ ENTRY(_do_hibernate) | |||
| 321 | PM_SYS_PUSH(SIC_IAR11) | 315 | PM_SYS_PUSH(SIC_IAR11) |
| 322 | #endif | 316 | #endif |
| 323 | 317 | ||
| 324 | #ifdef SICA_IAR0 | ||
| 325 | PM_SYS_PUSH(SICA_IAR0) | ||
| 326 | PM_SYS_PUSH(SICA_IAR1) | ||
| 327 | PM_SYS_PUSH(SICA_IAR2) | ||
| 328 | PM_SYS_PUSH(SICA_IAR3) | ||
| 329 | PM_SYS_PUSH(SICA_IAR4) | ||
| 330 | PM_SYS_PUSH(SICA_IAR5) | ||
| 331 | PM_SYS_PUSH(SICA_IAR6) | ||
| 332 | PM_SYS_PUSH(SICA_IAR7) | ||
| 333 | #endif | ||
| 334 | |||
| 335 | #ifdef SIC_IWR | 318 | #ifdef SIC_IWR |
| 336 | PM_SYS_PUSH(SIC_IWR) | 319 | PM_SYS_PUSH(SIC_IWR) |
| 337 | #endif | 320 | #endif |
| @@ -344,12 +327,6 @@ ENTRY(_do_hibernate) | |||
| 344 | #ifdef SIC_IWR2 | 327 | #ifdef SIC_IWR2 |
| 345 | PM_SYS_PUSH(SIC_IWR2) | 328 | PM_SYS_PUSH(SIC_IWR2) |
| 346 | #endif | 329 | #endif |
| 347 | #ifdef SICA_IWR0 | ||
| 348 | PM_SYS_PUSH(SICA_IWR0) | ||
| 349 | #endif | ||
| 350 | #ifdef SICA_IWR1 | ||
| 351 | PM_SYS_PUSH(SICA_IWR1) | ||
| 352 | #endif | ||
| 353 | 330 | ||
| 354 | #ifdef PINT0_ASSIGN | 331 | #ifdef PINT0_ASSIGN |
| 355 | PM_SYS_PUSH(PINT0_MASK_SET) | 332 | PM_SYS_PUSH(PINT0_MASK_SET) |
| @@ -750,12 +727,6 @@ ENTRY(_do_hibernate) | |||
| 750 | PM_SYS_POP(PINT0_MASK_SET) | 727 | PM_SYS_POP(PINT0_MASK_SET) |
| 751 | #endif | 728 | #endif |
| 752 | 729 | ||
| 753 | #ifdef SICA_IWR1 | ||
| 754 | PM_SYS_POP(SICA_IWR1) | ||
| 755 | #endif | ||
| 756 | #ifdef SICA_IWR0 | ||
| 757 | PM_SYS_POP(SICA_IWR0) | ||
| 758 | #endif | ||
| 759 | #ifdef SIC_IWR2 | 730 | #ifdef SIC_IWR2 |
| 760 | PM_SYS_POP(SIC_IWR2) | 731 | PM_SYS_POP(SIC_IWR2) |
| 761 | #endif | 732 | #endif |
| @@ -769,17 +740,6 @@ ENTRY(_do_hibernate) | |||
| 769 | PM_SYS_POP(SIC_IWR) | 740 | PM_SYS_POP(SIC_IWR) |
| 770 | #endif | 741 | #endif |
| 771 | 742 | ||
| 772 | #ifdef SICA_IAR0 | ||
| 773 | PM_SYS_POP(SICA_IAR7) | ||
| 774 | PM_SYS_POP(SICA_IAR6) | ||
| 775 | PM_SYS_POP(SICA_IAR5) | ||
| 776 | PM_SYS_POP(SICA_IAR4) | ||
| 777 | PM_SYS_POP(SICA_IAR3) | ||
| 778 | PM_SYS_POP(SICA_IAR2) | ||
| 779 | PM_SYS_POP(SICA_IAR1) | ||
| 780 | PM_SYS_POP(SICA_IAR0) | ||
| 781 | #endif | ||
| 782 | |||
| 783 | #ifdef SIC_IAR8 | 743 | #ifdef SIC_IAR8 |
| 784 | PM_SYS_POP(SIC_IAR11) | 744 | PM_SYS_POP(SIC_IAR11) |
| 785 | PM_SYS_POP(SIC_IAR10) | 745 | PM_SYS_POP(SIC_IAR10) |
| @@ -797,17 +757,11 @@ ENTRY(_do_hibernate) | |||
| 797 | #ifdef SIC_IAR3 | 757 | #ifdef SIC_IAR3 |
| 798 | PM_SYS_POP(SIC_IAR3) | 758 | PM_SYS_POP(SIC_IAR3) |
| 799 | #endif | 759 | #endif |
| 800 | #ifdef SIC_IAR2 | 760 | #ifdef SIC_IAR0 |
| 801 | PM_SYS_POP(SIC_IAR2) | 761 | PM_SYS_POP(SIC_IAR2) |
| 802 | PM_SYS_POP(SIC_IAR1) | 762 | PM_SYS_POP(SIC_IAR1) |
| 803 | PM_SYS_POP(SIC_IAR0) | 763 | PM_SYS_POP(SIC_IAR0) |
| 804 | #endif | 764 | #endif |
| 805 | #ifdef SICA_IMASK1 | ||
| 806 | PM_SYS_POP(SICA_IMASK1) | ||
| 807 | #endif | ||
| 808 | #ifdef SICA_IMASK0 | ||
| 809 | PM_SYS_POP(SICA_IMASK0) | ||
| 810 | #endif | ||
| 811 | #ifdef SIC_IMASK | 765 | #ifdef SIC_IMASK |
| 812 | PM_SYS_POP(SIC_IMASK) | 766 | PM_SYS_POP(SIC_IMASK) |
| 813 | #endif | 767 | #endif |
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index af1bffa21dc1..2ca915ee181f 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
| @@ -889,6 +889,66 @@ ENTRY(_ret_from_exception) | |||
| 889 | rts; | 889 | rts; |
| 890 | ENDPROC(_ret_from_exception) | 890 | ENDPROC(_ret_from_exception) |
| 891 | 891 | ||
| 892 | #if defined(CONFIG_PREEMPT) | ||
| 893 | |||
| 894 | ENTRY(_up_to_irq14) | ||
| 895 | #if ANOMALY_05000281 || ANOMALY_05000461 | ||
| 896 | r0.l = lo(SAFE_USER_INSTRUCTION); | ||
| 897 | r0.h = hi(SAFE_USER_INSTRUCTION); | ||
| 898 | reti = r0; | ||
| 899 | #endif | ||
| 900 | |||
| 901 | #ifdef CONFIG_DEBUG_HWERR | ||
| 902 | /* enable irq14 & hwerr interrupt, until we transition to _evt_evt14 */ | ||
| 903 | r0 = (EVT_IVG14 | EVT_IVHW | EVT_IRPTEN | EVT_EVX | EVT_NMI | EVT_RST | EVT_EMU); | ||
| 904 | #else | ||
| 905 | /* Only enable irq14 interrupt, until we transition to _evt_evt14 */ | ||
| 906 | r0 = (EVT_IVG14 | EVT_IRPTEN | EVT_EVX | EVT_NMI | EVT_RST | EVT_EMU); | ||
| 907 | #endif | ||
| 908 | sti r0; | ||
| 909 | |||
| 910 | p0.l = lo(EVT14); | ||
| 911 | p0.h = hi(EVT14); | ||
| 912 | p1.l = _evt_up_evt14; | ||
| 913 | p1.h = _evt_up_evt14; | ||
| 914 | [p0] = p1; | ||
| 915 | csync; | ||
| 916 | |||
| 917 | raise 14; | ||
| 918 | 1: | ||
| 919 | jump 1b; | ||
| 920 | ENDPROC(_up_to_irq14) | ||
| 921 | |||
| 922 | ENTRY(_evt_up_evt14) | ||
| 923 | #ifdef CONFIG_DEBUG_HWERR | ||
| 924 | r0 = (EVT_IVHW | EVT_IRPTEN | EVT_EVX | EVT_NMI | EVT_RST | EVT_EMU); | ||
| 925 | sti r0; | ||
| 926 | #else | ||
| 927 | cli r0; | ||
| 928 | #endif | ||
| 929 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
| 930 | [--sp] = rets; | ||
| 931 | sp += -12; | ||
| 932 | call _trace_hardirqs_off; | ||
| 933 | sp += 12; | ||
| 934 | rets = [sp++]; | ||
| 935 | #endif | ||
| 936 | [--sp] = RETI; | ||
| 937 | SP += 4; | ||
| 938 | |||
| 939 | /* restore normal evt14 */ | ||
| 940 | p0.l = lo(EVT14); | ||
| 941 | p0.h = hi(EVT14); | ||
| 942 | p1.l = _evt_evt14; | ||
| 943 | p1.h = _evt_evt14; | ||
| 944 | [p0] = p1; | ||
| 945 | csync; | ||
| 946 | |||
| 947 | rts; | ||
| 948 | ENDPROC(_evt_up_evt14) | ||
| 949 | |||
| 950 | #endif | ||
| 951 | |||
| 892 | #ifdef CONFIG_IPIPE | 952 | #ifdef CONFIG_IPIPE |
| 893 | 953 | ||
| 894 | _resume_kernel_from_int: | 954 | _resume_kernel_from_int: |
| @@ -902,8 +962,54 @@ _resume_kernel_from_int: | |||
| 902 | ( r7:4, p5:3 ) = [sp++]; | 962 | ( r7:4, p5:3 ) = [sp++]; |
| 903 | rets = [sp++]; | 963 | rets = [sp++]; |
| 904 | rts | 964 | rts |
| 965 | #elif defined(CONFIG_PREEMPT) | ||
| 966 | |||
| 967 | _resume_kernel_from_int: | ||
| 968 | /* check preempt_count */ | ||
| 969 | r7 = sp; | ||
| 970 | r4.l = lo(ALIGN_PAGE_MASK); | ||
| 971 | r4.h = hi(ALIGN_PAGE_MASK); | ||
| 972 | r7 = r7 & r4; | ||
| 973 | p5 = r7; | ||
| 974 | r7 = [p5 + TI_PREEMPT]; | ||
| 975 | cc = r7 == 0x0; | ||
| 976 | if !cc jump .Lreturn_to_kernel; | ||
| 977 | .Lneed_schedule: | ||
| 978 | r7 = [p5 + TI_FLAGS]; | ||
| 979 | r4.l = lo(_TIF_WORK_MASK); | ||
| 980 | r4.h = hi(_TIF_WORK_MASK); | ||
| 981 | r7 = r7 & r4; | ||
| 982 | cc = BITTST(r7, TIF_NEED_RESCHED); | ||
| 983 | if !cc jump .Lreturn_to_kernel; | ||
| 984 | /* | ||
| 985 | * let schedule done at level 15, otherwise sheduled process will run | ||
| 986 | * at high level and block low level interrupt | ||
| 987 | */ | ||
| 988 | r6 = reti; /* save reti */ | ||
| 989 | r5.l = .Lkernel_schedule; | ||
| 990 | r5.h = .Lkernel_schedule; | ||
| 991 | reti = r5; | ||
| 992 | rti; | ||
| 993 | .Lkernel_schedule: | ||
| 994 | [--sp] = rets; | ||
| 995 | sp += -12; | ||
| 996 | pseudo_long_call _preempt_schedule_irq, p4; | ||
| 997 | sp += 12; | ||
| 998 | rets = [sp++]; | ||
| 999 | |||
| 1000 | [--sp] = rets; | ||
| 1001 | sp += -12; | ||
| 1002 | /* up to irq14 so that reti after restore_all can return to irq15(kernel) */ | ||
| 1003 | pseudo_long_call _up_to_irq14, p4; | ||
| 1004 | sp += 12; | ||
| 1005 | rets = [sp++]; | ||
| 1006 | |||
| 1007 | reti = r6; /* restore reti so that origin process can return to interrupted point */ | ||
| 1008 | |||
| 1009 | jump .Lneed_schedule; | ||
| 905 | #else | 1010 | #else |
| 906 | #define _resume_kernel_from_int 2f | 1011 | |
| 1012 | #define _resume_kernel_from_int .Lreturn_to_kernel | ||
| 907 | #endif | 1013 | #endif |
| 908 | 1014 | ||
| 909 | ENTRY(_return_from_int) | 1015 | ENTRY(_return_from_int) |
| @@ -913,7 +1019,7 @@ ENTRY(_return_from_int) | |||
| 913 | p2.h = hi(ILAT); | 1019 | p2.h = hi(ILAT); |
| 914 | r0 = [p2]; | 1020 | r0 = [p2]; |
| 915 | cc = bittst (r0, EVT_IVG15_P); | 1021 | cc = bittst (r0, EVT_IVG15_P); |
| 916 | if cc jump 2f; | 1022 | if cc jump .Lreturn_to_kernel; |
| 917 | 1023 | ||
| 918 | /* if not return to user mode, get out */ | 1024 | /* if not return to user mode, get out */ |
| 919 | p2.l = lo(IPEND); | 1025 | p2.l = lo(IPEND); |
| @@ -945,7 +1051,7 @@ ENTRY(_return_from_int) | |||
| 945 | STI r0; | 1051 | STI r0; |
| 946 | raise 15; /* raise evt15 to do signal or reschedule */ | 1052 | raise 15; /* raise evt15 to do signal or reschedule */ |
| 947 | rti; | 1053 | rti; |
| 948 | 2: | 1054 | .Lreturn_to_kernel: |
| 949 | rts; | 1055 | rts; |
| 950 | ENDPROC(_return_from_int) | 1056 | ENDPROC(_return_from_int) |
| 951 | 1057 | ||
| @@ -1631,6 +1737,7 @@ ENTRY(_sys_call_table) | |||
| 1631 | .long _sys_fanotify_init | 1737 | .long _sys_fanotify_init |
| 1632 | .long _sys_fanotify_mark | 1738 | .long _sys_fanotify_mark |
| 1633 | .long _sys_prlimit64 | 1739 | .long _sys_prlimit64 |
| 1740 | .long _sys_cacheflush | ||
| 1634 | 1741 | ||
| 1635 | .rept NR_syscalls-(.-_sys_call_table)/4 | 1742 | .rept NR_syscalls-(.-_sys_call_table)/4 |
| 1636 | .long _sys_ni_syscall | 1743 | .long _sys_ni_syscall |
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S index cee62cf4acd4..2df37db3b49b 100644 --- a/arch/blackfin/mach-common/interrupt.S +++ b/arch/blackfin/mach-common/interrupt.S | |||
| @@ -116,7 +116,24 @@ __common_int_entry: | |||
| 116 | cc = r0 == 0; | 116 | cc = r0 == 0; |
| 117 | if cc jump .Lcommon_restore_context; | 117 | if cc jump .Lcommon_restore_context; |
| 118 | #else /* CONFIG_IPIPE */ | 118 | #else /* CONFIG_IPIPE */ |
| 119 | |||
| 120 | #ifdef CONFIG_PREEMPT | ||
| 121 | r7 = sp; | ||
| 122 | r4.l = lo(ALIGN_PAGE_MASK); | ||
| 123 | r4.h = hi(ALIGN_PAGE_MASK); | ||
| 124 | r7 = r7 & r4; | ||
| 125 | p5 = r7; | ||
| 126 | r7 = [p5 + TI_PREEMPT]; /* get preempt count */ | ||
| 127 | r7 += 1; /* increment it */ | ||
| 128 | [p5 + TI_PREEMPT] = r7; | ||
| 129 | #endif | ||
| 119 | pseudo_long_call _do_irq, p2; | 130 | pseudo_long_call _do_irq, p2; |
| 131 | |||
| 132 | #ifdef CONFIG_PREEMPT | ||
| 133 | r7 += -1; | ||
| 134 | [p5 + TI_PREEMPT] = r7; /* restore preempt count */ | ||
| 135 | #endif | ||
| 136 | |||
| 120 | SP += 12; | 137 | SP += 12; |
| 121 | #endif /* CONFIG_IPIPE */ | 138 | #endif /* CONFIG_IPIPE */ |
| 122 | pseudo_long_call _return_from_int, p2; | 139 | pseudo_long_call _return_from_int, p2; |
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c index eaece5f84e42..da7e3c63746b 100644 --- a/arch/blackfin/mach-common/ints-priority.c +++ b/arch/blackfin/mach-common/ints-priority.c | |||
| @@ -511,7 +511,7 @@ static void bfin_demux_mac_status_irq(unsigned int int_err_irq, | |||
| 511 | int i, irq = 0; | 511 | int i, irq = 0; |
| 512 | u32 status = bfin_read_EMAC_SYSTAT(); | 512 | u32 status = bfin_read_EMAC_SYSTAT(); |
| 513 | 513 | ||
| 514 | for (i = 0; i < (IRQ_MAC_STMDONE - IRQ_MAC_PHYINT); i++) | 514 | for (i = 0; i <= (IRQ_MAC_STMDONE - IRQ_MAC_PHYINT); i++) |
| 515 | if (status & (1L << i)) { | 515 | if (status & (1L << i)) { |
| 516 | irq = IRQ_MAC_PHYINT + i; | 516 | irq = IRQ_MAC_PHYINT + i; |
| 517 | break; | 517 | break; |
| @@ -529,8 +529,9 @@ static void bfin_demux_mac_status_irq(unsigned int int_err_irq, | |||
| 529 | } else | 529 | } else |
| 530 | printk(KERN_ERR | 530 | printk(KERN_ERR |
| 531 | "%s : %s : LINE %d :\nIRQ ?: MAC ERROR" | 531 | "%s : %s : LINE %d :\nIRQ ?: MAC ERROR" |
| 532 | " INTERRUPT ASSERTED BUT NO SOURCE FOUND\n", | 532 | " INTERRUPT ASSERTED BUT NO SOURCE FOUND" |
| 533 | __func__, __FILE__, __LINE__); | 533 | "(EMAC_SYSTAT=0x%X)\n", |
| 534 | __func__, __FILE__, __LINE__, status); | ||
| 534 | } | 535 | } |
| 535 | #endif | 536 | #endif |
| 536 | 537 | ||
| @@ -1298,7 +1299,7 @@ void do_irq(int vec, struct pt_regs *fp) | |||
| 1298 | } else { | 1299 | } else { |
| 1299 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; | 1300 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; |
| 1300 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; | 1301 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; |
| 1301 | #if defined(SIC_ISR0) || defined(SICA_ISR0) | 1302 | #if defined(SIC_ISR0) |
| 1302 | unsigned long sic_status[3]; | 1303 | unsigned long sic_status[3]; |
| 1303 | 1304 | ||
| 1304 | if (smp_processor_id()) { | 1305 | if (smp_processor_id()) { |
| @@ -1378,7 +1379,7 @@ asmlinkage int __ipipe_grab_irq(int vec, struct pt_regs *regs) | |||
| 1378 | if (likely(vec == EVT_IVTMR_P)) | 1379 | if (likely(vec == EVT_IVTMR_P)) |
| 1379 | irq = IRQ_CORETMR; | 1380 | irq = IRQ_CORETMR; |
| 1380 | else { | 1381 | else { |
| 1381 | #if defined(SIC_ISR0) || defined(SICA_ISR0) | 1382 | #if defined(SIC_ISR0) |
| 1382 | unsigned long sic_status[3]; | 1383 | unsigned long sic_status[3]; |
| 1383 | 1384 | ||
| 1384 | sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0(); | 1385 | sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0(); |
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c index bb4e8fff4b55..f8435cd36c7c 100644 --- a/arch/blackfin/mm/init.c +++ b/arch/blackfin/mm/init.c | |||
| @@ -158,5 +158,8 @@ void __init_refok free_initmem(void) | |||
| 158 | free_init_pages("unused kernel memory", | 158 | free_init_pages("unused kernel memory", |
| 159 | (unsigned long)(&__init_begin), | 159 | (unsigned long)(&__init_begin), |
| 160 | (unsigned long)(&__init_end)); | 160 | (unsigned long)(&__init_end)); |
| 161 | |||
| 162 | if (memory_start == (unsigned long)(&__init_end)) | ||
| 163 | memory_start = (unsigned long)(&__init_begin); | ||
| 161 | #endif | 164 | #endif |
| 162 | } | 165 | } |
