History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into rmobile-fixes-for-linus

Paul Mundt committed 14 years ago

Commit 35eb3042 parents ca0cc30 bb4c7e91892 files · +37369 −61244Browse files

Unified · Split

1892 files
  1. Documentation/DocBook/device-drivers.tmpl +13 −4
  2. Documentation/DocBook/deviceiobook.tmpl +1 −1
  3. Documentation/DocBook/media/dvb/dvbproperty.xml +5 −7
  4. Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml +13 −5
  5. Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +14 −9
  6. Documentation/DocBook/media/v4l/vidioc-g-frequency.xml +5 −2
  7. Documentation/DocBook/media/v4l/vidioc-g-input.xml +2 −2
  8. Documentation/DocBook/media/v4l/vidioc-g-output.xml +3 −2
  9. Documentation/acpi/apei/einj.txt +44 −11
  10. Documentation/devices.txt +3 −0
  11. Documentation/devicetree/bindings/dma/atmel-dma.txt +14 −0
  12. Documentation/devicetree/bindings/i2c/omap-i2c.txt +30 −0
  13. Documentation/dmaengine.txt +8 −0
  14. Documentation/driver-model/devres.txt +4 −0
  15. Documentation/feature-removal-schedule.txt +14 −11
  16. Documentation/input/event-codes.txt +64 −8
  17. Documentation/ioctl/ioctl-number.txt +1 −0
  18. Documentation/kernel-parameters.txt +5 −0
  19. Documentation/pinctrl.txt +8 −9
  20. Documentation/power/basic-pm-debugging.txt +1 −1
  21. Documentation/power/freezing-of-tasks.txt +4 −4
  22. Documentation/scsi/ChangeLog.megaraid_sas +10 −0
  23. Documentation/scsi/LICENSE.qla4xxx +1 −22
  24. Documentation/stable_kernel_rules.txt +2 −1
  25. Documentation/sysctl/kernel.txt +2 −0
  26. Documentation/target/tcm_mod_builder.py +15 −45
  27. Documentation/thermal/sysfs-api.txt +1 −1
  28. Documentation/video4linux/v4l2-controls.txt +0 −21
  29. Documentation/virtual/00-INDEX +0 −2
  30. MAINTAINERS +56 −51
  31. Makefile +2 −2
  32. arch/arm/Kconfig +1 −3
  33. arch/arm/Makefile +0 −1
  34. arch/arm/boot/dts/exynos4210.dtsi +1 −0
  35. arch/arm/boot/dts/tegra-paz00.dts +3 −3
  36. arch/arm/common/gic.c +2 −5
  37. arch/arm/common/it8152.c +0 −7
  38. arch/arm/common/pl330.c +2 −1
  39. arch/arm/configs/imx_v6_v7_defconfig +35 −26
  40. arch/arm/configs/mx3_defconfig +0 −144
  41. arch/arm/include/asm/assembler.h +7 −2
  42. arch/arm/include/asm/domain.h +4 −4
  43. arch/arm/include/asm/futex.h +4 −4
  44. arch/arm/include/asm/hardware/pl330.h +1 −1
  45. arch/arm/include/asm/kprobes.h +0 −1
  46. arch/arm/include/asm/processor.h +1 −0
  47. arch/arm/include/asm/ptrace.h +5 −0
  48. arch/arm/include/asm/smp.h +0 −6
  49. arch/arm/include/asm/smp_plat.h +6 −0
  50. arch/arm/include/asm/thread_info.h +6 −0
  51. arch/arm/include/asm/tlb.h +9 −1
  52. arch/arm/include/asm/uaccess.h +8 −8
  53. arch/arm/include/asm/unified.h +2 −2
  54. arch/arm/kernel/entry-armv.S +1 −1
  55. arch/arm/kernel/entry-common.S +11 −8
  56. arch/arm/kernel/perf_event_v7.c +28 −0
  57. arch/arm/kernel/ptrace.c +23 −8
  58. arch/arm/kernel/setup.c +15 −2
  59. arch/arm/kernel/signal.c +2 −3
  60. arch/arm/kernel/smp.c +8 −16
  61. arch/arm/kernel/smp_twd.c +3 −1
  62. arch/arm/kernel/traps.c +4 −1
  63. arch/arm/kernel/vmlinux.lds.S +6 −4
  64. arch/arm/lib/getuser.S +6 −6
  65. arch/arm/lib/putuser.S +14 −14
  66. arch/arm/lib/uaccess.S +41 −41
  67. arch/arm/mach-at91/Kconfig +14 −0
  68. arch/arm/mach-at91/Makefile +8 −6
  69. arch/arm/mach-at91/at91cap9.c +2 −7
  70. arch/arm/mach-at91/at91rm9200_devices.c +1 −1
  71. arch/arm/mach-at91/at91sam9260.c +1 −0
  72. arch/arm/mach-at91/at91sam9260_devices.c +3 −6
  73. arch/arm/mach-at91/at91sam9261.c +1 −0
  74. arch/arm/mach-at91/at91sam9261_devices.c +1 −1
  75. arch/arm/mach-at91/at91sam9263.c +1 −0
  76. arch/arm/mach-at91/at91sam9263_devices.c +4 −4
  77. arch/arm/mach-at91/at91sam9_alt_reset.S +3 −4
  78. arch/arm/mach-at91/at91sam9g45.c +1 −6
  79. arch/arm/mach-at91/at91sam9g45_reset.S +40 −0
  80. arch/arm/mach-at91/at91sam9rl.c +1 −0
  81. arch/arm/mach-at91/generic.h +2 −0
  82. arch/arm/mach-at91/include/mach/at91_rstc.h +15 −3
  83. arch/arm/mach-at91/include/mach/at91cap9.h +1 −1
  84. arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h +0 −108
  85. arch/arm/mach-at91/include/mach/at91sam9260.h +1 −1
  86. arch/arm/mach-at91/include/mach/at91sam9261.h +1 −1
  87. arch/arm/mach-at91/include/mach/at91sam9263.h +1 −1
  88. arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h +20 −10
  89. arch/arm/mach-at91/include/mach/at91sam9_smc.h +29 −0
  90. arch/arm/mach-at91/include/mach/at91sam9g45.h +1 −1
  91. arch/arm/mach-at91/include/mach/at91sam9rl.h +1 −1
  92. arch/arm/mach-at91/include/mach/board.h +1 −1
  93. arch/arm/mach-at91/pm.c +2 −7
  94. arch/arm/mach-at91/pm.h +4 −4
  95. arch/arm/mach-at91/pm_slowclock.S +2 −3
  96. arch/arm/mach-at91/sam9_smc.c +71 −5
  97. arch/arm/mach-at91/sam9_smc.h +0 −23
  98. arch/arm/mach-at91/setup.c +14 −2
  99. arch/arm/mach-bcmring/arch.c +1 −1
  100. arch/arm/mach-bcmring/dma.c +0 −812
  101. arch/arm/mach-bcmring/include/mach/dma.h +0 −196
  102. arch/arm/mach-davinci/board-da850-evm.c +1 −1
  103. arch/arm/mach-davinci/board-dm365-evm.c +1 −1
  104. arch/arm/mach-davinci/board-dm644x-evm.c +1 −1
  105. arch/arm/mach-davinci/board-dm646x-evm.c +1 −1
  106. arch/arm/mach-davinci/board-neuros-osd2.c +1 −1
  107. arch/arm/mach-davinci/board-omapl138-hawk.c +1 −1
  108. arch/arm/mach-davinci/board-sffsdr.c +1 −1
  109. arch/arm/mach-davinci/da850.c +0 −32
  110. arch/arm/mach-dove/common.c +2 −1
  111. arch/arm/mach-ep93xx/include/mach/dma.h +3 −3
  112. arch/arm/mach-ep93xx/vision_ep9307.c +3 −1
  113. arch/arm/mach-exynos/clock-exynos4210.c +2 −0
  114. arch/arm/mach-exynos/clock-exynos4212.c +2 −0
  115. arch/arm/mach-exynos/clock.c +2 −0
  116. arch/arm/mach-exynos/headsmp.S +2 −0
  117. arch/arm/mach-exynos/hotplug.c +1 −0
  118. arch/arm/mach-exynos/mach-exynos4-dt.c +6 −2
  119. arch/arm/mach-exynos/mach-nuri.c +4 −4
  120. arch/arm/mach-exynos/mach-origen.c +2 −1
  121. arch/arm/mach-exynos/mach-universal_c210.c +1 −1
  122. arch/arm/mach-exynos/platsmp.c +3 −3
  123. arch/arm/mach-exynos/pm.c +3 −1
  124. arch/arm/mach-highbank/highbank.c +2 −4
  125. arch/arm/mach-imx/Kconfig +238 −0
  126. arch/arm/mach-imx/Makefile +21 −0
  127. arch/arm/mach-imx/Makefile.boot +12 −0
  128. arch/arm/mach-imx/clock-imx6q.c +11 −0
  129. arch/arm/mach-imx/clock-mx51-mx53.c +1 −1
  130. arch/arm/mach-imx/cpu-imx5.c +0 −0
  131. arch/arm/mach-imx/cpu_op-mx51.c +0 −0
  132. arch/arm/mach-imx/cpu_op-mx51.h +0 −0
  133. arch/arm/mach-imx/crm-regs-imx5.h +0 −0
  134. arch/arm/mach-imx/devices-imx50.h +0 −0
  135. arch/arm/mach-imx/devices-imx51.h +0 −0
  136. arch/arm/mach-imx/devices-imx53.h +0 −0
  137. arch/arm/mach-imx/efika.h +0 −0
  138. arch/arm/mach-imx/ehci-imx5.c +0 −0
  139. arch/arm/mach-imx/eukrea_mbimx51-baseboard.c +0 −0
  140. arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c +0 −0
  141. arch/arm/mach-imx/imx51-dt.c +0 −0
  142. arch/arm/mach-imx/imx53-dt.c +0 −0
  143. arch/arm/mach-imx/mach-cpuimx51.c +0 −0
  144. arch/arm/mach-imx/mach-cpuimx51sd.c +0 −0
  145. arch/arm/mach-imx/mach-mx50_rdp.c +0 −0
  146. arch/arm/mach-imx/mach-mx51_3ds.c +0 −0
  147. arch/arm/mach-imx/mach-mx51_babbage.c +0 −0
  148. arch/arm/mach-imx/mach-mx51_efikamx.c +0 −0
  149. arch/arm/mach-imx/mach-mx51_efikasb.c +0 −0
  150. arch/arm/mach-imx/mach-mx53_ard.c +3 −2
  151. arch/arm/mach-imx/mach-mx53_evk.c +0 −1
  152. arch/arm/mach-imx/mach-mx53_loco.c +0 −1
  153. arch/arm/mach-imx/mach-mx53_smd.c +0 −1
  154. arch/arm/mach-imx/mm-imx5.c +0 −0
  155. arch/arm/mach-imx/mx51_efika.c +0 −0
  156. arch/arm/mach-imx/pm-imx5.c +80 −9
  157. arch/arm/mach-imx/src.c +2 −6
  158. arch/arm/mach-kirkwood/common.c +2 −1
  159. arch/arm/mach-kirkwood/mpp.h +160 −160
  160. arch/arm/mach-msm/headsmp.S +1 −0
  161. arch/arm/mach-msm/hotplug.c +1 −0
  162. arch/arm/mach-msm/platsmp.c +1 −0
  163. arch/arm/mach-msm/vreg.c +1 −0
  164. arch/arm/mach-mv78xx0/common.c +2 −1
  165. arch/arm/mach-mv78xx0/mpp.h +113 −113
  166. arch/arm/mach-mx5/Kconfig +0 −244
  167. arch/arm/mach-mx5/Makefile +0 −26
  168. arch/arm/mach-mx5/Makefile.boot +0 −9
  169. arch/arm/mach-mx5/pm-imx5.c +0 −83
  170. arch/arm/mach-omap2/Kconfig +5 −7
  171. arch/arm/mach-omap2/Makefile +2 −2
  172. arch/arm/mach-omap2/board-4430sdp.c +25 −10
  173. arch/arm/mach-omap2/board-cm-t35.c +1 −1
  174. arch/arm/mach-omap2/board-generic.c +4 −0
  175. arch/arm/mach-omap2/board-omap3evm.c +16 −7
  176. arch/arm/mach-omap2/board-omap4panda.c +18 −6
  177. arch/arm/mach-omap2/board-zoom-peripherals.c +4 −2
  178. arch/arm/mach-omap2/devices.c +1 −0
  179. arch/arm/mach-omap2/display.c +0 −4
  180. arch/arm/mach-omap2/gpmc.c +6 −0
  181. arch/arm/mach-omap2/hsmmc.c +12 −12
  182. arch/arm/mach-omap2/io.c +3 −1
  183. arch/arm/mach-omap2/mux.c +11 −11
  184. arch/arm/mach-omap2/omap-headsmp.S +1 −0
  185. arch/arm/mach-omap2/omap_hwmod.c +8 −8
  186. arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +0 −21
  187. arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +22 −0
  188. arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +47 −7
  189. arch/arm/mach-omap2/omap_hwmod_44xx_data.c +2 −0
  190. arch/arm/mach-omap2/pm24xx.c +1 −7
  191. arch/arm/mach-omap2/prm2xxx_3xxx.c +1 −0
  192. arch/arm/mach-omap2/prm44xx.c +1 −0
  193. arch/arm/mach-omap2/serial.c +4 −4
  194. arch/arm/mach-omap2/smartreflex.c +1 −1
  195. arch/arm/mach-omap2/timer.c +1 −1
  196. arch/arm/mach-omap2/vc.c +4 −6
  197. arch/arm/mach-omap2/voltagedomains3xxx_data.c +2 −0
  198. arch/arm/mach-omap2/voltagedomains44xx_data.c +2 −0
  199. arch/arm/mach-omap2/vp.c +5 −0
  200. arch/arm/mach-orion5x/common.c +3 −1
  201. arch/arm/mach-picoxcell/time.c +1 −1
  202. arch/arm/mach-pxa/devices.c +0 −20
  203. arch/arm/mach-pxa/pxa25x.c +0 −2
  204. arch/arm/mach-pxa/pxa27x.c +0 −2
  205. arch/arm/mach-pxa/pxa300.c +0 −1
  206. arch/arm/mach-pxa/pxa320.c +0 −1
  207. arch/arm/mach-pxa/pxa3xx.c +0 −1
  208. arch/arm/mach-pxa/pxa95x.c +0 −1
  209. arch/arm/mach-realview/hotplug.c +1 −0
  210. arch/arm/mach-realview/include/mach/board-eb.h +10 −8
  211. arch/arm/mach-realview/include/mach/board-pb11mp.h +2 −0
  212. arch/arm/mach-realview/platsmp.c +1 −2
  213. arch/arm/mach-realview/realview_eb.c +3 −8
  214. arch/arm/mach-realview/realview_pb11mp.c +4 −9
  215. arch/arm/mach-s3c2410/cpu-freq.c +5 −3
  216. arch/arm/mach-s3c2410/dma.c +3 −2
  217. arch/arm/mach-s3c2410/pll.c +1 −1
  218. arch/arm/mach-s3c2410/pm.c +1 −1
  219. arch/arm/mach-s3c2412/cpu-freq.c +2 −1
  220. arch/arm/mach-s3c2412/dma.c +2 −1
  221. arch/arm/mach-s3c2412/irq.c +1 −1
  222. arch/arm/mach-s3c2412/pm.c +1 −1
  223. arch/arm/mach-s3c2416/irq.c +2 −1
  224. arch/arm/mach-s3c2416/pm.c +1 −1
  225. arch/arm/mach-s3c2440/clock.c +1 −1
  226. arch/arm/mach-s3c2440/dma.c +2 −1
  227. arch/arm/mach-s3c2440/irq.c +1 −1
  228. arch/arm/mach-s3c2440/s3c2440-cpufreq.c +2 −1
  229. arch/arm/mach-s3c2440/s3c2440-pll-12000000.c +1 −1
  230. arch/arm/mach-s3c2440/s3c2440-pll-16934400.c +2 −1
  231. arch/arm/mach-s3c2440/s3c2442.c +1 −1
  232. arch/arm/mach-s3c2440/s3c244x-clock.c +1 −1
  233. arch/arm/mach-s3c2440/s3c244x-irq.c +1 −1
  234. arch/arm/mach-s3c2443/dma.c +2 −1
  235. arch/arm/mach-s3c2443/irq.c +2 −1
  236. arch/arm/mach-s3c64xx/clock.c +5 −0
  237. arch/arm/mach-s3c64xx/common.c +1 −1
  238. arch/arm/mach-s3c64xx/include/mach/crag6410.h +1 −0
  239. arch/arm/mach-s3c64xx/mach-crag6410.c +3 −10
  240. arch/arm/mach-s3c64xx/pm.c +0 −13
  241. arch/arm/mach-s5p64x0/pm.c +1 −1
  242. arch/arm/mach-s5pv210/clock.c +2 −2
  243. arch/arm/mach-s5pv210/pm.c +1 −1
  244. arch/arm/mach-sa1100/assabet.c +0 −12
  245. arch/arm/mach-sa1100/cerf.c +0 −11
  246. arch/arm/mach-sa1100/clock.c +25 −66
  247. arch/arm/mach-sa1100/collie.c +3 −20
  248. arch/arm/mach-sa1100/cpu-sa1100.c +1 −1
  249. arch/arm/mach-sa1100/generic.c +1 −26
  250. arch/arm/mach-sa1100/include/mach/mcp.h +0 −2
  251. arch/arm/mach-sa1100/jornada720_ssp.c +2 −0
  252. arch/arm/mach-sa1100/lart.c +0 −10
  253. arch/arm/mach-sa1100/shannon.c +0 −11
  254. arch/arm/mach-sa1100/simpad.c +1 −17
  255. arch/arm/mach-shmobile/setup-sh7372.c +14 −3
  256. arch/arm/mach-shmobile/smp-r8a7779.c +1 −0
  257. arch/arm/mach-shmobile/smp-sh73a0.c +1 −0
  258. arch/arm/mach-tegra/board-paz00.c +4 −4
  259. arch/arm/mach-tegra/board-paz00.h +1 −1
  260. arch/arm/mach-tegra/include/mach/dma.h +5 −5
  261. arch/arm/mach-ux500/Kconfig +1 −0
  262. arch/arm/mach-ux500/board-mop500-sdi.c +2 −0
  263. arch/arm/mach-ux500/cache-l2x0.c +7 −41
  264. arch/arm/mach-ux500/headsmp.S +2 −0
  265. arch/arm/mach-ux500/hotplug.c +1 −0
  266. arch/arm/mach-ux500/platsmp.c +1 −0
  267. arch/arm/mach-ux500/usb.c +0 −6
  268. arch/arm/mach-vexpress/ct-ca9x4.c +2 −2
  269. arch/arm/mach-vexpress/hotplug.c +1 −0
  270. arch/arm/mach-vexpress/platsmp.c +1 −3
  271. arch/arm/mm/Kconfig +3 −1
  272. arch/arm/mm/cache-v7.S +6 −0
  273. arch/arm/mm/init.c +1 −1
  274. arch/arm/mm/proc-v7.S +10 −16
  275. arch/arm/plat-mxc/Kconfig +3 −12
  276. arch/arm/plat-mxc/include/mach/iomux-v1.h +1 −1
  277. arch/arm/plat-mxc/include/mach/mx3fb.h +15 −0
  278. arch/arm/plat-nomadik/include/plat/ste_dma40.h +8 −3
  279. arch/arm/plat-omap/include/plat/omap-secure.h +1 −1
  280. arch/arm/plat-orion/common.c +4 −5
  281. arch/arm/plat-orion/include/plat/common.h +2 −1
  282. arch/arm/plat-orion/mpp.c +1 −2
  283. arch/arm/plat-samsung/devs.c +3 −1
  284. arch/arm/plat-samsung/dma-ops.c +2 −2
  285. arch/arm/plat-samsung/include/plat/dma-ops.h +3 −2
  286. arch/arm/plat-samsung/include/plat/dma.h +5 −1
  287. arch/arm/plat-samsung/include/plat/s3c64xx-spi.h +2 −0
  288. arch/arm/plat-versatile/headsmp.S +1 −0
  289. arch/arm/plat-versatile/platsmp.c +1 −0
  290. arch/avr32/Kconfig +1 −0
  291. arch/ia64/include/asm/ptrace.h +12 −1
  292. arch/ia64/kernel/acpi.c +6 −4
  293. arch/ia64/kernel/ptrace.c +2 −16
  294. arch/m68k/atari/config.c +4 −4
  295. arch/m68k/include/asm/irq.h +0 −13
  296. arch/m68k/include/asm/mcf_pgtable.h +2 −1
  297. arch/m68k/kernel/process_mm.c +1 −1
  298. arch/m68k/kernel/process_no.c +2 −2
  299. arch/m68k/kernel/traps.c +17 −19
  300. arch/m68k/mm/cache.c +3 −3
  301. arch/m68k/mm/mcfmmu.c +5 −4
  302. arch/m68k/platform/coldfire/entry.S +1 −3
  303. arch/microblaze/Kconfig +1 −0
  304. arch/microblaze/include/asm/atomic.h +1 −0
  305. arch/microblaze/include/asm/ptrace.h +5 −0
  306. arch/microblaze/kernel/ptrace.c +3 −6
  307. arch/mips/Kconfig +1 −0
  308. arch/mips/include/asm/ptrace.h +13 −1
  309. arch/mips/kernel/ptrace.c +4 −7
  310. arch/mips/lib/iomap-pci.c +2 −2
  311. arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi +4 −0
  312. arch/powerpc/boot/dts/fsl/p1010si-post.dtsi +2 −1
  313. arch/powerpc/boot/dts/fsl/p1020si-post.dtsi +4 −0
  314. arch/powerpc/boot/dts/fsl/p1022si-post.dtsi +2 −1
  315. arch/powerpc/boot/dts/fsl/p2020si-post.dtsi +4 −0
  316. arch/powerpc/boot/dts/p1020rdb.dtsi +6 −7
  317. arch/powerpc/boot/dts/p1021mds.dts +2 −1
  318. arch/powerpc/boot/dts/p2020ds.dtsi +2 −1
  319. arch/powerpc/boot/dts/p2020rdb.dts +2 −1
  320. arch/powerpc/configs/ppc64_defconfig +0 −5
  321. arch/powerpc/include/asm/ppc-pci.h +5 −0
  322. arch/powerpc/include/asm/ptrace.h +21 −6
  323. arch/powerpc/kernel/crash.c +1 −1
  324. arch/powerpc/kernel/entry_32.S +1 −1
  325. arch/powerpc/kernel/entry_64.S +5 −1
  326. arch/powerpc/kernel/exceptions-64s.S +1 −1
  327. arch/powerpc/kernel/irq.c +5 −1
  328. arch/powerpc/kernel/legacy_serial.c +2 −0
  329. arch/powerpc/kernel/perf_event.c +7 −1
  330. arch/powerpc/kernel/process.c +3 −3
  331. arch/powerpc/kernel/ptrace.c +13 −17
  332. arch/powerpc/kernel/rtas.c +3 −2
  333. arch/powerpc/kernel/signal.c +8 −4
  334. arch/powerpc/kernel/signal.h +1 −1
  335. arch/powerpc/platforms/85xx/p1022_ds.c +1 −0
  336. arch/powerpc/platforms/powernv/pci-ioda.c +27 −16
  337. arch/powerpc/platforms/powernv/pci.c +14 −8
  338. arch/powerpc/platforms/pseries/Kconfig +1 −1
  339. arch/powerpc/platforms/pseries/eeh.c +2 −2
  340. arch/powerpc/platforms/pseries/suspend.c +5 −1
  341. arch/powerpc/platforms/wsp/ics.c +1 −1
  342. arch/powerpc/platforms/wsp/smp.c +1 −1
  343. arch/powerpc/platforms/wsp/wsp_pci.c +4 −4
  344. arch/powerpc/sysdev/fsl_pci.c +32 −21
  345. arch/s390/Makefile +0 −1
  346. arch/s390/include/asm/kexec.h +18 −0
  347. arch/s390/include/asm/ptrace.h +5 −1
  348. arch/s390/kernel/compat_wrapper.S +1 −1
  349. arch/s390/kernel/process.c +3 −2
  350. arch/s390/kernel/ptrace.c +6 −9
  351. arch/s390/kernel/time.c +5 −2
  352. arch/s390/kernel/vmlinux.lds.S +2 −2
  353. arch/s390/mm/pgtable.c +1 −1
  354. arch/score/kernel/entry.S +1 −1
  355. arch/sh/Kconfig +1 −0
  356. arch/sh/drivers/pci/pci.c +2 −2
  357. arch/sh/include/asm/ptrace_32.h +4 −1
  358. arch/sh/include/asm/ptrace_64.h +4 −1
  359. arch/sh/kernel/ptrace_32.c +4 −7
  360. arch/sh/kernel/ptrace_64.c +4 −7
  361. arch/sparc/Kconfig +1 −0
  362. arch/sparc/include/asm/ptrace.h +9 −1
  363. arch/sparc/kernel/ptrace_64.c +9 −19
  364. arch/sparc/kernel/sun4m_irq.c +3 −0
  365. arch/sparc/lib/divdi3.S +1 −15
  366. arch/um/kernel/ptrace.c +9 −11
  367. arch/x86/.gitignore +1 −0
  368. arch/x86/Kconfig +10 −11
  369. arch/x86/boot/compressed/misc.c +2 −0
  370. arch/x86/ia32/ia32entry.S +8 −6
  371. arch/x86/include/asm/cmpxchg.h +3 −3
  372. arch/x86/include/asm/cpufeature.h +1 −0
  373. arch/x86/include/asm/i387.h +252 −55
  374. arch/x86/include/asm/kvm_emulate.h +16 −0
  375. arch/x86/include/asm/processor.h +2 −0
  376. arch/x86/include/asm/thread_info.h +0 −2
  377. arch/x86/include/asm/unistd.h +1 −0
  378. arch/x86/include/asm/uv/uv_bau.h +99 −8
  379. arch/x86/include/asm/uv/uv_hub.h +2 −2
  380. arch/x86/kernel/cpu/common.c +5 −0
  381. arch/x86/kernel/cpu/perf_event_intel_ds.c +0 −1
  382. arch/x86/kernel/cpu/perf_event_intel_lbr.c +0 −2
  383. arch/x86/kernel/dumpstack.c +2 −1
  384. arch/x86/kernel/dumpstack_64.c +4 −4
  385. arch/x86/kernel/e820.c +2 −2
  386. arch/x86/kernel/entry_32.S +5 −5
  387. arch/x86/kernel/entry_64.S +7 −7
  388. arch/x86/kernel/microcode_amd.c +22 −2
  389. arch/x86/kernel/process_32.c +5 −21
  390. arch/x86/kernel/process_64.c +5 −25
  391. arch/x86/kernel/ptrace.c +11 −14
  392. arch/x86/kernel/reboot.c +26 −10
  393. arch/x86/kernel/traps.c +14 −29
  394. arch/x86/kernel/tsc.c +6 −8
  395. arch/x86/kernel/vm86_32.c +4 −2
  396. arch/x86/kernel/xsave.c +4 −8
  397. arch/x86/kvm/emulate.c +51 −0
  398. arch/x86/kvm/vmx.c +1 −1
  399. arch/x86/kvm/x86.c +45 −0
  400. arch/x86/lib/x86-opcode-map.txt +5 −3
  401. arch/x86/mm/fault.c +2 −2
  402. arch/x86/mm/srat.c +4 −0
  403. arch/x86/net/bpf_jit_comp.c +22 −14
  404. arch/x86/pci/xen.c +1 −1
  405. arch/x86/platform/uv/tlb_uv.c +318 −72
  406. arch/x86/platform/uv/uv_irq.c +1 −1
  407. arch/x86/um/shared/sysdep/ptrace.h +10 −0
  408. arch/x86/xen/smp.c +7 −0
  409. arch/x86/xen/spinlock.c +22 −5
  410. arch/xtensa/include/asm/string.h +0 −3
  411. arch/xtensa/kernel/ptrace.c +1 −2
  412. block/blk-cgroup.c +1 −1
  413. block/blk-core.c +17 −16
  414. block/blk-ioc.c +25 −86
  415. block/blk-merge.c +37 −0
  416. block/blk.h +2 −0
  417. block/bsg.c +2 −1
  418. block/cfq-iosched.c +7 −14
  419. block/elevator.c +4 −51
  420. crypto/sha512_generic.c +28 −31
  421. drivers/acpi/Makefile +2 −2
  422. drivers/acpi/acpica/Makefile +134 −24
  423. drivers/acpi/acpica/accommon.h +1 −1
  424. drivers/acpi/acpica/acconfig.h +7 −2
  425. drivers/acpi/acpica/acdebug.h +1 −1
  426. drivers/acpi/acpica/acdispat.h +1 −1
  427. drivers/acpi/acpica/acevents.h +2 −1
  428. drivers/acpi/acpica/acglobal.h +15 −2
  429. drivers/acpi/acpica/achware.h +1 −1
  430. drivers/acpi/acpica/acinterp.h +3 −1
  431. drivers/acpi/acpica/aclocal.h +21 −5
  432. drivers/acpi/acpica/acmacros.h +1 −1
  433. drivers/acpi/acpica/acnamesp.h +1 −1
  434. drivers/acpi/acpica/acobject.h +6 −2
  435. drivers/acpi/acpica/acopcode.h +5 −1
  436. drivers/acpi/acpica/acparser.h +1 −1
  437. drivers/acpi/acpica/acpredef.h +39 −2
  438. drivers/acpi/acpica/acresrc.h +78 −37
  439. drivers/acpi/acpica/acstruct.h +1 −1
  440. drivers/acpi/acpica/actables.h +1 −1
  441. drivers/acpi/acpica/acutils.h +20 −1
  442. drivers/acpi/acpica/amlcode.h +21 −8
  443. drivers/acpi/acpica/amlresrc.h +137 −1
  444. drivers/acpi/acpica/dsargs.c +16 −2
  445. drivers/acpi/acpica/dscontrol.c +1 −1
  446. drivers/acpi/acpica/dsfield.c +67 −16
  447. drivers/acpi/acpica/dsinit.c +1 −1
  448. drivers/acpi/acpica/dsmethod.c +1 −1
  449. drivers/acpi/acpica/dsmthdat.c +1 −1
  450. drivers/acpi/acpica/dsobject.c +1 −1
  451. drivers/acpi/acpica/dsopcode.c +1 −1
  452. drivers/acpi/acpica/dsutils.c +1 −1
  453. drivers/acpi/acpica/dswexec.c +1 −1
  454. drivers/acpi/acpica/dswload.c +1 −1
  455. drivers/acpi/acpica/dswload2.c +1 −1
  456. drivers/acpi/acpica/dswscope.c +1 −1
  457. drivers/acpi/acpica/dswstate.c +1 −1
  458. drivers/acpi/acpica/evevent.c +13 −1
  459. drivers/acpi/acpica/evglock.c +7 −1
  460. drivers/acpi/acpica/evgpe.c +1 −1
  461. drivers/acpi/acpica/evgpeblk.c +1 −1
  462. drivers/acpi/acpica/evgpeinit.c +1 −1
  463. drivers/acpi/acpica/evgpeutil.c +1 −1
  464. drivers/acpi/acpica/evmisc.c +1 −1
  465. drivers/acpi/acpica/evregion.c +27 −4
  466. drivers/acpi/acpica/evrgnini.c +1 −1
  467. drivers/acpi/acpica/evsci.c +1 −1
  468. drivers/acpi/acpica/evxface.c +1 −1
  469. drivers/acpi/acpica/evxfevnt.c +1 −1
  470. drivers/acpi/acpica/evxfgpe.c +1 −1
  471. drivers/acpi/acpica/evxfregn.c +1 −1
  472. drivers/acpi/acpica/exconfig.c +4 −4
  473. drivers/acpi/acpica/exconvrt.c +1 −1
  474. drivers/acpi/acpica/excreate.c +20 −11
  475. drivers/acpi/acpica/exdebug.c +1 −1
  476. drivers/acpi/acpica/exdump.c +6 −3
  477. drivers/acpi/acpica/exfield.c +22 −8
  478. drivers/acpi/acpica/exfldio.c +29 −9
  479. drivers/acpi/acpica/exmisc.c +1 −1
  480. drivers/acpi/acpica/exmutex.c +1 −1
  481. drivers/acpi/acpica/exnames.c +1 −1
  482. drivers/acpi/acpica/exoparg1.c +1 −1
  483. drivers/acpi/acpica/exoparg2.c +1 −1
  484. drivers/acpi/acpica/exoparg3.c +1 −1
  485. drivers/acpi/acpica/exoparg6.c +1 −1
  486. drivers/acpi/acpica/exprep.c +26 −1
  487. drivers/acpi/acpica/exregion.c +1 −1
  488. drivers/acpi/acpica/exresnte.c +1 −1
  489. drivers/acpi/acpica/exresolv.c +1 −1
  490. drivers/acpi/acpica/exresop.c +1 −1
  491. drivers/acpi/acpica/exstore.c +1 −1
  492. drivers/acpi/acpica/exstoren.c +1 −1
  493. drivers/acpi/acpica/exstorob.c +1 −1
  494. drivers/acpi/acpica/exsystem.c +1 −1
  495. drivers/acpi/acpica/exutils.c +26 −1
  496. drivers/acpi/acpica/hwacpi.c +1 −1
  497. drivers/acpi/acpica/hwgpe.c +1 −1
  498. drivers/acpi/acpica/hwpci.c +1 −1
  499. drivers/acpi/acpica/hwregs.c +1 −1
  500. drivers/acpi/acpica/hwsleep.c +1 −1
  501. drivers/acpi/acpica/hwtimer.c +1 −1
  502. drivers/acpi/acpica/hwvalid.c +3 −1
  503. drivers/acpi/acpica/hwxface.c +1 −1
  504. drivers/acpi/acpica/nsaccess.c +1 −1
  505. drivers/acpi/acpica/nsalloc.c +1 −1
  506. drivers/acpi/acpica/nsdump.c +1 −1
  507. drivers/acpi/acpica/nsdumpdv.c +1 −1
  508. drivers/acpi/acpica/nseval.c +1 −1
  509. drivers/acpi/acpica/nsinit.c +1 −1
  510. drivers/acpi/acpica/nsload.c +1 −1
  511. drivers/acpi/acpica/nsnames.c +1 −1
  512. drivers/acpi/acpica/nsobject.c +1 −1
  513. drivers/acpi/acpica/nsparse.c +1 −1
  514. drivers/acpi/acpica/nspredef.c +30 −1
  515. drivers/acpi/acpica/nsrepair.c +2 −1
  516. drivers/acpi/acpica/nsrepair2.c +4 −3
  517. drivers/acpi/acpica/nssearch.c +1 −1
  518. drivers/acpi/acpica/nsutils.c +1 −1
  519. drivers/acpi/acpica/nswalk.c +1 −1
  520. drivers/acpi/acpica/nsxfeval.c +1 −1
  521. drivers/acpi/acpica/nsxfname.c +1 −1
  522. drivers/acpi/acpica/nsxfobj.c +1 −1
  523. drivers/acpi/acpica/psargs.c +129 −14
  524. drivers/acpi/acpica/psloop.c +1 −1
  525. drivers/acpi/acpica/psopcode.c +12 −3
  526. drivers/acpi/acpica/psparse.c +1 −1
  527. drivers/acpi/acpica/psscope.c +1 −1
  528. drivers/acpi/acpica/pstree.c +7 −1
  529. drivers/acpi/acpica/psutils.c +1 −1
  530. drivers/acpi/acpica/pswalk.c +1 −1
  531. drivers/acpi/acpica/psxface.c +1 −1
  532. drivers/acpi/acpica/rsaddr.c +1 −1
  533. drivers/acpi/acpica/rscalc.c +81 −8
  534. drivers/acpi/acpica/rscreate.c +67 −2
  535. drivers/acpi/acpica/rsdump.c +186 −10
  536. drivers/acpi/acpica/rsinfo.c +51 −7
  537. drivers/acpi/acpica/rsio.c +1 −1
  538. drivers/acpi/acpica/rsirq.c +32 −1
  539. drivers/acpi/acpica/rslist.c +62 −15
  540. drivers/acpi/acpica/rsmemory.c +1 −1
  541. drivers/acpi/acpica/rsmisc.c +263 −6
  542. drivers/acpi/acpica/rsserial.c +441 −0
  543. drivers/acpi/acpica/rsutils.c +55 −1
  544. drivers/acpi/acpica/rsxface.c +47 −5
  545. drivers/acpi/acpica/tbfadt.c +30 −11
  546. drivers/acpi/acpica/tbfind.c +1 −1
  547. drivers/acpi/acpica/tbinstal.c +1 −1
  548. drivers/acpi/acpica/tbutils.c +8 −1
  549. drivers/acpi/acpica/tbxface.c +1 −1
  550. drivers/acpi/acpica/tbxfroot.c +1 −1
  551. drivers/acpi/acpica/utaddress.c +294 −0
  552. drivers/acpi/acpica/utalloc.c +1 −1
  553. drivers/acpi/acpica/utcopy.c +1 −1
  554. drivers/acpi/acpica/utdebug.c +1 −1
  555. drivers/acpi/acpica/utdecode.c +4 −2
  556. drivers/acpi/acpica/utdelete.c +9 −6
  557. drivers/acpi/acpica/uteval.c +1 −1
  558. drivers/acpi/acpica/utglobal.c +7 −1
  559. drivers/acpi/acpica/utids.c +1 −1
  560. drivers/acpi/acpica/utinit.c +2 −1
  561. drivers/acpi/acpica/utlock.c +1 −1
  562. drivers/acpi/acpica/utmath.c +1 −1
  563. drivers/acpi/acpica/utmisc.c +1 −1
  564. drivers/acpi/acpica/utmutex.c +4 −7
  565. drivers/acpi/acpica/utobject.c +1 −1
  566. drivers/acpi/acpica/utosi.c +1 −1
  567. drivers/acpi/acpica/utresrc.c +243 −35
  568. drivers/acpi/acpica/utstate.c +1 −1
  569. drivers/acpi/acpica/utxface.c +39 −1
  570. drivers/acpi/acpica/utxferror.c +1 −1
  571. drivers/acpi/acpica/utxfmutex.c +187 −0
  572. drivers/acpi/apei/apei-base.c +112 −11
  573. drivers/acpi/apei/apei-internal.h +6 −0
  574. drivers/acpi/apei/einj.c +256 −59
  575. drivers/acpi/apei/erst.c +2 −3
  576. drivers/acpi/apei/ghes.c +83 −19
  577. drivers/acpi/apei/hest.c +2 −3
  578. drivers/acpi/atomicio.c +0 −365
  579. drivers/acpi/numa.c +6 −0
  580. drivers/acpi/nvs.c +52 −1
  581. drivers/acpi/osl.c +188 −206
  582. drivers/acpi/processor_core.c +24 −2
  583. drivers/acpi/processor_driver.c +117 −52
  584. drivers/acpi/sleep.c +8 −0
  585. drivers/ata/ata_piix.c +7 −0
  586. drivers/ata/libata-core.c +2 −0
  587. drivers/ata/libata-transport.c +1 −0
  588. drivers/ata/pata_at91.c +21 −27
  589. drivers/ata/pata_bf54x.c +88 −79
  590. drivers/ata/sata_fsl.c +11 −0
  591. drivers/base/Makefile +1 −1
  592. drivers/base/bus.c +5 −4
  593. drivers/base/core.c +16 −1
  594. drivers/base/cpu.c +21 −0
  595. drivers/base/firmware_class.c +1 −2
  596. drivers/base/memory.c +26 −5
  597. drivers/base/node.c +8 −0
  598. drivers/base/regmap/regcache.c +2 −2
  599. drivers/base/regmap/regmap.c +3 −0
  600. drivers/base/sys.c +0 −383
  601. drivers/bcma/bcma_private.h +1 −0
  602. drivers/bcma/host_pci.c +18 −25
  603. drivers/bcma/main.c +25 −3
  604. drivers/bcma/scan.c +11 −8
  605. drivers/block/Kconfig +11 −0
  606. drivers/block/Makefile +1 −0
  607. drivers/block/floppy.c +16 −1
  608. drivers/block/loop.c +13 −11
  609. drivers/block/mtip32xx/mtip32xx.c +5 −6
  610. drivers/block/mtip32xx/mtip32xx.h +0 −5
  611. drivers/block/nvme.c +1741 −0
  612. drivers/block/rbd.c +5 −2
  613. drivers/cdrom/cdrom.c +6 −14
  614. drivers/char/agp/backend.c +6 −6
  615. drivers/char/tpm/tpm.c +9 −0
  616. drivers/char/tpm/tpm.h +3 −0
  617. drivers/cpuidle/Kconfig +1 −1
  618. drivers/dma/Kconfig +17 −10
  619. drivers/dma/Makefile +1 −0
  620. drivers/dma/amba-pl08x.c +22 −19
  621. drivers/dma/at_hdmac.c +83 −24
  622. drivers/dma/at_hdmac_regs.h +9 −9
  623. drivers/dma/coh901318.c +6 −6
  624. drivers/dma/coh901318_lli.c +11 −12
  625. drivers/dma/coh901318_lli.h +2 −2
  626. drivers/dma/dmaengine.c +2 −2
  627. drivers/dma/dmatest.c +1 −1
  628. drivers/dma/dw_dmac.c +48 −35
  629. drivers/dma/dw_dmac_regs.h +1 −0
  630. drivers/dma/ep93xx_dma.c +63 −27
  631. drivers/dma/fsldma.c +2 −2
  632. drivers/dma/imx-dma.c +5 −5
  633. drivers/dma/imx-sdma.c +22 −11
  634. drivers/dma/intel_mid_dma.c +25 −14
  635. drivers/dma/intel_mid_dma_regs.h +2 −2
  636. drivers/dma/iop-adma.c +2 −14
  637. drivers/dma/ipu/ipu_idmac.c +3 −26
  638. drivers/dma/mpc512x_dma.c +1 −11
  639. drivers/dma/mxs-dma.c +13 −40
  640. drivers/dma/pch_dma.c +12 −8
  641. drivers/dma/pl330.c +9 −22
  642. drivers/dma/shdma.c +45 −30
  643. drivers/dma/sirf-dma.c +707 −0
  644. drivers/dma/ste_dma40.c +391 −50
  645. drivers/dma/ste_dma40_ll.h +11 −0
  646. drivers/dma/timb_dma.c +10 −20
  647. drivers/dma/txx9dmac.c +6 −6
  648. drivers/edac/i3200_edac.c +2 −13
  649. drivers/firewire/ohci.c +5 −1
  650. drivers/gpio/Kconfig +1 −0
  651. drivers/gpio/gpio-lpc32xx.c +1 −1
  652. drivers/gpio/gpio-ml-ioh.c +5 −4
  653. drivers/gpio/gpio-pch.c +3 −2
  654. drivers/gpio/gpio-samsung.c +13 −10
  655. drivers/gpio/gpio-tps65910.c +1 −1
  656. drivers/gpu/drm/drm_auth.c +5 −1
  657. drivers/gpu/drm/drm_fops.c +5 −0
  658. drivers/gpu/drm/drm_gem.c +1 −1
  659. drivers/gpu/drm/drm_ioc32.c +2 −1
  660. drivers/gpu/drm/exynos/Kconfig +2 −2
  661. drivers/gpu/drm/exynos/exynos_drm_core.c +3 −0
  662. drivers/gpu/drm/exynos/exynos_drm_crtc.c +3 −3
  663. drivers/gpu/drm/exynos/exynos_drm_drv.c +18 −8
  664. drivers/gpu/drm/exynos/exynos_drm_encoder.c +34 −0
  665. drivers/gpu/drm/exynos/exynos_drm_encoder.h +1 −0
  666. drivers/gpu/drm/exynos/exynos_drm_fbdev.c +4 −66
  667. drivers/gpu/drm/exynos/exynos_drm_fimd.c +65 −51
  668. drivers/gpu/drm/exynos/exynos_hdmi.c +4 −4
  669. drivers/gpu/drm/exynos/exynos_mixer.c +12 −7
  670. drivers/gpu/drm/gma500/framebuffer.c +4 −4
  671. drivers/gpu/drm/gma500/gtt.c +2 −3
  672. drivers/gpu/drm/i810/i810_dma.c +6 −11
  673. drivers/gpu/drm/i810/i810_drv.c +1 −0
  674. drivers/gpu/drm/i810/i810_drv.h +4 −2
  675. drivers/gpu/drm/i915/i915_debugfs.c +20 −11
  676. drivers/gpu/drm/i915/i915_dma.c +1 −0
  677. drivers/gpu/drm/i915/i915_drv.c +44 −12
  678. drivers/gpu/drm/i915/i915_drv.h +7 −3
  679. drivers/gpu/drm/i915/i915_irq.c +2 −1
  680. drivers/gpu/drm/i915/i915_reg.h +15 −0
  681. drivers/gpu/drm/i915/i915_suspend.c +8 −3
  682. drivers/gpu/drm/i915/intel_bios.h +5 −1
  683. drivers/gpu/drm/i915/intel_crt.c +23 −0
  684. drivers/gpu/drm/i915/intel_display.c +38 −16
  685. drivers/gpu/drm/i915/intel_dp.c +5 −15
  686. drivers/gpu/drm/i915/intel_lvds.c +16 −0
  687. drivers/gpu/drm/i915/intel_ringbuffer.c +25 −16
  688. drivers/gpu/drm/i915/intel_sdvo.c +3 −5
  689. drivers/gpu/drm/i915/intel_sprite.c +2 −6
  690. drivers/gpu/drm/i915/intel_tv.c +8 −130
  691. drivers/gpu/drm/nouveau/nouveau_bios.h +3 −2
  692. drivers/gpu/drm/nouveau/nouveau_bo.c +4 −0
  693. drivers/gpu/drm/nouveau/nouveau_display.c +10 −0
  694. drivers/gpu/drm/nouveau/nouveau_drv.c +1 −1
  695. drivers/gpu/drm/nouveau/nouveau_gem.c +21 −2
  696. drivers/gpu/drm/nouveau/nouveau_mxm.c +9 −0
  697. drivers/gpu/drm/nouveau/nv50_pm.c +2 −2
  698. drivers/gpu/drm/radeon/atombios_crtc.c +32 −32
  699. drivers/gpu/drm/radeon/atombios_dp.c +25 −15
  700. drivers/gpu/drm/radeon/atombios_encoders.c +45 −44
  701. drivers/gpu/drm/radeon/evergreen.c +3 −0
  702. drivers/gpu/drm/radeon/evergreend.h +1 −0
  703. drivers/gpu/drm/radeon/ni.c +2 −0
  704. drivers/gpu/drm/radeon/nid.h +1 −0
  705. drivers/gpu/drm/radeon/r100.c +8 −4
  706. drivers/gpu/drm/radeon/r300.c +7 −1
  707. drivers/gpu/drm/radeon/r420.c +7 −1
  708. drivers/gpu/drm/radeon/r520.c +7 −1
  709. drivers/gpu/drm/radeon/r600.c +1 −0
  710. drivers/gpu/drm/radeon/r600_blit_kms.c +25 −10
  711. drivers/gpu/drm/radeon/radeon.h +42 −42
  712. drivers/gpu/drm/radeon/radeon_atombios.c +20 −0
  713. drivers/gpu/drm/radeon/radeon_atpx_handler.c +2 −1
  714. drivers/gpu/drm/radeon/radeon_bios.c +1 −1
  715. drivers/gpu/drm/radeon/radeon_cs.c +4 −0
  716. drivers/gpu/drm/radeon/radeon_device.c +9 −3
  717. drivers/gpu/drm/radeon/radeon_display.c +4 −2
  718. drivers/gpu/drm/radeon/radeon_encoders.c +77 −0
  719. drivers/gpu/drm/radeon/radeon_fence.c +3 −1
  720. drivers/gpu/drm/radeon/radeon_i2c.c +2 −0
  721. drivers/gpu/drm/radeon/radeon_irq_kms.c +6 −0
  722. drivers/gpu/drm/radeon/radeon_mode.h +8 −0
  723. drivers/gpu/drm/radeon/radeon_ring.c +25 −19
  724. drivers/gpu/drm/radeon/rs400.c +7 −1
  725. drivers/gpu/drm/radeon/rs600.c +8 −4
  726. drivers/gpu/drm/radeon/rs690.c +7 −1
  727. drivers/gpu/drm/radeon/rv515.c +7 −1
  728. drivers/gpu/drm/radeon/rv770.c +1 −0
  729. drivers/gpu/drm/sis/sis_drv.c +1 −2
  730. drivers/gpu/drm/ttm/ttm_bo.c +13 −4
  731. drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +1 −1
  732. drivers/hid/hid-hyperv.c +1 −0
  733. drivers/hid/hid-wacom.c +4 −3
  734. drivers/hid/hid-wiimote-core.c +2 −2
  735. drivers/hid/usbhid/hiddev.c +2 −2
  736. drivers/hwmon/f71805f.c +5 −5
  737. drivers/hwmon/f75375s.c +5 −6
  738. drivers/hwmon/sht15.c +2 −1
  739. drivers/hwmon/w83627ehf.c +26 −8
  740. drivers/i2c/busses/Kconfig +7 −7
  741. drivers/i2c/busses/i2c-eg20t.c +12 −7
  742. drivers/i2c/busses/i2c-omap.c +70 −40
  743. drivers/i2c/busses/i2c-tegra.c +1 −1
  744. drivers/ide/Makefile +0 −1
  745. drivers/ide/at91_ide.c +0 −366
  746. drivers/idle/intel_idle.c +50 −48
  747. drivers/infiniband/Kconfig +1 −0
  748. drivers/infiniband/Makefile +1 −0
  749. drivers/infiniband/core/ucma.c +4 −1
  750. drivers/infiniband/core/uverbs_cmd.c +1 −0
  751. drivers/infiniband/core/verbs.c +1 −1
  752. drivers/infiniband/hw/ipath/ipath_fs.c +1 −1
  753. drivers/infiniband/hw/mlx4/mad.c +2 −5
  754. drivers/infiniband/hw/nes/nes.c +1 −1
  755. drivers/infiniband/hw/nes/nes.h +1 −1
  756. drivers/infiniband/hw/nes/nes_cm.c +7 −3
  757. drivers/infiniband/hw/nes/nes_cm.h +1 −1
  758. drivers/infiniband/hw/nes/nes_context.h +1 −1
  759. drivers/infiniband/hw/nes/nes_hw.c +1 −1
  760. drivers/infiniband/hw/nes/nes_hw.h +1 −1
  761. drivers/infiniband/hw/nes/nes_mgt.c +1 −1
  762. drivers/infiniband/hw/nes/nes_mgt.h +1 −1
  763. drivers/infiniband/hw/nes/nes_nic.c +1 −1
  764. drivers/infiniband/hw/nes/nes_user.h +1 −1
  765. drivers/infiniband/hw/nes/nes_utils.c +1 −1
  766. drivers/infiniband/hw/nes/nes_verbs.c +4 −2
  767. drivers/infiniband/hw/nes/nes_verbs.h +1 −1
  768. drivers/infiniband/hw/qib/qib_iba6120.c +1 −1
  769. drivers/infiniband/hw/qib/qib_pcie.c +1 −1
  770. drivers/infiniband/ulp/ipoib/ipoib.h +4 −2
  771. drivers/infiniband/ulp/ipoib/ipoib_main.c +19 −36
  772. drivers/infiniband/ulp/ipoib/ipoib_multicast.c +1 −9
  773. drivers/infiniband/ulp/srpt/Kconfig +12 −0
  774. drivers/infiniband/ulp/srpt/Makefile +2 −0
  775. drivers/infiniband/ulp/srpt/ib_dm_mad.h +139 −0
  776. drivers/infiniband/ulp/srpt/ib_srpt.c +4070 −0
  777. drivers/infiniband/ulp/srpt/ib_srpt.h +443 −0
  778. drivers/input/evdev.c +1 −1
  779. drivers/input/keyboard/twl4030_keypad.c +1 −3
  780. drivers/input/serio/i8042-x86ia64io.h +7 −0
  781. drivers/input/serio/serio_raw.c +9 −6
  782. drivers/iommu/amd_iommu.c +3 −0
  783. drivers/iommu/msm_iommu.c +1 −6
  784. drivers/isdn/i4l/isdn_net.c +1 −1
  785. drivers/leds/Kconfig +7 −0
  786. drivers/leds/Makefile +1 −0
  787. drivers/leds/leds-lm3530.c +2 −2
  788. drivers/leds/leds-ot200.c +171 −0
  789. drivers/macintosh/adb.c +2 −2
  790. drivers/md/dm-raid.c +9 −3
  791. drivers/md/md.c +3 −2
  792. drivers/media/common/tuners/tuner-xc2028.c +21 −6
  793. drivers/media/common/tuners/xc4000.c +86 −0
  794. drivers/media/dvb/dvb-core/dvb_frontend.c +20 −21
  795. drivers/media/dvb/dvb-usb/anysee.c +14 −13
  796. drivers/media/dvb/dvb-usb/cinergyT2-fe.c +4 −3
  797. drivers/media/dvb/dvb-usb/dib0700.h +2 −0
  798. drivers/media/dvb/dvb-usb/dib0700_core.c +1 −0
  799. drivers/media/dvb/dvb-usb/dib0700_devices.c +137 −13
  800. drivers/media/dvb/frontends/cxd2820r.h +2 −4
  801. drivers/media/dvb/frontends/cxd2820r_core.c +22 −6
  802. drivers/media/dvb/frontends/ds3000.c +1 −1
  803. drivers/media/dvb/frontends/mb86a20s.c +4 −4
  804. drivers/media/dvb/frontends/tda18271c2dd.c +0 −1
  805. drivers/media/video/as3645a.c +1 −0
  806. drivers/media/video/atmel-isi.c +14 −0
  807. drivers/media/video/cx18/cx18-fileops.c +14 −27
  808. drivers/media/video/cx231xx/cx231xx-cards.c +1 −1
  809. drivers/media/video/cx23885/cx23885-cards.c +2 −2
  810. drivers/media/video/cx23885/cx23885-dvb.c +5 −0
  811. drivers/media/video/cx23885/cx23885-video.c +4 −3
  812. drivers/media/video/cx88/cx88-cards.c +12 −12
  813. drivers/media/video/em28xx/em28xx-dvb.c +1 −2
  814. drivers/media/video/ivtv/ivtv-driver.c +0 −3
  815. drivers/media/video/ivtv/ivtv-driver.h +1 −2
  816. drivers/media/video/ivtv/ivtv-fileops.c +44 −74
  817. drivers/media/video/ivtv/ivtv-ioctl.c +5 −17
  818. drivers/media/video/ivtv/ivtv-irq.c +2 −2
  819. drivers/media/video/ivtv/ivtv-streams.c +1 −1
  820. drivers/media/video/ivtv/ivtv-yuv.c +19 −3
  821. drivers/media/video/mx3_camera.c +1 −1
  822. drivers/media/video/omap/omap_vout.c +5 −2
  823. drivers/media/video/pwc/pwc-ctrl.c +102 −137
  824. drivers/media/video/pwc/pwc-dec1.c +4 −12
  825. drivers/media/video/pwc/pwc-dec1.h +4 −2
  826. drivers/media/video/pwc/pwc-dec23.c +18 −23
  827. drivers/media/video/pwc/pwc-dec23.h +6 −3
  828. drivers/media/video/pwc/pwc-if.c +16 −159
  829. drivers/media/video/pwc/pwc-misc.c +0 −1
  830. drivers/media/video/pwc/pwc-v4l.c +72 −18
  831. drivers/media/video/pwc/pwc.h +8 −6
  832. drivers/media/video/s5p-fimc/fimc-capture.c +4 −3
  833. drivers/media/video/s5p-fimc/fimc-core.c +3 −3
  834. drivers/media/video/s5p-fimc/fimc-mdevice.c +0 −1
  835. drivers/media/video/s5p-g2d/g2d.c +1 −0
  836. drivers/media/video/s5p-jpeg/jpeg-core.c +4 −3
  837. drivers/media/video/s5p-mfc/s5p_mfc.c +1 −2
  838. drivers/media/video/s5p-mfc/s5p_mfc_dec.c +1 −1
  839. drivers/media/video/saa7164/saa7164-cards.c +0 −4
  840. drivers/media/video/timblogiw.c +1 −1
  841. drivers/media/video/tlg2300/pd-main.c +2 −2
  842. drivers/media/video/v4l2-ctrls.c +27 −27
  843. drivers/media/video/v4l2-ioctl.c +7 −1
  844. drivers/media/video/zoran/zoran_driver.c +0 −1
  845. drivers/mfd/Kconfig +1 −1
  846. drivers/mfd/mcp-core.c +13 −48
  847. drivers/mfd/mcp-sa11x0.c +54 −115
  848. drivers/mfd/twl-core.c +4 −2
  849. drivers/mfd/twl4030-power.c +10 −10
  850. drivers/mfd/twl6040-core.c +77 −51
  851. drivers/mfd/ucb1x00-core.c +24 −43
  852. drivers/mfd/ucb1x00-ts.c +6 −28
  853. drivers/misc/Kconfig +3 −14
  854. drivers/misc/c2port/c2port-duramar2150.c +1 −0
  855. drivers/misc/carma/carma-fpga-program.c +1 −1
  856. drivers/misc/cb710/core.c +1 −0
  857. drivers/misc/cs5535-mfgpt.c +1 −1
  858. drivers/misc/lkdtm.c +5 −1
  859. drivers/misc/vmw_balloon.c +7 −7
  860. drivers/mmc/card/block.c +1 −0
  861. drivers/mmc/core/core.c +39 −10
  862. drivers/mmc/core/host.h +0 −21
  863. drivers/mmc/core/mmc.c +17 −9
  864. drivers/mmc/core/sd.c +18 −4
  865. drivers/mmc/core/sdio.c +4 −3
  866. drivers/mmc/core/sdio_irq.c +8 −2
  867. drivers/mmc/host/Kconfig +0 −1
  868. drivers/mmc/host/atmel-mci.c +10 −3
  869. drivers/mmc/host/dw_mmc.c +75 −69
  870. drivers/mmc/host/mmci.c +7 −4
  871. drivers/mmc/host/mxcmmc.c +7 −3
  872. drivers/mmc/host/mxs-mmc.c +9 −1
  873. drivers/mmc/host/of_mmc_spi.c +2 −2
  874. drivers/mmc/host/sdhci-of-esdhc.c +32 −0
  875. drivers/mmc/host/sdhci-pci.c +1 −1
  876. drivers/mmc/host/sdhci-pltfm.c +9 −1
  877. drivers/mmc/host/sh_mmcif.c +11 −9
  878. drivers/mmc/host/tmio_mmc.h +6 −1
  879. drivers/mmc/host/tmio_mmc_dma.c +14 −2
  880. drivers/mmc/host/tmio_mmc_pio.c +5 −1
  881. drivers/mtd/mtdcore.c +1 −1
  882. drivers/mtd/nand/atmel_nand.c +41 −4
  883. drivers/mtd/nand/gpmi-nand/gpmi-lib.c +26 −14
  884. drivers/mtd/nand/nand_base.c +1 −1
  885. drivers/net/bonding/bond_alb.c +9 −18
  886. drivers/net/can/cc770/cc770.c +3 −1
  887. drivers/net/can/cc770/cc770_isa.c +15 −1
  888. drivers/net/can/flexcan.c +6 −1
  889. drivers/net/can/pch_can.c +2 −1
  890. drivers/net/can/sja1000/peak_pci.c +9 −14
  891. drivers/net/can/ti_hecc.c +2 −1
  892. drivers/net/can/usb/ems_usb.c +0 −9
  893. drivers/net/dsa/mv88e6060.c +1 −0
  894. drivers/net/dsa/mv88e6123_61_65.c +18 −4
  895. drivers/net/dsa/mv88e6131.c +1 −0
  896. drivers/net/dsa/mv88e6xxx.c +1 −0
  897. drivers/net/ethernet/3com/3c59x.c +1 −1
  898. drivers/net/ethernet/broadcom/bcm63xx_enet.c +1 −1
  899. drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +2 −3
  900. drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +49 −69
  901. drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +169 −129
  902. drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +7 −21
  903. drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h +1 −0
  904. drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c +43 −1
  905. drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h +11 −0
  906. drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c +4 −4
  907. drivers/net/ethernet/broadcom/tg3.c +16 −20
  908. drivers/net/ethernet/brocade/bna/bnad_ethtool.c +4 −6
  909. drivers/net/ethernet/cisco/enic/enic.h +1 −1
  910. drivers/net/ethernet/cisco/enic/enic_main.c +22 −16
  911. drivers/net/ethernet/emulex/benet/be_ethtool.c +1 −5
  912. drivers/net/ethernet/emulex/benet/be_main.c +1 −2
  913. drivers/net/ethernet/faraday/ftgmac100.c +1 −0
  914. drivers/net/ethernet/faraday/ftmac100.c +1 −0
  915. drivers/net/ethernet/freescale/fec.c +2 −2
  916. drivers/net/ethernet/ibm/ehea/ehea_ethtool.c +1 −1
  917. drivers/net/ethernet/ibm/ehea/ehea_main.c +16 −16
  918. drivers/net/ethernet/ibm/ehea/ehea_qmr.c +6 −8
  919. drivers/net/ethernet/intel/e1000/e1000_main.c +6 −4
  920. drivers/net/ethernet/intel/igb/Makefile +1 −1
  921. drivers/net/ethernet/intel/igb/e1000_82575.c +1 −1
  922. drivers/net/ethernet/intel/igb/e1000_82575.h +1 −1
  923. drivers/net/ethernet/intel/igb/e1000_defines.h +1 −1
  924. drivers/net/ethernet/intel/igb/e1000_hw.h +1 −1
  925. drivers/net/ethernet/intel/igb/e1000_mac.c +2 −2
  926. drivers/net/ethernet/intel/igb/e1000_mac.h +1 −1
  927. drivers/net/ethernet/intel/igb/e1000_mbx.c +1 −1
  928. drivers/net/ethernet/intel/igb/e1000_mbx.h +1 −1
  929. drivers/net/ethernet/intel/igb/e1000_nvm.c +1 −1
  930. drivers/net/ethernet/intel/igb/e1000_nvm.h +1 −1
  931. drivers/net/ethernet/intel/igb/e1000_phy.c +1 −1
  932. drivers/net/ethernet/intel/igb/e1000_phy.h +1 −1
  933. drivers/net/ethernet/intel/igb/e1000_regs.h +1 −1
  934. drivers/net/ethernet/intel/igb/igb.h +1 −1
  935. drivers/net/ethernet/intel/igb/igb_ethtool.c +1 −1
  936. drivers/net/ethernet/intel/igb/igb_main.c +7 −6
  937. drivers/net/ethernet/intel/igbvf/Makefile +1 −1
  938. drivers/net/ethernet/intel/igbvf/defines.h +1 −1
  939. drivers/net/ethernet/intel/igbvf/ethtool.c +2 −3
  940. drivers/net/ethernet/intel/igbvf/igbvf.h +1 −1
  941. drivers/net/ethernet/intel/igbvf/mbx.c +1 −1
  942. drivers/net/ethernet/intel/igbvf/mbx.h +1 −1
  943. drivers/net/ethernet/intel/igbvf/netdev.c +2 −7
  944. drivers/net/ethernet/intel/igbvf/regs.h +1 −1
  945. drivers/net/ethernet/intel/igbvf/vf.c +1 −1
  946. drivers/net/ethernet/intel/igbvf/vf.h +1 −1
  947. drivers/net/ethernet/intel/ixgbe/Makefile +1 −1
  948. drivers/net/ethernet/intel/ixgbe/ixgbe.h +1 −1
  949. drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c +1 −1
  950. drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c +1 −1
  951. drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +1 −1
  952. drivers/net/ethernet/intel/ixgbe/ixgbe_common.h +2 −2
  953. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c +1 −1
  954. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.h +1 −1
  955. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c +1 −1
  956. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.h +1 −1
  957. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c +1 −1
  958. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.h +1 −1
  959. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +10 −3
  960. drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +53 −39
  961. drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c +1 −1
  962. drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.h +1 −1
  963. drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +13 −9
  964. drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c +1 −1
  965. drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h +1 −1
  966. drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +1 −1
  967. drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h +1 −1
  968. drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +6 −2
  969. drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h +1 −1
  970. drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +17 −17
  971. drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c +1 −1
  972. drivers/net/ethernet/intel/ixgbevf/Makefile +1 −1
  973. drivers/net/ethernet/intel/ixgbevf/defines.h +1 −1
  974. drivers/net/ethernet/intel/ixgbevf/ethtool.c +4 −3
  975. drivers/net/ethernet/intel/ixgbevf/ixgbevf.h +5 −5
  976. drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +27 −20
  977. drivers/net/ethernet/intel/ixgbevf/mbx.c +3 −2
  978. drivers/net/ethernet/intel/ixgbevf/mbx.h +1 −1
  979. drivers/net/ethernet/intel/ixgbevf/regs.h +1 −1
  980. drivers/net/ethernet/intel/ixgbevf/vf.c +20 −8
  981. drivers/net/ethernet/intel/ixgbevf/vf.h +2 −2
  982. drivers/net/ethernet/marvell/mv643xx_eth.c +14 −0
  983. drivers/net/ethernet/marvell/skge.c +25 −13
  984. drivers/net/ethernet/mellanox/mlx4/cmd.c +13 −6
  985. drivers/net/ethernet/mellanox/mlx4/cq.c +2 −2
  986. drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +143 −16
  987. drivers/net/ethernet/mellanox/mlx4/en_main.c +1 −5
  988. drivers/net/ethernet/mellanox/mlx4/en_netdev.c +28 −13
  989. drivers/net/ethernet/mellanox/mlx4/en_rx.c +14 −4
  990. drivers/net/ethernet/mellanox/mlx4/eq.c +12 −14
  991. drivers/net/ethernet/mellanox/mlx4/fw.c +0 −7
  992. drivers/net/ethernet/mellanox/mlx4/fw.h +0 −1
  993. drivers/net/ethernet/mellanox/mlx4/main.c +1 −2
  994. drivers/net/ethernet/mellanox/mlx4/mcg.c +8 −8
  995. drivers/net/ethernet/mellanox/mlx4/mlx4.h +5 −3
  996. drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +4 −2
  997. drivers/net/ethernet/mellanox/mlx4/mr.c +1 −1
  998. drivers/net/ethernet/mellanox/mlx4/pd.c +1 −2
  999. drivers/net/ethernet/mellanox/mlx4/port.c +23 −0
  1000. drivers/net/ethernet/mellanox/mlx4/profile.c +1 −1
  1001. drivers/net/ethernet/mellanox/mlx4/qp.c +1 −1
  1002. drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +15 −45
  1003. drivers/net/ethernet/mellanox/mlx4/srq.c +1 −1
  1004. drivers/net/ethernet/micrel/Kconfig +0 −1
  1005. drivers/net/ethernet/micrel/ks8842.c +2 −2
  1006. drivers/net/ethernet/micrel/ks8851.c +1 −1
  1007. drivers/net/ethernet/micrel/ks8851_mll.c +6 −8
  1008. drivers/net/ethernet/octeon/octeon_mgmt.c +2 −2
  1009. drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +14 −3
  1010. drivers/net/ethernet/renesas/sh_eth.c +4 −2
  1011. drivers/net/ethernet/renesas/sh_eth.h +0 −3
  1012. drivers/net/ethernet/stmicro/stmmac/common.h +1 −0
  1013. drivers/net/ethernet/stmicro/stmmac/enh_desc.c +1 −1
  1014. drivers/net/ethernet/stmicro/stmmac/norm_desc.c +1 −1
  1015. drivers/net/ethernet/stmicro/stmmac/stmmac.h +3 −2
  1016. drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +6 −1
  1017. drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +107 −98
  1018. drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +1 −1
  1019. drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +5 −7
  1020. drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +10 −13
  1021. drivers/net/ethernet/ti/cpmac.c +2 −2
  1022. drivers/net/ethernet/ti/davinci_emac.c +2 −1
  1023. drivers/net/ethernet/ti/davinci_mdio.c +1 −1
  1024. drivers/net/ethernet/toshiba/Kconfig +1 −1
  1025. drivers/net/ethernet/via/via-velocity.c +0 −3
  1026. drivers/net/ethernet/xscale/ixp4xx_eth.c +2 −1
  1027. drivers/net/hyperv/netvsc_drv.c +12 −11
  1028. drivers/net/hyperv/rndis_filter.c +32 −0
  1029. drivers/net/macvlan.c +1 −0
  1030. drivers/net/phy/mdio_bus.c +2 −3
  1031. drivers/net/team/team.c +90 −46
  1032. drivers/net/tokenring/Kconfig +4 −1
  1033. drivers/net/usb/ipheth.c +5 −0
  1034. drivers/net/veth.c +3 −1
  1035. drivers/net/wireless/ath/ath9k/ar9003_mac.c +3 −2
  1036. drivers/net/wireless/ath/ath9k/hw.c +5 −2
  1037. drivers/net/wireless/ath/ath9k/init.c +5 −4
  1038. drivers/net/wireless/ath/ath9k/mac.c +3 −2
  1039. drivers/net/wireless/ath/ath9k/rc.c +1 −1
  1040. drivers/net/wireless/ath/ath9k/recv.c +8 −0
  1041. drivers/net/wireless/b43/Kconfig +6 −0
  1042. drivers/net/wireless/b43/main.c +6 −1
  1043. drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +1 −1
  1044. drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +4 −36
  1045. drivers/net/wireless/brcm80211/brcmsmac/main.c +9 −1
  1046. drivers/net/wireless/ipw2x00/ipw2200.c +2 −2
  1047. drivers/net/wireless/iwlwifi/iwl-agn-tx.c +10 −4
  1048. drivers/net/wireless/iwlwifi/iwl-commands.h +1 −0
  1049. drivers/net/wireless/iwlwifi/iwl-scan.c +1 −1
  1050. drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +2 −2
  1051. drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +1 −0
  1052. drivers/net/wireless/mwifiex/init.c +2 −1
  1053. drivers/net/wireless/mwifiex/main.c +8 −4
  1054. drivers/net/wireless/mwifiex/sta_ioctl.c +7 −1
  1055. drivers/net/wireless/mwl8k.c +2 −2
  1056. drivers/net/wireless/rt2x00/rt2800lib.c +4 −4
  1057. drivers/net/wireless/rt2x00/rt2800pci.c +8 −20
  1058. drivers/net/wireless/rtlwifi/pci.c +2 −2
  1059. drivers/net/wireless/zd1211rw/zd_mac.c +8 −0
  1060. drivers/net/xen-netfront.c +1 −1
  1061. drivers/pci/iov.c +1 −2
  1062. drivers/pci/pci.c +3 −3
  1063. drivers/pci/probe.c +5 −0
  1064. drivers/pci/remove.c +22 −6
  1065. drivers/pci/xen-pcifront.c +5 −5
  1066. drivers/pcmcia/ds.c +1 −3
  1067. drivers/pcmcia/sa1111_generic.c +2 −1
  1068. drivers/pinctrl/core.c +32 −20
  1069. drivers/pinctrl/core.h +3 −0
  1070. drivers/pinctrl/pinconf.c +4 −2
  1071. drivers/pinctrl/pinconf.h +2 −2
  1072. drivers/pinctrl/pinmux.c +43 −38
  1073. drivers/pinctrl/pinmux.h +2 −2
  1074. drivers/platform/x86/ibm_rtl.c +2 −13
  1075. drivers/platform/x86/intel_ips.c +2 −13
  1076. drivers/power/bq27x00_battery.c +5 −10
  1077. drivers/power/charger-manager.c +2 −2
  1078. drivers/power/lp8727_charger.c +1 −0
  1079. drivers/regulator/core.c +2 −0
  1080. drivers/regulator/max8649.c +1 −1
  1081. drivers/regulator/mc13xxx-regulator-core.c +2 −0
  1082. drivers/regulator/of_regulator.c +1 −1
  1083. drivers/rtc/Kconfig +1 −1
  1084. drivers/rtc/rtc-at91sam9.c +10 −3
  1085. drivers/rtc/rtc-sa1100.c +113 −182
  1086. drivers/s390/block/dasd.c +6 −0
  1087. drivers/s390/block/dasd_alias.c +1 −63
  1088. drivers/s390/block/dasd_eckd.c +37 −26
  1089. drivers/s390/block/dasd_int.h +2 −0
  1090. drivers/s390/char/con3215.c +15 −7
  1091. drivers/scsi/Kconfig +0 −5
  1092. drivers/scsi/bfa/bfa_defs_svc.h +1 −6
  1093. drivers/scsi/bfa/bfa_fc.h +0 −155
  1094. drivers/scsi/bfa/bfa_fcpim.c +5 −411
  1095. drivers/scsi/bfa/bfa_fcpim.h +0 −7
  1096. drivers/scsi/bfa/bfa_svc.h +0 −5
  1097. drivers/scsi/bfa/bfad.c +2 −0
  1098. drivers/scsi/bfa/bfad_attr.c +1 −1
  1099. drivers/scsi/bfa/bfad_bsg.c +24 −3
  1100. drivers/scsi/bfa/bfad_drv.h +2 −0
  1101. drivers/scsi/bfa/bfad_im.c +56 −0
  1102. drivers/scsi/bfa/bfad_im.h +27 −0
  1103. drivers/scsi/cxgbi/libcxgbi.c +3 −2
  1104. drivers/scsi/device_handler/scsi_dh_alua.c +5 −0
  1105. drivers/scsi/device_handler/scsi_dh_rdac.c +2 −0
  1106. drivers/scsi/fcoe/fcoe.c +25 −21
  1107. drivers/scsi/fcoe/fcoe.h +1 −3
  1108. drivers/scsi/hpsa.c +2 −0
  1109. drivers/scsi/isci/firmware/Makefile +0 −19
  1110. drivers/scsi/isci/firmware/README +0 −36
  1111. drivers/scsi/isci/firmware/create_fw.c +0 −99
  1112. drivers/scsi/isci/firmware/create_fw.h +0 −77
  1113. drivers/scsi/isci/host.c +263 −77
  1114. drivers/scsi/isci/host.h +26 −1
  1115. drivers/scsi/isci/init.c +21 −4
  1116. drivers/scsi/isci/isci.h +1 −0
  1117. drivers/scsi/isci/phy.c +111 −61
  1118. drivers/scsi/isci/port.c +58 −46
  1119. drivers/scsi/isci/port.h +10 −0
  1120. drivers/scsi/isci/port_config.c +22 −13
  1121. drivers/scsi/isci/probe_roms.c +1 −1
  1122. drivers/scsi/isci/probe_roms.h +86 −3
  1123. drivers/scsi/isci/remote_device.c +7 −3
  1124. drivers/scsi/isci/task.c +1 −1
  1125. drivers/scsi/isci/task.h +3 −4
  1126. drivers/scsi/libfc/fc_disc.c +3 −3
  1127. drivers/scsi/libfc/fc_elsct.c +1 −0
  1128. drivers/scsi/libfc/fc_exch.c +1 −1
  1129. drivers/scsi/libfc/fc_fcp.c +1 −3
  1130. drivers/scsi/libfc/fc_lport.c +3 −2
  1131. drivers/scsi/libfc/fc_rport.c +5 −5
  1132. drivers/scsi/mac_esp.c +1 −2
  1133. drivers/scsi/mac_scsi.c +0 −6
  1134. drivers/scsi/megaraid.c +8 −5
  1135. drivers/scsi/megaraid/megaraid_sas.h +3 −5
  1136. drivers/scsi/megaraid/megaraid_sas_base.c +3 −142
  1137. drivers/scsi/megaraid/megaraid_sas_fp.c +3 −1
  1138. drivers/scsi/qla4xxx/ql4_def.h +3 −0
  1139. drivers/scsi/qla4xxx/ql4_init.c +3 −0
  1140. drivers/scsi/qla4xxx/ql4_mbx.c +7 −0
  1141. drivers/scsi/qla4xxx/ql4_nx.c +7 −21
  1142. drivers/scsi/qla4xxx/ql4_nx.h +19 −3
  1143. drivers/scsi/qla4xxx/ql4_os.c +326 −185
  1144. drivers/scsi/qla4xxx/ql4_version.h +1 −1
  1145. drivers/scsi/scsi_lib.c +1 −6
  1146. drivers/scsi/scsi_transport_fc.c +2 −1
  1147. drivers/scsi/sg.c +11 −14
  1148. drivers/scsi/sym53c8xx_2/sym_glue.c +4 −0
  1149. drivers/spi/Kconfig +1 −1
  1150. drivers/spi/spi-dw-mid.c +4 −4
  1151. drivers/spi/spi-ep93xx.c +6 −3
  1152. drivers/spi/spi-pl022.c +4 −4
  1153. drivers/spi/spi-topcliff-pch.c +5 −5
  1154. drivers/ssb/driver_pcicore.c +1 −1
  1155. drivers/staging/Kconfig +0 −4
  1156. drivers/staging/Makefile +0 −2
  1157. drivers/staging/android/Kconfig +1 −4
  1158. drivers/staging/android/Makefile +0 −1
  1159. drivers/staging/android/android_pmem.h +0 −93
  1160. drivers/staging/android/binder.c +11 −2
  1161. drivers/staging/android/lowmemorykiller.c +4 −1
  1162. drivers/staging/android/pmem.c +0 −1345
  1163. drivers/staging/asus_oled/asus_oled.c +9 −4
  1164. drivers/staging/gma500/Kconfig +0 −33
  1165. drivers/staging/gma500/Makefile +0 −52
  1166. drivers/staging/gma500/TODO +0 −15
  1167. drivers/staging/gma500/accel_2d.c +0 −414
  1168. drivers/staging/gma500/backlight.c +0 −49
  1169. drivers/staging/gma500/cdv_device.c +0 −350
  1170. drivers/staging/gma500/cdv_device.h +0 −36
  1171. drivers/staging/gma500/cdv_intel_crt.c +0 −326
  1172. drivers/staging/gma500/cdv_intel_display.c +0 −1508
  1173. drivers/staging/gma500/cdv_intel_hdmi.c +0 −376
  1174. drivers/staging/gma500/cdv_intel_lvds.c +0 −721
  1175. drivers/staging/gma500/displays/hdmi.h +0 −33
  1176. drivers/staging/gma500/displays/pyr_cmd.h +0 −34
  1177. drivers/staging/gma500/displays/pyr_vid.h +0 −34
  1178. drivers/staging/gma500/displays/tmd_cmd.h +0 −34
  1179. drivers/staging/gma500/displays/tmd_vid.h +0 −34
  1180. drivers/staging/gma500/displays/tpo_cmd.h +0 −35
  1181. drivers/staging/gma500/displays/tpo_vid.h +0 −33
  1182. drivers/staging/gma500/framebuffer.c +0 −856
  1183. drivers/staging/gma500/framebuffer.h +0 −48
  1184. drivers/staging/gma500/gem.c +0 −292
  1185. drivers/staging/gma500/gem_glue.c +0 −89
  1186. drivers/staging/gma500/gem_glue.h +0 −2
  1187. drivers/staging/gma500/gtt.c +0 −553
  1188. drivers/staging/gma500/gtt.h +0 −64
  1189. drivers/staging/gma500/intel_bios.c +0 −303
  1190. drivers/staging/gma500/intel_bios.h +0 −430
  1191. drivers/staging/gma500/intel_i2c.c +0 −170
  1192. drivers/staging/gma500/intel_opregion.c +0 −81
  1193. drivers/staging/gma500/mdfld_device.c +0 −714
  1194. drivers/staging/gma500/mdfld_dsi_dbi.c +0 −761
  1195. drivers/staging/gma500/mdfld_dsi_dbi.h +0 −173
  1196. drivers/staging/gma500/mdfld_dsi_dbi_dpu.c +0 −778
  1197. drivers/staging/gma500/mdfld_dsi_dbi_dpu.h +0 −154
  1198. drivers/staging/gma500/mdfld_dsi_dpi.c +0 −805
  1199. drivers/staging/gma500/mdfld_dsi_dpi.h +0 −78
  1200. drivers/staging/gma500/mdfld_dsi_output.c +0 −1014
  1201. drivers/staging/gma500/mdfld_dsi_output.h +0 −138
  1202. drivers/staging/gma500/mdfld_dsi_pkg_sender.c +0 −1484
  1203. drivers/staging/gma500/mdfld_dsi_pkg_sender.h +0 −184
  1204. drivers/staging/gma500/mdfld_intel_display.c +0 −1404
  1205. drivers/staging/gma500/mdfld_msic.h +0 −31
  1206. drivers/staging/gma500/mdfld_output.c +0 −171
  1207. drivers/staging/gma500/mdfld_output.h +0 −41
  1208. drivers/staging/gma500/mdfld_pyr_cmd.c +0 −558
  1209. drivers/staging/gma500/mdfld_tmd_vid.c +0 −206
  1210. drivers/staging/gma500/mdfld_tpo_cmd.c +0 −509
  1211. drivers/staging/gma500/mdfld_tpo_vid.c +0 −140
  1212. drivers/staging/gma500/medfield.h +0 −268
  1213. drivers/staging/gma500/mid_bios.c +0 −270
  1214. drivers/staging/gma500/mid_bios.h +0 −21
  1215. drivers/staging/gma500/mmu.c +0 −858
  1216. drivers/staging/gma500/mrst.h +0 −252
  1217. drivers/staging/gma500/mrst_crtc.c +0 −604
  1218. drivers/staging/gma500/mrst_device.c +0 −634
  1219. drivers/staging/gma500/mrst_hdmi.c +0 −852
  1220. drivers/staging/gma500/mrst_hdmi_i2c.c +0 −328
  1221. drivers/staging/gma500/mrst_lvds.c +0 −407
  1222. drivers/staging/gma500/power.c +0 −318
  1223. drivers/staging/gma500/power.h +0 −67
  1224. drivers/staging/gma500/psb_device.c +0 −321
  1225. drivers/staging/gma500/psb_drm.h +0 −219
  1226. drivers/staging/gma500/psb_drv.c +0 −1230
  1227. drivers/staging/gma500/psb_drv.h +0 −952
  1228. drivers/staging/gma500/psb_intel_display.c +0 −1429
  1229. drivers/staging/gma500/psb_intel_display.h +0 −28
  1230. drivers/staging/gma500/psb_intel_drv.h +0 −230
  1231. drivers/staging/gma500/psb_intel_lvds.c +0 −854
  1232. drivers/staging/gma500/psb_intel_modes.c +0 −77
  1233. drivers/staging/gma500/psb_intel_reg.h +0 −1235
  1234. drivers/staging/gma500/psb_intel_sdvo.c +0 −1293
  1235. drivers/staging/gma500/psb_intel_sdvo_regs.h +0 −338
  1236. drivers/staging/gma500/psb_irq.c +0 −627
  1237. drivers/staging/gma500/psb_irq.h +0 −45
  1238. drivers/staging/gma500/psb_lid.c +0 −88
  1239. drivers/staging/gma500/psb_reg.h +0 −582
  1240. drivers/staging/media/go7007/go7007-usb.c +1 −0
  1241. drivers/staging/omapdrm/Makefile +1 −0
  1242. drivers/staging/omapdrm/omap_crtc.c +45 −146
  1243. drivers/staging/omapdrm/omap_drv.c +48 −33
  1244. drivers/staging/omapdrm/omap_drv.h +46 −6
  1245. drivers/staging/omapdrm/omap_fb.c +167 −57
  1246. drivers/staging/omapdrm/omap_fbdev.c +37 −22
  1247. drivers/staging/omapdrm/omap_gem.c +19 −4
  1248. drivers/staging/omapdrm/omap_plane.c +344 −0
  1249. drivers/staging/omapdrm/omap_priv.h +10 −2
  1250. drivers/staging/pohmelfs/Kconfig +0 −20
  1251. drivers/staging/pohmelfs/Makefile +0 −3
  1252. drivers/staging/pohmelfs/config.c +0 −611
  1253. drivers/staging/pohmelfs/crypto.c +0 −878
  1254. drivers/staging/pohmelfs/dir.c +0 −1102
  1255. drivers/staging/pohmelfs/inode.c +0 −2055
  1256. drivers/staging/pohmelfs/lock.c +0 −182
  1257. drivers/staging/pohmelfs/mcache.c +0 −171
  1258. drivers/staging/pohmelfs/net.c +0 −1209
  1259. drivers/staging/pohmelfs/netfs.h +0 −919
  1260. drivers/staging/pohmelfs/path_entry.c +0 −120
  1261. drivers/staging/pohmelfs/trans.c +0 −706
  1262. drivers/staging/rtl8712/drv_types.h +7 −0
  1263. drivers/staging/rtl8712/hal_init.c +43 −19
  1264. drivers/staging/rtl8712/os_intfs.c +11 −3
  1265. drivers/staging/rtl8712/rtl8712_hal.h +1 −0
  1266. drivers/staging/rtl8712/rtl871x_sta_mgt.c +1 −0
  1267. drivers/staging/rtl8712/usb_intf.c +7 −3
  1268. drivers/staging/tidspbridge/core/tiomap3430.c +0 −2
  1269. drivers/staging/tidspbridge/rmgr/drv_interface.c +35 −23
  1270. drivers/staging/usbip/stub_main.c +2 −2
  1271. drivers/staging/zcache/zcache-main.c +12 −13
  1272. drivers/target/iscsi/iscsi_target.c +43 −15
  1273. drivers/target/iscsi/iscsi_target_auth.c +20 −16
  1274. drivers/target/iscsi/iscsi_target_configfs.c +4 −8
  1275. drivers/target/iscsi/iscsi_target_core.h +4 −2
  1276. drivers/target/iscsi/iscsi_target_device.c +1 −2
  1277. drivers/target/iscsi/iscsi_target_erl0.c +1 −1
  1278. drivers/target/iscsi/iscsi_target_erl1.c +3 −3
  1279. drivers/target/iscsi/iscsi_target_erl2.c +1 −1
  1280. drivers/target/iscsi/iscsi_target_login.c +47 −15
  1281. drivers/target/iscsi/iscsi_target_nego.c +2 −2
  1282. drivers/target/iscsi/iscsi_target_nodeattrib.c +1 −2
  1283. drivers/target/iscsi/iscsi_target_stat.c +8 −9
  1284. drivers/target/iscsi/iscsi_target_tmr.c +1 −1
  1285. drivers/target/iscsi/iscsi_target_tpg.c +2 −4
  1286. drivers/target/iscsi/iscsi_target_util.c +14 −5
  1287. drivers/target/loopback/tcm_loop.c +11 −22
  1288. drivers/target/loopback/tcm_loop.h +1 −10
  1289. drivers/target/target_core_alua.c +7 −8
  1290. drivers/target/target_core_cdb.c +50 −40
  1291. drivers/target/target_core_cdb.h +0 −14
  1292. drivers/target/target_core_configfs.c +25 −17
  1293. drivers/target/target_core_device.c +18 −25
  1294. drivers/target/target_core_fabric_configfs.c +4 −8
  1295. drivers/target/target_core_fabric_lib.c +5 −8
  1296. drivers/target/target_core_file.c +7 −8
  1297. drivers/target/target_core_hba.c +3 −4
  1298. drivers/target/target_core_hba.h +0 −7
  1299. drivers/target/target_core_iblock.c +12 −6
  1300. drivers/target/target_core_internal.h +123 −0
  1301. drivers/target/target_core_pr.c +25 −42
  1302. drivers/target/target_core_pr.h +0 −2
  1303. drivers/target/target_core_pscsi.c +11 −13
  1304. drivers/target/target_core_rd.c +2 −4
  1305. drivers/target/target_core_stat.c +4 −5
  1306. drivers/target/target_core_stat.h +0 −8
  1307. drivers/target/target_core_tmr.c +22 −14
  1308. drivers/target/target_core_tpg.c +4 −8
  1309. drivers/target/target_core_transport.c +270 −175
  1310. drivers/target/target_core_ua.c +2 −4
  1311. drivers/target/tcm_fc/tfc_cmd.c +14 −48
  1312. drivers/target/tcm_fc/tfc_conf.c +1 −5
  1313. drivers/target/tcm_fc/tfc_io.c +1 −4
  1314. drivers/target/tcm_fc/tfc_sess.c +1 −4
  1315. drivers/thermal/thermal_sys.c +2 −2
  1316. drivers/tty/serial/8250/8250.c +1 −1
  1317. drivers/tty/serial/8250/8250.h +0 −0
  1318. drivers/tty/serial/8250/8250_accent.c +0 −0
  1319. drivers/tty/serial/8250/8250_acorn.c +0 −0
  1320. drivers/tty/serial/8250/8250_boca.c +0 −0
  1321. drivers/tty/serial/8250/8250_dw.c +0 −0
  1322. drivers/tty/serial/8250/8250_early.c +0 −0
  1323. drivers/tty/serial/8250/8250_exar_st16c554.c +0 −0
  1324. drivers/tty/serial/8250/8250_fourport.c +0 −0
  1325. drivers/tty/serial/8250/8250_fsl.c +0 −0
  1326. drivers/tty/serial/8250/8250_gsc.c +0 −0
  1327. drivers/tty/serial/8250/8250_hp300.c +0 −0
  1328. drivers/tty/serial/8250/8250_hub6.c +0 −0
  1329. drivers/tty/serial/8250/8250_mca.c +0 −0
  1330. drivers/tty/serial/8250/8250_pci.c +0 −0
  1331. drivers/tty/serial/8250/8250_pnp.c +0 −0
  1332. drivers/tty/serial/8250/Kconfig +280 −0
  1333. drivers/tty/serial/8250/Makefile +20 −0
  1334. drivers/tty/serial/8250/serial_cs.c +0 −0
  1335. drivers/tty/serial/Kconfig +1 −282
  1336. drivers/tty/serial/Makefile +3 −17
  1337. drivers/tty/serial/amba-pl011.c +32 −6
  1338. drivers/tty/serial/jsm/jsm_driver.c +1 −0
  1339. drivers/tty/serial/max3107-aava.c +0 −344
  1340. drivers/tty/serial/omap-serial.c +27 −7
  1341. drivers/tty/serial/pch_uart.c +2 −2
  1342. drivers/tty/serial/samsung.c +2 −1
  1343. drivers/tty/serial/serial_core.c +3 −3
  1344. drivers/tty/serial/sh-sci.c +2 −2
  1345. drivers/tty/tty_port.c +7 −5
  1346. drivers/tty/vt/vt_ioctl.c +0 −1
  1347. drivers/usb/class/cdc-wdm.c +38 −21
  1348. drivers/usb/core/hcd-pci.c +4 −1
  1349. drivers/usb/core/hcd.c +4 −2
  1350. drivers/usb/core/hub.c +17 −13
  1351. drivers/usb/dwc3/ep0.c +4 −11
  1352. drivers/usb/dwc3/gadget.c +1 −1
  1353. drivers/usb/gadget/composite.c +3 −4
  1354. drivers/usb/gadget/epautoconf.c +1 −1
  1355. drivers/usb/gadget/f_loopback.c +1 −1
  1356. drivers/usb/gadget/f_mass_storage.c +5 −5
  1357. drivers/usb/gadget/fsl_udc_core.c +2 −2
  1358. drivers/usb/gadget/langwell_udc.c +10 −97
  1359. drivers/usb/gadget/langwell_udc.h +0 −1
  1360. drivers/usb/gadget/storage_common.c +3 −3
  1361. drivers/usb/host/Kconfig +4 −4
  1362. drivers/usb/host/ehci-fsl.c +10 −3
  1363. drivers/usb/host/ehci-fsl.h +1 −0
  1364. drivers/usb/host/ehci-pci.c +6 −0
  1365. drivers/usb/host/ehci-xilinx-of.c +1 −1
  1366. drivers/usb/host/ohci-at91.c +22 −2
  1367. drivers/usb/host/ohci-dbg.c +10 −2
  1368. drivers/usb/host/ohci-pci.c +4 −0
  1369. drivers/usb/host/pci-quirks.c +17 −0
  1370. drivers/usb/host/xhci-hub.c +1 −1
  1371. drivers/usb/host/xhci-mem.c +24 −8
  1372. drivers/usb/host/xhci-ring.c +4 −2
  1373. drivers/usb/host/xhci.c +5 −0
  1374. drivers/usb/misc/emi26.c +0 −3
  1375. drivers/usb/misc/emi62.c +0 −3
  1376. drivers/usb/misc/usbsevseg.c +1 −1
  1377. drivers/usb/musb/davinci.c +0 −3
  1378. drivers/usb/musb/musb_core.c +3 −2
  1379. drivers/usb/musb/musb_io.h +2 −1
  1380. drivers/usb/musb/omap2430.c +2 −2
  1381. drivers/usb/musb/ux500_dma.c +2 −2
  1382. drivers/usb/otg/Kconfig +2 −16
  1383. drivers/usb/otg/Makefile +0 −1
  1384. drivers/usb/otg/langwell_otg.c +0 −2347
  1385. drivers/usb/otg/mv_otg.c +2 −0
  1386. drivers/usb/renesas_usbhs/fifo.c +2 −2
  1387. drivers/usb/renesas_usbhs/mod_gadget.c +1 −1
  1388. drivers/usb/serial/cp210x.c +77 −30
  1389. drivers/usb/serial/ftdi_sio.c +11 −4
  1390. drivers/usb/serial/ftdi_sio_ids.h +26 −0
  1391. drivers/usb/serial/io_ti.c +2 −8
  1392. drivers/usb/serial/kobil_sct.c +1 −1
  1393. drivers/usb/serial/option.c +30 −15
  1394. drivers/usb/serial/qcaux.c +6 −1
  1395. drivers/usb/serial/qcserial.c +14 −2
  1396. drivers/usb/serial/ti_usb_3410_5052.c +4 −2
  1397. drivers/usb/serial/ti_usb_3410_5052.h +4 −0
  1398. drivers/usb/storage/realtek_cr.c +1 −1
  1399. drivers/usb/storage/usb.c +31 −59
  1400. drivers/usb/storage/usb.h +4 −3
  1401. drivers/usb/usb-skeleton.c +1 −17
  1402. drivers/usb/wusbcore/Kconfig +1 −1
  1403. drivers/vhost/net.c +5 −3
  1404. drivers/video/atmel_lcdfb.c +1 −1
  1405. drivers/video/backlight/adp8860_bl.c +1 −1
  1406. drivers/video/backlight/adp8870_bl.c +1 −1
  1407. drivers/video/backlight/l4f00242t03.c +2 −0
  1408. drivers/video/fsl-diu-fb.c +2 −2
  1409. drivers/video/intelfb/intelfbdrv.c +0 −1
  1410. drivers/video/macfb.c +28 −32
  1411. drivers/video/mx3fb.c +24 −41
  1412. drivers/video/omap2/dss/dispc.c +1 −1
  1413. drivers/video/omap2/dss/dpi.c +5 −0
  1414. drivers/video/omap2/dss/dsi.c +1 −1
  1415. drivers/video/omap2/dss/dss.c +1 −1
  1416. drivers/video/omap2/dss/hdmi.c +4 −1
  1417. drivers/video/omap2/dss/rfbi.c +1 −1
  1418. drivers/video/omap2/dss/ti_hdmi.h +4 −0
  1419. drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c +64 −4
  1420. drivers/video/omap2/dss/venc.c +1 −1
  1421. drivers/virtio/virtio_ring.c +4 −4
  1422. drivers/watchdog/dw_wdt.c +1 −5
  1423. drivers/watchdog/iTCO_wdt.c +35 −0
  1424. drivers/watchdog/imx2_wdt.c +1 −10
  1425. drivers/watchdog/nuc900_wdt.c +3 −2
  1426. drivers/watchdog/omap_wdt.c +2 −0
  1427. drivers/watchdog/pnx4008_wdt.c +1 −1
  1428. drivers/watchdog/stmp3xxx_wdt.c +1 −1
  1429. drivers/watchdog/via_wdt.c +3 −3
  1430. drivers/watchdog/wafer5823wdt.c +2 −2
  1431. drivers/watchdog/wm8350_wdt.c +2 −2
  1432. drivers/xen/biomerge.c +2 −0
  1433. drivers/xen/cpu_hotplug.c +2 −1
  1434. drivers/xen/grant-table.c +5 −2
  1435. drivers/xen/xen-balloon.c +1 −1
  1436. drivers/xen/xen-pciback/pci_stub.c +4 −4
  1437. drivers/xen/xen-pciback/xenbus.c +3 −2
  1438. drivers/xen/xenbus/xenbus_dev_frontend.c +4 −0
  1439. firmware/Makefile +0 −1
  1440. firmware/isci/isci_firmware.bin.ihex +0 −16
  1441. fs/autofs4/expire.c +2 −0
  1442. fs/bio.c +3 −7
  1443. fs/btrfs/Kconfig +19 −0
  1444. fs/btrfs/Makefile +2 −1
  1445. fs/btrfs/backref.c +878 −253
  1446. fs/btrfs/backref.h +5 −0
  1447. fs/btrfs/btrfs_inode.h +3 −0
  1448. fs/btrfs/check-integrity.c +3069 −0
  1449. fs/btrfs/check-integrity.h +36 −0
  1450. fs/btrfs/ctree.c +21 −21
  1451. fs/btrfs/ctree.h +217 −22
  1452. fs/btrfs/delayed-inode.c +33 −12
  1453. fs/btrfs/delayed-ref.c +106 −47
  1454. fs/btrfs/delayed-ref.h +91 −13
  1455. fs/btrfs/disk-io.c +84 −42
  1456. fs/btrfs/disk-io.h +3 −3
  1457. fs/btrfs/export.c +1 −1
  1458. fs/btrfs/extent-tree.c +373 −141
  1459. fs/btrfs/extent_io.c +6 −2
  1460. fs/btrfs/extent_io.h +2 −0
  1461. fs/btrfs/file.c +5 −6
  1462. fs/btrfs/free-space-cache.c +259 −163
  1463. fs/btrfs/inode-map.c +4 −0
  1464. fs/btrfs/inode.c +41 −35
  1465. fs/btrfs/ioctl.c +237 −33
  1466. fs/btrfs/ioctl.h +54 −0
  1467. fs/btrfs/locking.c +51 −2
  1468. fs/btrfs/relocation.c +10 −10
  1469. fs/btrfs/scrub.c +7 −5
  1470. fs/btrfs/super.c +109 −81
  1471. fs/btrfs/transaction.c +10 −10
  1472. fs/btrfs/tree-log.c +5 −3
  1473. fs/btrfs/ulist.c +220 −0
  1474. fs/btrfs/ulist.h +68 −0
  1475. fs/btrfs/volumes.c +828 −165
  1476. fs/btrfs/volumes.h +51 −3
  1477. fs/btrfs/xattr.c +1 −1
  1478. fs/ceph/caps.c +2 −2
  1479. fs/ceph/dir.c +2 −2
  1480. fs/ceph/mds_client.c +7 −3
  1481. fs/ceph/mds_client.h +5 −2
  1482. fs/ceph/xattr.c +3 −1
  1483. fs/cifs/Kconfig +3 −4
  1484. fs/cifs/cifs_debug.c +10 −1
  1485. fs/cifs/cifs_spnego.c +7 −3
  1486. fs/cifs/cifs_unicode.c +21 −20
  1487. fs/cifs/cifs_unicode.h +10 −10
  1488. fs/cifs/cifsacl.c +2 −0
  1489. fs/cifs/cifsencrypt.c +13 −8
  1490. fs/cifs/cifsglob.h +2 −0
  1491. fs/cifs/cifssmb.c +84 −78
  1492. fs/cifs/connect.c +254 −64
  1493. fs/cifs/dir.c +1 −1
  1494. fs/cifs/readdir.c +5 −4
  1495. fs/cifs/sess.c +24 −21
  1496. fs/cifs/smbencrypt.c +1 −1
  1497. fs/compat.c +25 −31
  1498. fs/dcache.c +4 −4
  1499. fs/debugfs/file.c +1 −1
  1500. fs/ecryptfs/crypto.c +70 −52
  1501. fs/ecryptfs/ecryptfs_kernel.h +11 −0
  1502. fs/ecryptfs/inode.c +38 −12
  1503. fs/ecryptfs/keystore.c +6 −8
  1504. fs/ecryptfs/miscdev.c +85 −55
  1505. fs/ecryptfs/mmap.c +6 −6
  1506. fs/ecryptfs/read_write.c +18 −82
  1507. fs/ecryptfs/super.c +13 −1
  1508. fs/exec.c +17 −16
  1509. fs/ext2/ioctl.c +16 −6
  1510. fs/fs-writeback.c +8 −8
  1511. fs/inode.c +4 −7
  1512. fs/ioprio.c +1 −1
  1513. fs/jbd/checkpoint.c +22 −5
  1514. fs/jbd/recovery.c +4 −0
  1515. fs/jffs2/erase.c +1 −1
  1516. fs/logfs/dev_mtd.c +0 −6
  1517. fs/logfs/dir.c +1 −1
  1518. fs/logfs/file.c +2 −0
  1519. fs/logfs/gc.c +1 −1
  1520. fs/logfs/inode.c +3 −1
  1521. fs/logfs/journal.c +0 −1
  1522. fs/logfs/logfs.h +4 −1
  1523. fs/logfs/readwrite.c +34 −17
  1524. fs/logfs/segment.c +39 −12
  1525. fs/logfs/super.c +2 −1
  1526. fs/namei.c +16 −16
  1527. fs/nfs/nfs4proc.c +55 −75
  1528. fs/nfs/nfs4state.c +2 −0
  1529. fs/nfs/nfs4xdr.c +4 −1
  1530. fs/nilfs2/ioctl.c +2 −0
  1531. fs/ocfs2/namei.c +1 −1
  1532. fs/proc/base.c +65 −169
  1533. fs/proc/stat.c +2 −0
  1534. fs/proc/task_mmu.c +3 −0
  1535. fs/qnx4/inode.c +25 −37
  1536. fs/quota/dquot.c +5 −3
  1537. fs/quota/quota.c +21 −3
  1538. fs/select.c +1 −1
  1539. fs/super.c +24 −0
  1540. fs/sysfs/file.c +6 −0
  1541. fs/sysfs/inode.c +4 −1
  1542. fs/xfs/kmem.h +0 −6
  1543. fs/xfs/xfs_aops.c +16 −13
  1544. fs/xfs/xfs_attr.c +0 −4
  1545. fs/xfs/xfs_attr_leaf.c +0 −9
  1546. fs/xfs/xfs_bmap.c +53 −63
  1547. fs/xfs/xfs_dfrag.c +21 −22
  1548. fs/xfs/xfs_dquot.c +38 −89
  1549. fs/xfs/xfs_file.c +51 −133
  1550. fs/xfs/xfs_fs_subr.c +1 −1
  1551. fs/xfs/xfs_iget.c +18 −6
  1552. fs/xfs/xfs_inode.c +45 −148
  1553. fs/xfs/xfs_inode.h +67 −47
  1554. fs/xfs/xfs_inode_item.c +3 −5
  1555. fs/xfs/xfs_iomap.c +23 −23
  1556. fs/xfs/xfs_iops.c +29 −17
  1557. fs/xfs/xfs_log_recover.c +4 −4
  1558. fs/xfs/xfs_qm.c +111 −180
  1559. fs/xfs/xfs_qm.h +0 −14
  1560. fs/xfs/xfs_qm_stats.c +2 −2
  1561. fs/xfs/xfs_qm_syscalls.c +9 −3
  1562. fs/xfs/xfs_super.c +0 −8
  1563. fs/xfs/xfs_sync.c +4 −5
  1564. fs/xfs/xfs_trace.h +10 −24
  1565. fs/xfs/xfs_trans.c +2 −2
  1566. fs/xfs/xfs_trans_dquot.c +6 −4
  1567. fs/xfs/xfs_vnodeops.c +30 −17
  1568. include/acpi/acnames.h +1 −0
  1569. include/acpi/acpi_numa.h +1 −0
  1570. include/acpi/acpiosxf.h +4 −7
  1571. include/acpi/acpixf.h +29 −3
  1572. include/acpi/acrestyp.h +203 −4
  1573. include/acpi/actbl.h +17 −6
  1574. include/acpi/actbl1.h +53 −4
  1575. include/acpi/actbl3.h +552 −0
  1576. include/acpi/actypes.h +11 −1
  1577. include/acpi/atomicio.h +0 −10
  1578. include/acpi/processor.h +1 −0
  1579. include/asm-generic/io-64-nonatomic-hi-lo.h +28 −0
  1580. include/asm-generic/io-64-nonatomic-lo-hi.h +28 −0
  1581. include/asm-generic/pci_iomap.h +10 −0
  1582. include/drm/drmP.h +1 −0
  1583. include/keys/user-type.h +2 −1
  1584. include/linux/acpi.h +14 −6
  1585. include/linux/acpi_io.h +3 −0
  1586. include/linux/amba/pl08x.h +2 −2
  1587. include/linux/audit.h +96 −20
  1588. include/linux/bcma/bcma.h +1 −1
  1589. include/linux/binfmts.h +2 −1
  1590. include/linux/bitops.h +20 −0
  1591. include/linux/blkdev.h +0 −3
  1592. include/linux/cdrom.h +2 −1
  1593. include/linux/cpuidle.h +7 −0
  1594. include/linux/device.h +10 −5
  1595. include/linux/digsig.h +4 −4
  1596. include/linux/dmaengine.h +92 −7
  1597. include/linux/dw_dmac.h +1 −1
  1598. include/linux/elevator.h +1 −8
  1599. include/linux/freezer.h +2 −0
  1600. include/linux/fs.h +2 −1
  1601. include/linux/gpio_keys.h +2 −0
  1602. include/linux/hyperv.h +1 −1
  1603. include/linux/if_team.h +10 −0
  1604. include/linux/iocontext.h +2 −3
  1605. include/linux/kexec.h +2 −0
  1606. include/linux/key.h +4 −1
  1607. include/linux/kref.h +1 −0
  1608. include/linux/lp8727.h +0 −0
  1609. include/linux/mfd/mcp.h +6 −6
  1610. include/linux/mfd/twl6040.h +2 −0
  1611. include/linux/mfd/ucb1x00.h +1 −4
  1612. include/linux/migrate.h +1 −13
  1613. include/linux/migrate_mode.h +16 −0
  1614. include/linux/miscdevice.h +1 −0
  1615. include/linux/mlx4/device.h +1 −0
  1616. include/linux/mmc/card.h +4 −0
  1617. include/linux/mmc/dw_mmc.h +4 −2
  1618. include/linux/mmc/host.h +20 −0
  1619. include/linux/mod_devicetable.h +0 −11
  1620. include/linux/mpi.h +0 −2
  1621. include/linux/mtd/gpmi-nand.h +68 −0
  1622. include/linux/mtd/mtd.h +2 −4
  1623. include/linux/netfilter/nf_conntrack_common.h +0 −4
  1624. include/linux/netfilter/xt_CT.h +1 −2
  1625. include/linux/nfs_xdr.h +1 −1
  1626. include/linux/nvme.h +434 −0
  1627. include/linux/perf_event.h +1 −0
  1628. include/linux/pm_qos.h +13 −1
  1629. include/linux/proportions.h +4 −0
  1630. include/linux/ptrace.h +10 −0
  1631. include/linux/quota.h +5 −1
  1632. include/linux/res_counter.h +10 −1
  1633. include/linux/sched.h +8 −2
  1634. include/linux/sh_dma.h +4 −1
  1635. include/linux/shmem_fs.h +1 −0
  1636. include/linux/sirfsoc_dma.h +6 −0
  1637. include/linux/snmp.h +0 −1
  1638. include/linux/suspend.h +17 −2
  1639. include/linux/swap.h +1 −1
  1640. include/linux/syscalls.h +1 −1
  1641. include/linux/sysdev.h +0 −164
  1642. include/linux/thermal.h +2 −2
  1643. include/linux/tty_driver.h +0 −1
  1644. include/linux/usb.h +1 −0
  1645. include/linux/usb/ch11.h +2 −8
  1646. include/linux/usb/ch9.h +1 −1
  1647. include/linux/usb/langwell_otg.h +0 −139
  1648. include/media/tuner.h +2 −1
  1649. include/net/bluetooth/hci.h +1 −1
  1650. include/net/cfg80211.h +6 −0
  1651. include/net/flow.h +11 −1
  1652. include/net/netns/generic.h +1 −0
  1653. include/net/netprio_cgroup.h +40 −9
  1654. include/net/route.h +4 −0
  1655. include/net/sch_generic.h +8 −1
  1656. include/net/sock.h +7 −7
  1657. include/net/tcp.h +12 −4
  1658. include/scsi/libfc.h +1 −1
  1659. include/sound/core.h +2 −0
  1660. include/target/target_core_backend.h +65 −0
  1661. include/target/target_core_base.h +133 −37
  1662. include/target/target_core_device.h +0 −63
  1663. include/target/target_core_fabric.h +88 −6
  1664. include/target/target_core_fabric_lib.h +0 −28
  1665. include/target/target_core_tmr.h +0 −35
  1666. include/target/target_core_tpg.h +0 −35
  1667. include/target/target_core_transport.h +0 −287
  1668. include/trace/events/btrfs.h +203 −0
  1669. include/trace/events/writeback.h +5 −2
  1670. include/video/omapdss.h +5 −0
  1671. init/Kconfig +15 −1
  1672. ipc/mqueue.c +1 −2
  1673. ipc/shm.c +22 −15
  1674. kernel/audit.c +2 −2
  1675. kernel/audit.h +1 −5
  1676. kernel/auditfilter.c +12 −5
  1677. kernel/auditsc.c +458 −280
  1678. kernel/capability.c +1 −1
  1679. kernel/events/callchain.c +0 −2
  1680. kernel/events/core.c +81 −44
  1681. kernel/exit.c +17 −2
  1682. kernel/fork.c +21 −3
  1683. kernel/kprobes.c +6 −2
  1684. kernel/params.c +2 −1
  1685. kernel/pid.c +2 −2
  1686. kernel/power/power.h +22 −2
  1687. kernel/power/process.c +24 −2
  1688. kernel/power/snapshot.c +2 −1
  1689. kernel/power/user.c +13 −2
  1690. kernel/rcutorture.c +4 −4
  1691. kernel/relay.c +8 −2
  1692. kernel/res_counter.c +25 −0
  1693. kernel/sched/core.c +7 −12
  1694. kernel/sched/cpupri.c +1 −2
  1695. kernel/sched/fair.c +29 −5
  1696. kernel/sched/rt.c +5 −0
  1697. kernel/seccomp.c +2 −0
  1698. kernel/tracepoint.c +4 −3
  1699. kernel/watchdog.c +1 −1
  1700. lib/Kconfig +16 −10
  1701. lib/Makefile +3 −1
  1702. lib/bug.c +1 −1
  1703. lib/clz_tab.c +18 −0
  1704. lib/digsig.c +23 −29
  1705. lib/kstrtox.c +13 −5
  1706. lib/mpi/longlong.h +33 −11
  1707. lib/mpi/mpi-bit.c +0 −19
  1708. lib/mpi/mpi-div.c +5 −0
  1709. lib/mpi/mpi-pow.c +1 −1
  1710. lib/mpi/mpicoder.c +4 −89
  1711. lib/mpi/mpih-div.c +4 −0
  1712. lib/mpi/mpiutil.c +4 −1
  1713. lib/pci_iomap.c +1 −1
  1714. mm/backing-dev.c +18 −5
  1715. mm/compaction.c +23 −1
  1716. mm/filemap.c +4 −4
  1717. mm/filemap_xip.c +6 −1
  1718. mm/huge_memory.c +2 −2
  1719. mm/hugetlb.c +6 −3
  1720. mm/kmemleak.c +2 −1
  1721. mm/memblock.c +5 −2
  1722. mm/memcontrol.c +6 −5
  1723. mm/memory.c +28 −9
  1724. mm/migrate.c +1 −1
  1725. mm/page_alloc.c +20 −1
  1726. mm/process_vm_access.c +9 −14
  1727. mm/shmem.c +41 −12
  1728. mm/swap.c +1 −1
  1729. mm/vmscan.c +42 −82
  1730. net/bluetooth/hci_core.c +1 −1
  1731. net/bridge/br_fdb.c +2 −2
  1732. net/caif/caif_dev.c +11 −27
  1733. net/caif/caif_socket.c +6 −4
  1734. net/caif/caif_usb.c +1 −2
  1735. net/caif/cfcnfg.c +0 −1
  1736. net/caif/cfmuxl.c +3 −9
  1737. net/ceph/ceph_common.c +0 −2
  1738. net/ceph/mon_client.c +12 −1
  1739. net/core/dev.c +28 −14
  1740. net/core/ethtool.c +3 −0
  1741. net/core/flow_dissector.c +1 −0
  1742. net/core/net-sysfs.c +1 −1
  1743. net/core/net_namespace.c +16 −15
  1744. net/core/netpoll.c +1 −1
  1745. net/core/netprio_cgroup.c +5 −10
  1746. net/core/pktgen.c +2 −2
  1747. net/core/rtnetlink.c +3 −0
  1748. net/core/secure_seq.c +1 −1
  1749. net/core/sock.c +4 −7
  1750. net/ipv4/Kconfig +1 −1
  1751. net/ipv4/arp.c +2 −1
  1752. net/ipv4/inet_connection_sock.c +5 −2
  1753. net/ipv4/inetpeer.c +2 −1
  1754. net/ipv4/ip_gre.c +4 −0
  1755. net/ipv4/ip_options.c +1 −1
  1756. net/ipv4/ipconfig.c +4 −4
  1757. net/ipv4/ping.c +14 −13
  1758. net/ipv4/proc.c +0 −1
  1759. net/ipv4/sysctl_net_ipv4.c +1 −6
  1760. net/ipv4/tcp.c +30 −8
  1761. net/ipv4/tcp_bic.c +7 −4
  1762. net/ipv4/tcp_cubic.c +6 −4
  1763. net/ipv4/tcp_input.c +44 −42
  1764. net/ipv4/tcp_ipv4.c +6 −1
  1765. net/ipv4/tcp_output.c +2 −4
  1766. net/ipv4/tcp_timer.c +1 −4
  1767. net/ipv4/udp_diag.c +0 −1
  1768. net/ipv6/addrconf.c +40 −21
  1769. net/ipv6/datagram.c +1 −1
  1770. net/ipv6/proc.c +2 −2
  1771. net/ipv6/route.c +1 −0
  1772. net/ipv6/tcp_ipv6.c +1 −1
  1773. net/l2tp/l2tp_ip.c +0 −5
  1774. net/llc/af_llc.c +5 −0
  1775. net/mac80211/cfg.c +1 −1
  1776. net/mac80211/debugfs_key.c +4 −3
  1777. net/mac80211/ibss.c +1 −0
  1778. net/mac80211/iface.c +1 −0
  1779. net/mac80211/main.c +2 −2
  1780. net/mac80211/mesh_hwmp.c +4 −4
  1781. net/mac80211/mesh_plink.c +2 −2
  1782. net/mac80211/mlme.c +27 −11
  1783. net/mac80211/rx.c +2 −1
  1784. net/mac80211/sta_info.c +4 −2
  1785. net/mac80211/tx.c +1 −9
  1786. net/mac80211/wpa.c +19 −0
  1787. net/mac80211/wpa.h +2 −0
  1788. net/netfilter/ipset/ip_set_core.c +27 −10
  1789. net/netfilter/nf_conntrack_helper.c +0 −12
  1790. net/netfilter/nf_conntrack_netlink.c +0 −4
  1791. net/netfilter/xt_CT.c +3 −5
  1792. net/netfilter/xt_hashlimit.c +4 −1
  1793. net/openvswitch/datapath.c +3 −5
  1794. net/openvswitch/datapath.h +0 −1
  1795. net/openvswitch/flow.c +0 −1
  1796. net/openvswitch/vport-internal_dev.c +0 −1
  1797. net/openvswitch/vport.c +0 −1
  1798. net/rds/af_rds.c +8 −12
  1799. net/rxrpc/ar-key.c +2 −2
  1800. net/sched/sch_choke.c +1 −2
  1801. net/sched/sch_netem.c +2 −3
  1802. net/sched/sch_sfb.c +1 −2
  1803. net/sched/sch_sfq.c +2 −3
  1804. net/sunrpc/auth_generic.c +16 −1
  1805. net/unix/af_unix.c +4 −15
  1806. scripts/checkpatch.pl +6 −0
  1807. scripts/kernel-doc +2 −1
  1808. scripts/mod/file2alias.c +1 −11
  1809. scripts/mod/modpost.c +9 −0
  1810. security/integrity/Kconfig +2 −2
  1811. security/integrity/Makefile +1 −1
  1812. security/integrity/ima/ima_audit.c +5 −3
  1813. security/integrity/ima/ima_policy.c +2 −1
  1814. security/integrity/integrity.h +2 −2
  1815. security/keys/encrypted-keys/encrypted.c +3 −3
  1816. security/keys/encrypted-keys/masterkey_trusted.c +3 −1
  1817. security/keys/gc.c +3 −1
  1818. security/keys/internal.h +1 −0
  1819. security/keys/key.c +1 −0
  1820. security/keys/keyring.c +15 −7
  1821. security/keys/trusted.c +2 −2
  1822. security/keys/user_defined.c +40 −3
  1823. security/lsm_audit.c +15 −12
  1824. security/tomoyo/util.c +3 −3
  1825. sound/atmel/abdac.c +1 −1
  1826. sound/atmel/ac97c.c +5 −5
  1827. sound/core/Kconfig +3 −10
  1828. sound/core/compress_offload.c +8 −5
  1829. sound/isa/sb/emu8000_patch.c +0 −1
  1830. sound/pci/au88x0/au88x0.c +7 −6
  1831. sound/pci/au88x0/au88x0.h +1 −0
  1832. sound/pci/au88x0/au88x0_pcm.c +1 −0
  1833. sound/pci/hda/alc880_quirks.c +12 −5
  1834. sound/pci/hda/alc882_quirks.c +10 −5
  1835. sound/pci/hda/hda_codec.c +1 −1
  1836. sound/pci/hda/hda_intel.c +5 −2
  1837. sound/pci/hda/hda_jack.c +15 −9
  1838. sound/pci/hda/patch_ca0132.c +19 −14
  1839. sound/pci/hda/patch_cirrus.c +4 −2
  1840. sound/pci/hda/patch_conexant.c +1 −1
  1841. sound/pci/hda/patch_realtek.c +114 −36
  1842. sound/pci/hda/patch_sigmatel.c +17 −8
  1843. sound/pci/hda/patch_via.c +132 −155
  1844. sound/pci/intel8x0.c +6 −0
  1845. sound/pci/oxygen/oxygen_mixer.c +14 −11
  1846. sound/pci/oxygen/xonar_wm87x6.c +1 −0
  1847. sound/pci/ymfpci/ymfpci.c +13 −8
  1848. sound/pci/ymfpci/ymfpci_main.c +14 −7
  1849. sound/soc/codecs/ak4642.c +16 −15
  1850. sound/soc/codecs/cs42l73.c +1 −1
  1851. sound/soc/codecs/sgtl5000.c +14 −5
  1852. sound/soc/codecs/tlv320aic32x4.c +51 −59
  1853. sound/soc/codecs/wm2000.c +13 −18
  1854. sound/soc/codecs/wm5100.c +14 −1
  1855. sound/soc/codecs/wm8958-dsp2.c +1 −1
  1856. sound/soc/codecs/wm8962.c +5 −5
  1857. sound/soc/codecs/wm8993.c +6 −0
  1858. sound/soc/codecs/wm8994.c +10 −6
  1859. sound/soc/codecs/wm8996.c +7 −2
  1860. sound/soc/codecs/wm8996.h +4 −0
  1861. sound/soc/codecs/wm_hubs.c +12 −6
  1862. sound/soc/ep93xx/ep93xx-pcm.c +2 −2
  1863. sound/soc/imx/imx-pcm-dma-mx2.c +10 −8
  1864. sound/soc/mxs/mxs-pcm.c +1 −1
  1865. sound/soc/mxs/mxs-saif.c +5 −0
  1866. sound/soc/samsung/dma.c +2 −2
  1867. sound/soc/samsung/neo1973_wm8753.c +1 −64
  1868. sound/soc/sh/fsi.c +1 −5
  1869. sound/soc/sh/siu_pcm.c +2 −2
  1870. sound/soc/soc-core.c +15 −0
  1871. sound/soc/soc-dapm.c +1 −1
  1872. sound/soc/txx9/txx9aclc.c +1 −1
  1873. sound/usb/caiaq/audio.c +4 −1
  1874. sound/usb/card.h +1 −0
  1875. sound/usb/format.c +1 −3
  1876. sound/usb/quirks-table.h +8 −0
  1877. sound/usb/quirks.c +5 −1
  1878. tools/perf/Makefile +2 −5
  1879. tools/perf/bench/mem-memcpy-x86-64-asm.S +6 −0
  1880. tools/perf/builtin-probe.c +0 −2
  1881. tools/perf/builtin-top.c +10 −3
  1882. tools/perf/util/event.c +1 −1
  1883. tools/perf/util/evsel.c +1 −0
  1884. tools/perf/util/header.c +1 −1
  1885. tools/perf/util/probe-event.c +0 −2
  1886. tools/perf/util/symbol.c +0 −1
  1887. tools/perf/util/trace-event-parse.c +1 −2
  1888. tools/perf/util/ui/browsers/hists.c +0 −2
  1889. tools/perf/util/ui/helpline.c +0 −1
  1890. tools/perf/util/util.h +0 −1
  1891. tools/power/x86/turbostat/turbostat.c +2 −0
  1892. virt/kvm/kvm_main.c +1 −1
Documentation/DocBook/device-drivers.tmpl+13−4
@@ -50,7 +50,9 @@ · 49 unmodified lines
50 50
51 <sect1><title>Delaying, scheduling, and timer routines</title>51 <sect1><title>Delaying, scheduling, and timer routines</title>
52!Iinclude/linux/sched.h52!Iinclude/linux/sched.h
53!Ekernel/sched.c53!Ekernel/sched/core.c
54!Ikernel/sched/cpupri.c
55!Ikernel/sched/fair.c
54!Iinclude/linux/completion.h56!Iinclude/linux/completion.h
55!Ekernel/timer.c57!Ekernel/timer.c
56 </sect1>58 </sect1>
@@ -100,9 +102,12 @@ X!Iinclude/linux/kobject.h · 43 unmodified lines
100!Iinclude/linux/device.h102!Iinclude/linux/device.h
101 </sect1>103 </sect1>
102 <sect1><title>Device Drivers Base</title>104 <sect1><title>Device Drivers Base</title>
105!Idrivers/base/init.c
103!Edrivers/base/driver.c106!Edrivers/base/driver.c
104!Edrivers/base/core.c107!Edrivers/base/core.c
108!Edrivers/base/syscore.c
105!Edrivers/base/class.c109!Edrivers/base/class.c
110!Idrivers/base/node.c
106!Edrivers/base/firmware_class.c111!Edrivers/base/firmware_class.c
107!Edrivers/base/transport_class.c112!Edrivers/base/transport_class.c
108<!-- Cannot be included, because113<!-- Cannot be included, because
@@ -111,13 +116,18 @@ X!Iinclude/linux/kobject.h · 2 unmodified lines
111 exceed allowed 44 characters maximum116 exceed allowed 44 characters maximum
112X!Edrivers/base/attribute_container.c117X!Edrivers/base/attribute_container.c
113-->118-->
114!Edrivers/base/sys.c119!Edrivers/base/dd.c
115<!--120<!--
116X!Edrivers/base/interface.c121X!Edrivers/base/interface.c
117-->122-->
118!Iinclude/linux/platform_device.h123!Iinclude/linux/platform_device.h
119!Edrivers/base/platform.c124!Edrivers/base/platform.c
120!Edrivers/base/bus.c125!Edrivers/base/bus.c
126 </sect1>
127 <sect1><title>Device Drivers DMA Management</title>
128!Edrivers/base/dma-buf.c
129!Edrivers/base/dma-coherent.c
130!Edrivers/base/dma-mapping.c
121 </sect1>131 </sect1>
122 <sect1><title>Device Drivers Power Management</title>132 <sect1><title>Device Drivers Power Management</title>
123!Edrivers/base/power/main.c133!Edrivers/base/power/main.c
@@ -216,9 +226,8 @@ X!Isound/sound_firmware.c · 92 unmodified lines
216 226
217 <chapter id="uart16x50">227 <chapter id="uart16x50">
218 <title>16x50 UART Driver</title>228 <title>16x50 UART Driver</title>
219!Iinclude/linux/serial_core.h
220!Edrivers/tty/serial/serial_core.c229!Edrivers/tty/serial/serial_core.c
221!Edrivers/tty/serial/8250.c230!Edrivers/tty/serial/8250/8250.c
222 </chapter>231 </chapter>
223 232
224 <chapter id="fbdev">233 <chapter id="fbdev">
Documentation/DocBook/deviceiobook.tmpl+1−1
@@ -317,7 +317,7 @@ CPU B: spin_unlock_irqrestore(&amp;dev_lock, flags) · 316 unmodified lines
317 <chapter id="pubfunctions">317 <chapter id="pubfunctions">
318 <title>Public Functions Provided</title>318 <title>Public Functions Provided</title>
319!Iarch/x86/include/asm/io.h319!Iarch/x86/include/asm/io.h
320!Elib/iomap.c320!Elib/pci_iomap.c
321 </chapter>321 </chapter>
322 322
323</book>323</book>
Documentation/DocBook/media/dvb/dvbproperty.xml+5−7
@@ -163,14 +163,16 @@ get/set up to 64 properties. The actual meaning of each property is described on · 162 unmodified lines
163 <section id="DTV-FREQUENCY">163 <section id="DTV-FREQUENCY">
164 <title><constant>DTV_FREQUENCY</constant></title>164 <title><constant>DTV_FREQUENCY</constant></title>
165 165
166 <para>Central frequency of the channel, in HZ.</para>166 <para>Central frequency of the channel.</para>
167 167
168 <para>Notes:</para>168 <para>Notes:</para>
169 <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.169 <para>1)For satellital delivery systems, it is measured in kHz.
170 For the other ones, it is measured in Hz.</para>
171 <para>2)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
170 E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of172 E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of
171 the channel which is 6MHz.</para>173 the channel which is 6MHz.</para>
172 174
173 <para>2)As in ISDB-Tsb the channel consists of only one or three segments the175 <para>3)As in ISDB-Tsb the channel consists of only one or three segments the
174 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the176 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
175 central frequency of the channel is expected.</para>177 central frequency of the channel is expected.</para>
176 </section>178 </section>
@@ -735,14 +737,10 @@ typedef enum fe_hierarchy { · 558 unmodified lines
735 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>737 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
736 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>738 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
737 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>739 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
738 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
739 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>740 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
740 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>741 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
741 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
742 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
743 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>742 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
744 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>743 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
745 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
746 <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>744 <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
747 <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>745 <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
748 <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>746 <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml+13−5
@@ -183,7 +183,12 @@ applications must set the array to zero.</entry> · 182 unmodified lines
183 <entry>__u32</entry>183 <entry>__u32</entry>
184 <entry><structfield>ctrl_class</structfield></entry>184 <entry><structfield>ctrl_class</structfield></entry>
185 <entry>The control class to which all controls belong, see185 <entry>The control class to which all controls belong, see
186<xref linkend="ctrl-class" />.</entry>186<xref linkend="ctrl-class" />. Drivers that use a kernel framework for handling
187controls will also accept a value of 0 here, meaning that the controls can
188belong to any control class. Whether drivers support this can be tested by setting
189<structfield>ctrl_class</structfield> to 0 and calling <constant>VIDIOC_TRY_EXT_CTRLS</constant>
190with a <structfield>count</structfield> of 0. If that succeeds, then the driver
191supports this feature.</entry>
187 </row>192 </row>
188 <row>193 <row>
189 <entry>__u32</entry>194 <entry>__u32</entry>
@@ -194,10 +199,13 @@ also be zero.</entry> · 4 unmodified lines
194 <row>199 <row>
195 <entry>__u32</entry>200 <entry>__u32</entry>
196 <entry><structfield>error_idx</structfield></entry>201 <entry><structfield>error_idx</structfield></entry>
197 <entry>Set by the driver in case of an error. It is the202 <entry>Set by the driver in case of an error. If it is equal
198index of the control causing the error or equal to 'count' when the203to <structfield>count</structfield>, then no actual changes were made to
199error is not associated with a particular control. Undefined when the204controls. In other words, the error was not associated with setting a particular
200ioctl returns 0 (success).</entry>205control. If it is another value, then only the controls up to <structfield>error_idx-1</structfield>
206were modified and control <structfield>error_idx</structfield> is the one that
207caused the error. The <structfield>error_idx</structfield> value is undefined
208if the ioctl returned 0 (success).</entry>
201 </row>209 </row>
202 <row>210 <row>
203 <entry>__u32</entry>211 <entry>__u32</entry>
Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml+14−9
@@ -364,15 +364,20 @@ capability and it is cleared otherwise.</entry> · 363 unmodified lines
364 <row>364 <row>
365 <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry>365 <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry>
366 <entry>0x0002</entry>366 <entry>0x0002</entry>
367 <entry>The frame buffer is an overlay surface the same367 <entry>If this flag is set for a video capture device, then the
368size as the capture. [?]</entry>368driver will set the initial overlay size to cover the full framebuffer size,
369 </row>369otherwise the existing overlay size (as set by &VIDIOC-S-FMT;) will be used.
370 <row>370
371 <entry spanname="hspan">The purpose of371Only one video capture driver (bttv) supports this flag. The use of this flag
372<constant>V4L2_FBUF_FLAG_OVERLAY</constant> was never quite clear.372for capture devices is deprecated. There is no way to detect which drivers
373Most drivers seem to ignore this flag. For compatibility with the373support this flag, so the only reliable method of setting the overlay size is
374<wordasword>bttv</wordasword> driver applications should set the374through &VIDIOC-S-FMT;.
375<constant>V4L2_FBUF_FLAG_OVERLAY</constant> flag.</entry>375
376If this flag is set for a video output device, then the video output overlay
377window is relative to the top-left corner of the framebuffer and restricted
378to the size of the framebuffer. If it is cleared, then the video output
379overlay window is relative to the video output display.
380 </entry>
376 </row>381 </row>
377 <row>382 <row>
378 <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry>383 <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry>
Documentation/DocBook/media/v4l/vidioc-g-frequency.xml+5−2
@@ -98,8 +98,11 @@ the &v4l2-output; <structfield>modulator</structfield> field and the · 97 unmodified lines
98 <entry>&v4l2-tuner-type;</entry>98 <entry>&v4l2-tuner-type;</entry>
99 <entry><structfield>type</structfield></entry>99 <entry><structfield>type</structfield></entry>
100 <entry>The tuner type. This is the same value as in the100 <entry>The tuner type. This is the same value as in the
101&v4l2-tuner; <structfield>type</structfield> field. The field is not101&v4l2-tuner; <structfield>type</structfield> field. The type must be set
102applicable to modulators, &ie; ignored by drivers.</entry>102to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
103device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
104for all others. The field is not applicable to modulators, &ie; ignored
105by drivers.</entry>
103 </row>106 </row>
104 <row>107 <row>
105 <entry>__u32</entry>108 <entry>__u32</entry>
Documentation/DocBook/media/v4l/vidioc-g-input.xml+2−2
@@ -61,8 +61,8 @@ desired input in an integer and call the · 60 unmodified lines
61<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this61<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this
62integer. Side effects are possible. For example inputs may support62integer. Side effects are possible. For example inputs may support
63different video standards, so the driver may implicitly switch the63different video standards, so the driver may implicitly switch the
64current standard. It is good practice to select an input before64current standard. Because of these possible side effects applications
65querying or negotiating any other parameters.</para>65must select an input before querying or negotiating any other parameters.</para>
66 66
67 <para>Information about video inputs is available using the67 <para>Information about video inputs is available using the
68&VIDIOC-ENUMINPUT; ioctl.</para>68&VIDIOC-ENUMINPUT; ioctl.</para>
Documentation/DocBook/media/v4l/vidioc-g-output.xml+3−2
@@ -61,8 +61,9 @@ desired output in an integer and call the · 60 unmodified lines
61<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer.61<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer.
62Side effects are possible. For example outputs may support different62Side effects are possible. For example outputs may support different
63video standards, so the driver may implicitly switch the current63video standards, so the driver may implicitly switch the current
64standard. It is good practice to select an output before querying or64standard.
65negotiating any other parameters.</para>65standard. Because of these possible side effects applications
66must select an output before querying or negotiating any other parameters.</para>
66 67
67 <para>Information about video outputs is available using the68 <para>Information about video outputs is available using the
68&VIDIOC-ENUMOUTPUT; ioctl.</para>69&VIDIOC-ENUMOUTPUT; ioctl.</para>
Documentation/acpi/apei/einj.txt+44−11
@@ -47,20 +47,53 @@ directory apei/einj. The following files are provided. · 46 unmodified lines
47 47
48- param148- param1
49 This file is used to set the first error parameter value. Effect of49 This file is used to set the first error parameter value. Effect of
50 parameter depends on error_type specified. For memory error, this is50 parameter depends on error_type specified.
51 physical memory address. Only available if param_extension module
52 parameter is specified.
53 51
54- param252- param2
55 This file is used to set the second error parameter value. Effect of53 This file is used to set the second error parameter value. Effect of
56 parameter depends on error_type specified. For memory error, this is54 parameter depends on error_type specified.
57 physical memory address mask. Only available if param_extension55
58 module parameter is specified.56BIOS versions based in the ACPI 4.0 specification have limited options
57to control where the errors are injected. Your BIOS may support an
58extension (enabled with the param_extension=1 module parameter, or
59boot command line einj.param_extension=1). This allows the address
60and mask for memory injections to be specified by the param1 and
61param2 files in apei/einj.
62
63BIOS versions using the ACPI 5.0 specification have more control over
64the target of the injection. For processor related errors (type 0x1,
650x2 and 0x4) the APICID of the target should be provided using the
66param1 file in apei/einj. For memory errors (type 0x8, 0x10 and 0x20)
67the address is set using param1 with a mask in param2 (0x0 is equivalent
68to all ones). For PCI express errors (type 0x40, 0x80 and 0x100) the
69segment, bus, device and function are specified using param1:
70
71 31 24 23 16 15 11 10 8 7 0
72 +-------------------------------------------------+
73 | segment | bus | device | function | reserved |
74 +-------------------------------------------------+
75
76An ACPI 5.0 BIOS may also allow vendor specific errors to be injected.
77In this case a file named vendor will contain identifying information
78from the BIOS that hopefully will allow an application wishing to use
79the vendor specific extension to tell that they are running on a BIOS
80that supports it. All vendor extensions have the 0x80000000 bit set in
81error_type. A file vendor_flags controls the interpretation of param1
82and param2 (1 = PROCESSOR, 2 = MEMORY, 4 = PCI). See your BIOS vendor
83documentation for details (and expect changes to this API if vendors
84creativity in using this feature expands beyond our expectations).
85
86Example:
87# cd /sys/kernel/debug/apei/einj
88# cat available_error_type # See which errors can be injected
890x00000002 Processor Uncorrectable non-fatal
900x00000008 Memory Correctable
910x00000010 Memory Uncorrectable non-fatal
92# echo 0x12345000 > param1 # Set memory address for injection
93# echo 0xfffffffffffff000 > param2 # Mask - anywhere in this page
94# echo 0x8 > error_type # Choose correctable memory error
95# echo 1 > error_inject # Inject now
59 96
60Injecting parameter support is a BIOS version specific extension, that
61is, it only works on some BIOS version. If you want to use it, please
62make sure your BIOS version has the proper support and specify
63"param_extension=y" in module parameter.
64 97
65For more information about EINJ, please refer to ACPI specification98For more information about EINJ, please refer to ACPI specification
66version 4.0, section 17.5.99version 4.0, section 17.5 and ACPI 5.0, section 18.6.
Documentation/devices.txt+3−0
@@ -447,6 +447,9 @@ Your cooperation is appreciated. · 446 unmodified lines
447 234 = /dev/btrfs-control Btrfs control device447 234 = /dev/btrfs-control Btrfs control device
448 235 = /dev/autofs Autofs control device448 235 = /dev/autofs Autofs control device
449 236 = /dev/mapper/control Device-Mapper control device449 236 = /dev/mapper/control Device-Mapper control device
450 237 = /dev/loop-control Loopback control device
451 238 = /dev/vhost-net Host kernel accelerator for virtio net
452
450 240-254 Reserved for local use453 240-254 Reserved for local use
451 255 Reserved for MISC_DYNAMIC_MINOR454 255 Reserved for MISC_DYNAMIC_MINOR
452 455
Documentation/devicetree/bindings/dma/atmel-dma.txt+14−0
@@ -0,0 +1,14 @@
1* Atmel Direct Memory Access Controller (DMA)
2
3Required properties:
4- compatible: Should be "atmel,<chip>-dma"
5- reg: Should contain DMA registers location and length
6- interrupts: Should contain DMA interrupt
7
8Examples:
9
10dma@ffffec00 {
11 compatible = "atmel,at91sam9g45-dma";
12 reg = <0xffffec00 0x200>;
13 interrupts = <21>;
14};
Documentation/devicetree/bindings/i2c/omap-i2c.txt+30−0
@@ -0,0 +1,30 @@
1I2C for OMAP platforms
2
3Required properties :
4- compatible : Must be "ti,omap3-i2c" or "ti,omap4-i2c"
5- ti,hwmods : Must be "i2c<n>", n being the instance number (1-based)
6- #address-cells = <1>;
7- #size-cells = <0>;
8
9Recommended properties :
10- clock-frequency : Desired I2C bus clock frequency in Hz. Otherwise
11 the default 100 kHz frequency will be used.
12
13Optional properties:
14- Child nodes conforming to i2c bus binding
15
16Note: Current implementation will fetch base address, irq and dma
17from omap hwmod data base during device registration.
18Future plan is to migrate hwmod data base contents into device tree
19blob so that, all the required data will be used from device tree dts
20file.
21
22Examples :
23
24i2c1: i2c@0 {
25 compatible = "ti,omap3-i2c";
26 #address-cells = <1>;
27 #size-cells = <0>;
28 ti,hwmods = "i2c1";
29 clock-frequency = <400000>;
30};
Documentation/dmaengine.txt+8−0
@@ -75,6 +75,10 @@ The slave DMA usage consists of following steps: · 74 unmodified lines
75 slave_sg - DMA a list of scatter gather buffers from/to a peripheral75 slave_sg - DMA a list of scatter gather buffers from/to a peripheral
76 dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the76 dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the
77 operation is explicitly stopped.77 operation is explicitly stopped.
78 interleaved_dma - This is common to Slave as well as M2M clients. For slave
79 address of devices' fifo could be already known to the driver.
80 Various types of operations could be expressed by setting
81 appropriate values to the 'dma_interleaved_template' members.
78 82
79 A non-NULL return of this transfer API represents a "descriptor" for83 A non-NULL return of this transfer API represents a "descriptor" for
80 the given transaction.84 the given transaction.
@@ -89,6 +93,10 @@ The slave DMA usage consists of following steps: · 8 unmodified lines
89 struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,93 struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
90 size_t period_len, enum dma_data_direction direction);94 size_t period_len, enum dma_data_direction direction);
91 95
96 struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)(
97 struct dma_chan *chan, struct dma_interleaved_template *xt,
98 unsigned long flags);
99
92 The peripheral driver is expected to have mapped the scatterlist for100 The peripheral driver is expected to have mapped the scatterlist for
93 the DMA operation prior to calling device_prep_slave_sg, and must101 the DMA operation prior to calling device_prep_slave_sg, and must
94 keep the scatterlist mapped until the DMA operation has completed.102 keep the scatterlist mapped until the DMA operation has completed.
Documentation/driver-model/devres.txt+4−0
@@ -233,6 +233,10 @@ certainly invest a bit more effort into libata core layer). · 232 unmodified lines
233 6. List of managed interfaces233 6. List of managed interfaces
234 -----------------------------234 -----------------------------
235 235
236MEM
237 devm_kzalloc()
238 devm_kfree()
239
236IO region240IO region
237 devm_request_region()241 devm_request_region()
238 devm_request_mem_region()242 devm_request_mem_region()
Documentation/feature-removal-schedule.txt+14−11
@@ -439,17 +439,6 @@ Who: Jean Delvare <khali@linux-fr.org> · 438 unmodified lines
439 439
440----------------------------440----------------------------
441 441
442What: For VIDIOC_S_FREQUENCY the type field must match the device node's type.
443 If not, return -EINVAL.
444When: 3.2
445Why: It makes no sense to switch the tuner to radio mode by calling
446 VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode by
447 calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of a
448 move to more consistent handling of tv and radio tuners.
449Who: Hans Verkuil <hans.verkuil@cisco.com>
450
451----------------------------
452
453What: Opening a radio device node will no longer automatically switch the442What: Opening a radio device node will no longer automatically switch the
454 tuner mode from tv to radio.443 tuner mode from tv to radio.
455When: 3.3444When: 3.3
@@ -521,3 +510,17 @@ Why: The pci_scan_bus_parented() interface creates a new root bus. The · 65 unmodified lines
521 convert to using pci_scan_root_bus() so they can supply a list of510 convert to using pci_scan_root_bus() so they can supply a list of
522 bus resources when the bus is created.511 bus resources when the bus is created.
523Who: Bjorn Helgaas <bhelgaas@google.com>512Who: Bjorn Helgaas <bhelgaas@google.com>
513
514----------------------------
515
516What: The CAP9 SoC family will be removed
517When: 3.4
518Files: arch/arm/mach-at91/at91cap9.c
519 arch/arm/mach-at91/at91cap9_devices.c
520 arch/arm/mach-at91/include/mach/at91cap9.h
521 arch/arm/mach-at91/include/mach/at91cap9_matrix.h
522 arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h
523 arch/arm/mach-at91/board-cap9adk.c
524Why: The code is not actively maintained and platforms are now hard to find.
525Who: Nicolas Ferre <nicolas.ferre@atmel.com>
526 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Documentation/input/event-codes.txt+64−8
@@ -17,11 +17,11 @@ reports supported by a device are also provided by sysfs in · 16 unmodified lines
17class/input/event*/device/capabilities/, and the properties of a device are17class/input/event*/device/capabilities/, and the properties of a device are
18provided in class/input/event*/device/properties.18provided in class/input/event*/device/properties.
19 19
20Types:20Event types:
21==========21===========
22Types are groupings of codes under a logical input construct. Each type has a22Event types are groupings of codes under a logical input construct. Each
23set of applicable codes to be used in generating events. See the Codes section23type has a set of applicable codes to be used in generating events. See the
24for details on valid codes for each type.24Codes section for details on valid codes for each type.
25 25
26* EV_SYN:26* EV_SYN:
27 - Used as markers to separate events. Events may be separated in time or in27 - Used as markers to separate events. Events may be separated in time or in
@@ -63,9 +63,9 @@ for details on valid codes for each type. · 35 unmodified lines
63* EV_FF_STATUS:63* EV_FF_STATUS:
64 - Used to receive force feedback device status.64 - Used to receive force feedback device status.
65 65
66Codes:66Event codes:
67==========67===========
68Codes define the precise type of event.68Event codes define the precise type of event.
69 69
70EV_SYN:70EV_SYN:
71----------71----------
@@ -220,6 +220,56 @@ EV_PWR: · 148 unmodified lines
220EV_PWR events are a special type of event used specifically for power220EV_PWR events are a special type of event used specifically for power
221mangement. Its usage is not well defined. To be addressed later.221mangement. Its usage is not well defined. To be addressed later.
222 222
223Device properties:
224=================
225Normally, userspace sets up an input device based on the data it emits,
226i.e., the event types. In the case of two devices emitting the same event
227types, additional information can be provided in the form of device
228properties.
229
230INPUT_PROP_DIRECT + INPUT_PROP_POINTER:
231--------------------------------------
232The INPUT_PROP_DIRECT property indicates that device coordinates should be
233directly mapped to screen coordinates (not taking into account trivial
234transformations, such as scaling, flipping and rotating). Non-direct input
235devices require non-trivial transformation, such as absolute to relative
236transformation for touchpads. Typical direct input devices: touchscreens,
237drawing tablets; non-direct devices: touchpads, mice.
238
239The INPUT_PROP_POINTER property indicates that the device is not transposed
240on the screen and thus requires use of an on-screen pointer to trace user's
241movements. Typical pointer devices: touchpads, tablets, mice; non-pointer
242device: touchscreen.
243
244If neither INPUT_PROP_DIRECT or INPUT_PROP_POINTER are set, the property is
245considered undefined and the device type should be deduced in the
246traditional way, using emitted event types.
247
248INPUT_PROP_BUTTONPAD:
249--------------------
250For touchpads where the button is placed beneath the surface, such that
251pressing down on the pad causes a button click, this property should be
252set. Common in clickpad notebooks and macbooks from 2009 and onwards.
253
254Originally, the buttonpad property was coded into the bcm5974 driver
255version field under the name integrated button. For backwards
256compatibility, both methods need to be checked in userspace.
257
258INPUT_PROP_SEMI_MT:
259------------------
260Some touchpads, most common between 2008 and 2011, can detect the presence
261of multiple contacts without resolving the individual positions; only the
262number of contacts and a rectangular shape is known. For such
263touchpads, the semi-mt property should be set.
264
265Depending on the device, the rectangle may enclose all touches, like a
266bounding box, or just some of them, for instance the two most recent
267touches. The diversity makes the rectangle of limited use, but some
268gestures can normally be extracted from it.
269
270If INPUT_PROP_SEMI_MT is not set, the device is assumed to be a true MT
271device.
272
223Guidelines:273Guidelines:
224==========274==========
225The guidelines below ensure proper single-touch and multi-finger functionality.275The guidelines below ensure proper single-touch and multi-finger functionality.
@@ -240,6 +290,8 @@ used to report when a touch is active on the screen. · 14 unmodified lines
240BTN_{MOUSE,LEFT,MIDDLE,RIGHT} must not be reported as the result of touch290BTN_{MOUSE,LEFT,MIDDLE,RIGHT} must not be reported as the result of touch
241contact. BTN_TOOL_<name> events should be reported where possible.291contact. BTN_TOOL_<name> events should be reported where possible.
242 292
293For new hardware, INPUT_PROP_DIRECT should be set.
294
243Trackpads:295Trackpads:
244----------296----------
245Legacy trackpads that only provide relative position information must report297Legacy trackpads that only provide relative position information must report
@@ -250,6 +302,8 @@ location of the touch. BTN_TOUCH should be used to report when a touch is active · 4 unmodified lines
250on the trackpad. Where multi-finger support is available, BTN_TOOL_<name> should302on the trackpad. Where multi-finger support is available, BTN_TOOL_<name> should
251be used to report the number of touches active on the trackpad.303be used to report the number of touches active on the trackpad.
252 304
305For new hardware, INPUT_PROP_POINTER should be set.
306
253Tablets:307Tablets:
254----------308----------
255BTN_TOOL_<name> events must be reported when a stylus or other tool is active on309BTN_TOOL_<name> events must be reported when a stylus or other tool is active on
@@ -260,3 +314,5 @@ button may be used for buttons on the tablet except BTN_{MOUSE,LEFT}. · 4 unmodified lines
260BTN_{0,1,2,etc} are good generic codes for unlabeled buttons. Do not use314BTN_{0,1,2,etc} are good generic codes for unlabeled buttons. Do not use
261meaningful buttons, like BTN_FORWARD, unless the button is labeled for that315meaningful buttons, like BTN_FORWARD, unless the button is labeled for that
262purpose on the device.316purpose on the device.
317
318For new hardware, both INPUT_PROP_DIRECT and INPUT_PROP_POINTER should be set.
Documentation/ioctl/ioctl-number.txt+1−0
@@ -149,6 +149,7 @@ Code Seq#(hex) Include File Comments · 148 unmodified lines
149'M' 01-03 drivers/scsi/megaraid/megaraid_sas.h149'M' 01-03 drivers/scsi/megaraid/megaraid_sas.h
150'M' 00-0F drivers/video/fsl-diu-fb.h conflict!150'M' 00-0F drivers/video/fsl-diu-fb.h conflict!
151'N' 00-1F drivers/usb/scanner.h151'N' 00-1F drivers/usb/scanner.h
152'N' 40-7F drivers/block/nvme.c
152'O' 00-06 mtd/ubi-user.h UBI153'O' 00-06 mtd/ubi-user.h UBI
153'P' all linux/soundcard.h conflict!154'P' all linux/soundcard.h conflict!
154'P' 60-6F sound/sscape_ioctl.h conflict!155'P' 60-6F sound/sscape_ioctl.h conflict!
Documentation/kernel-parameters.txt+5−0
@@ -1059,6 +1059,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 1058 unmodified lines
1059 By default, super page will be supported if Intel IOMMU1059 By default, super page will be supported if Intel IOMMU
1060 has the capability. With this option, super page will1060 has the capability. With this option, super page will
1061 not be supported.1061 not be supported.
1062
1063 intel_idle.max_cstate= [KNL,HW,ACPI,X86]
1064 0 disables intel_idle and fall back on acpi_idle.
1065 1 to 6 specify maximum depth of C-state.
1066
1062 intremap= [X86-64, Intel-IOMMU]1067 intremap= [X86-64, Intel-IOMMU]
1063 on enable Interrupt Remapping (default)1068 on enable Interrupt Remapping (default)
1064 off disable Interrupt Remapping1069 off disable Interrupt Remapping
Documentation/pinctrl.txt+8−9
@@ -857,42 +857,41 @@ case), we define a mapping like this: · 856 unmodified lines
857 857
858...858...
859{859{
860 .name "2bit"860 .name = "2bit"
861 .ctrl_dev_name = "pinctrl-foo",861 .ctrl_dev_name = "pinctrl-foo",
862 .function = "mmc0",862 .function = "mmc0",
863 .group = "mmc0_1_grp",863 .group = "mmc0_1_grp",
864 .dev_name = "foo-mmc.0",864 .dev_name = "foo-mmc.0",
865},865},
866{866{
867 .name "4bit"867 .name = "4bit"
868 .ctrl_dev_name = "pinctrl-foo",868 .ctrl_dev_name = "pinctrl-foo",
869 .function = "mmc0",869 .function = "mmc0",
870 .group = "mmc0_1_grp",870 .group = "mmc0_1_grp",
871 .dev_name = "foo-mmc.0",871 .dev_name = "foo-mmc.0",
872},872},
873{873{
874 .name "4bit"874 .name = "4bit"
875 .ctrl_dev_name = "pinctrl-foo",875 .ctrl_dev_name = "pinctrl-foo",
876 .function = "mmc0",876 .function = "mmc0",
877 .group = "mmc0_2_grp",877 .group = "mmc0_2_grp",
878 .dev_name = "foo-mmc.0",878 .dev_name = "foo-mmc.0",
879},879},
880{880{
881 .name "8bit"881 .name = "8bit"
882 .ctrl_dev_name = "pinctrl-foo",882 .ctrl_dev_name = "pinctrl-foo",
883 .function = "mmc0",
884 .group = "mmc0_1_grp",883 .group = "mmc0_1_grp",
885 .dev_name = "foo-mmc.0",884 .dev_name = "foo-mmc.0",
886},885},
887{886{
888 .name "8bit"887 .name = "8bit"
889 .ctrl_dev_name = "pinctrl-foo",888 .ctrl_dev_name = "pinctrl-foo",
890 .function = "mmc0",889 .function = "mmc0",
891 .group = "mmc0_2_grp",890 .group = "mmc0_2_grp",
892 .dev_name = "foo-mmc.0",891 .dev_name = "foo-mmc.0",
893},892},
894{893{
895 .name "8bit"894 .name = "8bit"
896 .ctrl_dev_name = "pinctrl-foo",895 .ctrl_dev_name = "pinctrl-foo",
897 .function = "mmc0",896 .function = "mmc0",
898 .group = "mmc0_3_grp",897 .group = "mmc0_3_grp",
@@ -995,7 +994,7 @@ This is enabled by simply setting the .hog_on_boot field in the map to true, · 96 unmodified lines
995like this:994like this:
996 995
997{996{
998 .name "POWERMAP"997 .name = "POWERMAP"
999 .ctrl_dev_name = "pinctrl-foo",998 .ctrl_dev_name = "pinctrl-foo",
1000 .function = "power_func",999 .function = "power_func",
1001 .hog_on_boot = true,1000 .hog_on_boot = true,
@@ -1025,7 +1024,7 @@ it, disables and releases it, and muxes it in on the pins defined by group B: · 23 unmodified lines
1025 1024
1026foo_switch()1025foo_switch()
1027{1026{
1028 struct pinmux pmx;1027 struct pinmux *pmx;
1029 1028
1030 /* Enable on position A */1029 /* Enable on position A */
1031 pmx = pinmux_get(&device, "spi0-pos-A");1030 pmx = pinmux_get(&device, "spi0-pos-A");
Documentation/power/basic-pm-debugging.txt+1−1
@@ -15,7 +15,7 @@ test at least a couple of times in a row for confidence. [This is necessary, · 14 unmodified lines
15because some problems only show up on a second attempt at suspending and15because some problems only show up on a second attempt at suspending and
16resuming the system.] Moreover, hibernating in the "reboot" and "shutdown"16resuming the system.] Moreover, hibernating in the "reboot" and "shutdown"
17modes causes the PM core to skip some platform-related callbacks which on ACPI17modes causes the PM core to skip some platform-related callbacks which on ACPI
18systems might be necessary to make hibernation work. Thus, if you machine fails18systems might be necessary to make hibernation work. Thus, if your machine fails
19to hibernate or resume in the "reboot" mode, you should try the "platform" mode:19to hibernate or resume in the "reboot" mode, you should try the "platform" mode:
20 20
21# echo platform > /sys/power/disk21# echo platform > /sys/power/disk
Documentation/power/freezing-of-tasks.txt+4−4
@@ -120,10 +120,10 @@ So in practice, the 'at all' may become a 'why freeze kernel threads?' and · 119 unmodified lines
120freezing user threads I don't find really objectionable."120freezing user threads I don't find really objectionable."
121 121
122Still, there are kernel threads that may want to be freezable. For example, if122Still, there are kernel threads that may want to be freezable. For example, if
123a kernel that belongs to a device driver accesses the device directly, it in123a kernel thread that belongs to a device driver accesses the device directly, it
124principle needs to know when the device is suspended, so that it doesn't try to124in principle needs to know when the device is suspended, so that it doesn't try
125access it at that time. However, if the kernel thread is freezable, it will be125to access it at that time. However, if the kernel thread is freezable, it will
126frozen before the driver's .suspend() callback is executed and it will be126be frozen before the driver's .suspend() callback is executed and it will be
127thawed after the driver's .resume() callback has run, so it won't be accessing127thawed after the driver's .resume() callback has run, so it won't be accessing
128the device while it's suspended.128the device while it's suspended.
129 129
Documentation/scsi/ChangeLog.megaraid_sas+10−0
@@ -1,3 +1,13 @@
1Release Date : Fri. Jan 6, 2012 17:00:00 PST 2010 -
2 (emaild-id:megaraidlinux@lsi.com)
3 Adam Radford
4Current Version : 00.00.06.14-rc1
5Old Version : 00.00.06.12-rc1
6 1. Fix reglockFlags for degraded raid5/6 for MR 9360/9380.
7 2. Mask off flags in ioctl path to prevent memory scribble with older
8 MegaCLI versions.
9 3. Remove poll_mode_io module paramater, sysfs node, and associated code.
10-------------------------------------------------------------------------------
1Release Date : Wed. Oct 5, 2011 17:00:00 PST 2010 -11Release Date : Wed. Oct 5, 2011 17:00:00 PST 2010 -
2 (emaild-id:megaraidlinux@lsi.com)12 (emaild-id:megaraidlinux@lsi.com)
3 Adam Radford13 Adam Radford
Documentation/scsi/LICENSE.qla4xxx+1−22
@@ -1,32 +1,11 @@
1Copyright (c) 2003-2011 QLogic Corporation1Copyright (c) 2003-2011 QLogic Corporation
2QLogic Linux iSCSI HBA Driver2QLogic Linux iSCSI Driver
3 3
4This program includes a device driver for Linux 3.x.4This program includes a device driver for Linux 3.x.
5You may modify and redistribute the device driver code under the5You may modify and redistribute the device driver code under the
6GNU General Public License (a copy of which is attached hereto as6GNU General Public License (a copy of which is attached hereto as
7Exhibit A) published by the Free Software Foundation (version 2).7Exhibit A) published by the Free Software Foundation (version 2).
8 8
9REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE,
10THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY
11EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
12IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
13PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
14BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
15EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
16TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
17DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
18ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
19OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
21POSSIBILITY OF SUCH DAMAGE.
22
23USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT
24CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR
25OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT,
26TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN
27ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN
28COMBINATION WITH THIS PROGRAM.
29
30 9
31EXHIBIT A10EXHIBIT A
32 11
Documentation/stable_kernel_rules.txt+2−1
@@ -25,7 +25,8 @@ Procedure for submitting patches to the -stable tree: · 24 unmodified lines
25 25
26 - Send the patch, after verifying that it follows the above rules, to26 - Send the patch, after verifying that it follows the above rules, to
27 stable@vger.kernel.org. You must note the upstream commit ID in the27 stable@vger.kernel.org. You must note the upstream commit ID in the
28 changelog of your submission.28 changelog of your submission, as well as the kernel version you wish
29 it to be applied to.
29 - To have the patch automatically included in the stable tree, add the tag30 - To have the patch automatically included in the stable tree, add the tag
30 Cc: stable@vger.kernel.org31 Cc: stable@vger.kernel.org
31 in the sign-off area. Once the patch is merged it will be applied to32 in the sign-off area. Once the patch is merged it will be applied to
Documentation/sysctl/kernel.txt+2−0
@@ -601,6 +601,8 @@ can be ORed together: · 600 unmodified lines
601 instead of using the one provided by the hardware.601 instead of using the one provided by the hardware.
602 512 - A kernel warning has occurred.602 512 - A kernel warning has occurred.
6031024 - A module from drivers/staging was loaded.6031024 - A module from drivers/staging was loaded.
6042048 - The system is working around a severe firmware bug.
6054096 - An out-of-tree module has been loaded.
604 606
605==============================================================607==============================================================
606 608
Documentation/target/tcm_mod_builder.py+15−45
@@ -230,14 +230,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 229 unmodified lines
230 buf += "#include <linux/ctype.h>\n"230 buf += "#include <linux/ctype.h>\n"
231 buf += "#include <asm/unaligned.h>\n\n"231 buf += "#include <asm/unaligned.h>\n\n"
232 buf += "#include <target/target_core_base.h>\n"232 buf += "#include <target/target_core_base.h>\n"
233 buf += "#include <target/target_core_transport.h>\n"233 buf += "#include <target/target_core_fabric.h>\n"
234 buf += "#include <target/target_core_fabric_ops.h>\n"
235 buf += "#include <target/target_core_fabric_configfs.h>\n"234 buf += "#include <target/target_core_fabric_configfs.h>\n"
236 buf += "#include <target/target_core_fabric_lib.h>\n"
237 buf += "#include <target/target_core_device.h>\n"
238 buf += "#include <target/target_core_tpg.h>\n"
239 buf += "#include <target/target_core_configfs.h>\n"235 buf += "#include <target/target_core_configfs.h>\n"
240 buf += "#include <target/target_core_base.h>\n"
241 buf += "#include <target/configfs_macros.h>\n\n"236 buf += "#include <target/configfs_macros.h>\n\n"
242 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"237 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
243 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"238 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
@@ -260,7 +255,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 16 unmodified lines
260 buf += " /* " + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"255 buf += " /* " + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"
261 buf += " return ERR_PTR(-EINVAL); */\n"256 buf += " return ERR_PTR(-EINVAL); */\n"
262 buf += " se_nacl_new = " + fabric_mod_name + "_alloc_fabric_acl(se_tpg);\n"257 buf += " se_nacl_new = " + fabric_mod_name + "_alloc_fabric_acl(se_tpg);\n"
263 buf += " if (!(se_nacl_new))\n"258 buf += " if (!se_nacl_new)\n"
264 buf += " return ERR_PTR(-ENOMEM);\n"259 buf += " return ERR_PTR(-ENOMEM);\n"
265 buf += "//#warning FIXME: Hardcoded nexus depth in " + fabric_mod_name + "_make_nodeacl()\n"260 buf += "//#warning FIXME: Hardcoded nexus depth in " + fabric_mod_name + "_make_nodeacl()\n"
266 buf += " nexus_depth = 1;\n"261 buf += " nexus_depth = 1;\n"
@@ -308,7 +303,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 41 unmodified lines
308 buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"303 buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"
309 buf += " return ERR_PTR(-EINVAL);\n\n"304 buf += " return ERR_PTR(-EINVAL);\n\n"
310 buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n"305 buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n"
311 buf += " if (!(tpg)) {\n"306 buf += " if (!tpg) {\n"
312 buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_tpg\");\n"307 buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_tpg\");\n"
313 buf += " return ERR_PTR(-ENOMEM);\n"308 buf += " return ERR_PTR(-ENOMEM);\n"
314 buf += " }\n"309 buf += " }\n"
@@ -344,7 +339,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 29 unmodified lines
344 buf += " /* if (" + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"339 buf += " /* if (" + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"
345 buf += " return ERR_PTR(-EINVAL); */\n\n"340 buf += " return ERR_PTR(-EINVAL); */\n\n"
346 buf += " " + fabric_mod_port + " = kzalloc(sizeof(struct " + fabric_mod_name + "_" + fabric_mod_port + "), GFP_KERNEL);\n"341 buf += " " + fabric_mod_port + " = kzalloc(sizeof(struct " + fabric_mod_name + "_" + fabric_mod_port + "), GFP_KERNEL);\n"
347 buf += " if (!(" + fabric_mod_port + ")) {\n"342 buf += " if (!" + fabric_mod_port + ") {\n"
348 buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_" + fabric_mod_port + "\");\n"343 buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_" + fabric_mod_port + "\");\n"
349 buf += " return ERR_PTR(-ENOMEM);\n"344 buf += " return ERR_PTR(-ENOMEM);\n"
350 buf += " }\n"345 buf += " }\n"
@@ -352,7 +347,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 1 unmodified line
352 if proto_ident == "FC" or proto_ident == "SAS":347 if proto_ident == "FC" or proto_ident == "SAS":
353 buf += " " + fabric_mod_port + "->" + fabric_mod_port + "_wwpn = wwpn;\n"348 buf += " " + fabric_mod_port + "->" + fabric_mod_port + "_wwpn = wwpn;\n"
354 349
355 buf += " /* " + fabric_mod_name + "_format_wwn(&" + fabric_mod_port + "->" + fabric_mod_port + "_name[0], " + fabric_mod_name.upper() + "__NAMELEN, wwpn); */\n\n"350 buf += " /* " + fabric_mod_name + "_format_wwn(&" + fabric_mod_port + "->" + fabric_mod_port + "_name[0], " + fabric_mod_name.upper() + "_NAMELEN, wwpn); */\n\n"
356 buf += " return &" + fabric_mod_port + "->" + fabric_mod_port + "_wwn;\n"351 buf += " return &" + fabric_mod_port + "->" + fabric_mod_port + "_wwn;\n"
357 buf += "}\n\n"352 buf += "}\n\n"
358 buf += "static void " + fabric_mod_name + "_drop_" + fabric_mod_port + "(struct se_wwn *wwn)\n"353 buf += "static void " + fabric_mod_name + "_drop_" + fabric_mod_port + "(struct se_wwn *wwn)\n"
@@ -391,8 +386,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 32 unmodified lines
391 buf += " .tpg_alloc_fabric_acl = " + fabric_mod_name + "_alloc_fabric_acl,\n"386 buf += " .tpg_alloc_fabric_acl = " + fabric_mod_name + "_alloc_fabric_acl,\n"
392 buf += " .tpg_release_fabric_acl = " + fabric_mod_name + "_release_fabric_acl,\n"387 buf += " .tpg_release_fabric_acl = " + fabric_mod_name + "_release_fabric_acl,\n"
393 buf += " .tpg_get_inst_index = " + fabric_mod_name + "_tpg_get_inst_index,\n"388 buf += " .tpg_get_inst_index = " + fabric_mod_name + "_tpg_get_inst_index,\n"
394 buf += " .release_cmd_to_pool = " + fabric_mod_name + "_release_cmd,\n"389 buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n"
395 buf += " .release_cmd_direct = " + fabric_mod_name + "_release_cmd,\n"
396 buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n"390 buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n"
397 buf += " .close_session = " + fabric_mod_name + "_close_session,\n"391 buf += " .close_session = " + fabric_mod_name + "_close_session,\n"
398 buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n"392 buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n"
@@ -405,14 +399,12 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 6 unmodified lines
405 buf += " .set_default_node_attributes = " + fabric_mod_name + "_set_default_node_attrs,\n"399 buf += " .set_default_node_attributes = " + fabric_mod_name + "_set_default_node_attrs,\n"
406 buf += " .get_task_tag = " + fabric_mod_name + "_get_task_tag,\n"400 buf += " .get_task_tag = " + fabric_mod_name + "_get_task_tag,\n"
407 buf += " .get_cmd_state = " + fabric_mod_name + "_get_cmd_state,\n"401 buf += " .get_cmd_state = " + fabric_mod_name + "_get_cmd_state,\n"
408 buf += " .new_cmd_failure = " + fabric_mod_name + "_new_cmd_failure,\n"
409 buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n"402 buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n"
410 buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n"403 buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n"
411 buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n"404 buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n"
412 buf += " .get_fabric_sense_len = " + fabric_mod_name + "_get_fabric_sense_len,\n"405 buf += " .get_fabric_sense_len = " + fabric_mod_name + "_get_fabric_sense_len,\n"
413 buf += " .set_fabric_sense_len = " + fabric_mod_name + "_set_fabric_sense_len,\n"406 buf += " .set_fabric_sense_len = " + fabric_mod_name + "_set_fabric_sense_len,\n"
414 buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n"407 buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n"
415 buf += " .pack_lun = " + fabric_mod_name + "_pack_lun,\n"
416 buf += " /*\n"408 buf += " /*\n"
417 buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n"409 buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n"
418 buf += " */\n"410 buf += " */\n"
@@ -439,9 +431,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 20 unmodified lines
439 buf += " * Register the top level struct config_item_type with TCM core\n"431 buf += " * Register the top level struct config_item_type with TCM core\n"
440 buf += " */\n"432 buf += " */\n"
441 buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n"433 buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n"
442 buf += " if (!(fabric)) {\n"434 buf += " if (IS_ERR(fabric)) {\n"
443 buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"435 buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"
444 buf += " return -ENOMEM;\n"436 buf += " return PTR_ERR(fabric);\n"
445 buf += " }\n"437 buf += " }\n"
446 buf += " /*\n"438 buf += " /*\n"
447 buf += " * Setup fabric->tf_ops from our local " + fabric_mod_name + "_ops\n"439 buf += " * Setup fabric->tf_ops from our local " + fabric_mod_name + "_ops\n"
@@ -475,9 +467,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 27 unmodified lines
475 buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + "[0] - Set fabric -> " + fabric_mod_name + "_fabric_configfs\\n\");\n"467 buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + "[0] - Set fabric -> " + fabric_mod_name + "_fabric_configfs\\n\");\n"
476 buf += " return 0;\n"468 buf += " return 0;\n"
477 buf += "};\n\n"469 buf += "};\n\n"
478 buf += "static void " + fabric_mod_name + "_deregister_configfs(void)\n"470 buf += "static void __exit " + fabric_mod_name + "_deregister_configfs(void)\n"
479 buf += "{\n"471 buf += "{\n"
480 buf += " if (!(" + fabric_mod_name + "_fabric_configfs))\n"472 buf += " if (!" + fabric_mod_name + "_fabric_configfs)\n"
481 buf += " return;\n\n"473 buf += " return;\n\n"
482 buf += " target_fabric_configfs_deregister(" + fabric_mod_name + "_fabric_configfs);\n"474 buf += " target_fabric_configfs_deregister(" + fabric_mod_name + "_fabric_configfs);\n"
483 buf += " " + fabric_mod_name + "_fabric_configfs = NULL;\n"475 buf += " " + fabric_mod_name + "_fabric_configfs = NULL;\n"
@@ -492,17 +484,15 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 8 unmodified lines
492 buf += " return ret;\n\n"484 buf += " return ret;\n\n"
493 buf += " return 0;\n"485 buf += " return 0;\n"
494 buf += "};\n\n"486 buf += "};\n\n"
495 buf += "static void " + fabric_mod_name + "_exit(void)\n"487 buf += "static void __exit " + fabric_mod_name + "_exit(void)\n"
496 buf += "{\n"488 buf += "{\n"
497 buf += " " + fabric_mod_name + "_deregister_configfs();\n"489 buf += " " + fabric_mod_name + "_deregister_configfs();\n"
498 buf += "};\n\n"490 buf += "};\n\n"
499 491
500 buf += "#ifdef MODULE\n"
501 buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"492 buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"
502 buf += "MODULE_LICENSE(\"GPL\");\n"493 buf += "MODULE_LICENSE(\"GPL\");\n"
503 buf += "module_init(" + fabric_mod_name + "_init);\n"494 buf += "module_init(" + fabric_mod_name + "_init);\n"
504 buf += "module_exit(" + fabric_mod_name + "_exit);\n"495 buf += "module_exit(" + fabric_mod_name + "_exit);\n"
505 buf += "#endif\n"
506 496
507 ret = p.write(buf)497 ret = p.write(buf)
508 if ret:498 if ret:
@@ -514,7 +504,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 5 unmodified lines
514 504
515def tcm_mod_scan_fabric_ops(tcm_dir):505def tcm_mod_scan_fabric_ops(tcm_dir):
516 506
517 fabric_ops_api = tcm_dir + "include/target/target_core_fabric_ops.h"507 fabric_ops_api = tcm_dir + "include/target/target_core_fabric.h"
518 508
519 print "Using tcm_mod_scan_fabric_ops: " + fabric_ops_api509 print "Using tcm_mod_scan_fabric_ops: " + fabric_ops_api
520 process_fo = 0;510 process_fo = 0;
@@ -579,11 +569,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 58 unmodified lines
579 buf += "#include <scsi/scsi_cmnd.h>\n"569 buf += "#include <scsi/scsi_cmnd.h>\n"
580 buf += "#include <scsi/libfc.h>\n\n"570 buf += "#include <scsi/libfc.h>\n\n"
581 buf += "#include <target/target_core_base.h>\n"571 buf += "#include <target/target_core_base.h>\n"
582 buf += "#include <target/target_core_transport.h>\n"572 buf += "#include <target/target_core_fabric.h>\n"
583 buf += "#include <target/target_core_fabric_ops.h>\n"
584 buf += "#include <target/target_core_fabric_lib.h>\n"
585 buf += "#include <target/target_core_device.h>\n"
586 buf += "#include <target/target_core_tpg.h>\n"
587 buf += "#include <target/target_core_configfs.h>\n\n"573 buf += "#include <target/target_core_configfs.h>\n\n"
588 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"574 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
589 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"575 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
@@ -788,7 +774,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 198 unmodified lines
788 buf += "{\n"774 buf += "{\n"
789 buf += " struct " + fabric_mod_name + "_nacl *nacl;\n\n"775 buf += " struct " + fabric_mod_name + "_nacl *nacl;\n\n"
790 buf += " nacl = kzalloc(sizeof(struct " + fabric_mod_name + "_nacl), GFP_KERNEL);\n"776 buf += " nacl = kzalloc(sizeof(struct " + fabric_mod_name + "_nacl), GFP_KERNEL);\n"
791 buf += " if (!(nacl)) {\n"777 buf += " if (!nacl) {\n"
792 buf += " printk(KERN_ERR \"Unable to alocate struct " + fabric_mod_name + "_nacl\\n\");\n"778 buf += " printk(KERN_ERR \"Unable to alocate struct " + fabric_mod_name + "_nacl\\n\");\n"
793 buf += " return NULL;\n"779 buf += " return NULL;\n"
794 buf += " }\n\n"780 buf += " }\n\n"
@@ -815,7 +801,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 20 unmodified lines
815 buf += "}\n\n"801 buf += "}\n\n"
816 bufi += "u32 " + fabric_mod_name + "_tpg_get_inst_index(struct se_portal_group *);\n"802 bufi += "u32 " + fabric_mod_name + "_tpg_get_inst_index(struct se_portal_group *);\n"
817 803
818 if re.search('release_cmd_to_pool', fo):804 if re.search('\*release_cmd\)\(', fo):
819 buf += "void " + fabric_mod_name + "_release_cmd(struct se_cmd *se_cmd)\n"805 buf += "void " + fabric_mod_name + "_release_cmd(struct se_cmd *se_cmd)\n"
820 buf += "{\n"806 buf += "{\n"
821 buf += " return;\n"807 buf += " return;\n"
@@ -899,13 +885,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 77 unmodified lines
899 buf += "}\n\n"885 buf += "}\n\n"
900 bufi += "int " + fabric_mod_name + "_get_cmd_state(struct se_cmd *);\n"886 bufi += "int " + fabric_mod_name + "_get_cmd_state(struct se_cmd *);\n"
901 887
902 if re.search('new_cmd_failure\)\(', fo):
903 buf += "void " + fabric_mod_name + "_new_cmd_failure(struct se_cmd *se_cmd)\n"
904 buf += "{\n"
905 buf += " return;\n"
906 buf += "}\n\n"
907 bufi += "void " + fabric_mod_name + "_new_cmd_failure(struct se_cmd *);\n"
908
909 if re.search('queue_data_in\)\(', fo):888 if re.search('queue_data_in\)\(', fo):
910 buf += "int " + fabric_mod_name + "_queue_data_in(struct se_cmd *se_cmd)\n"889 buf += "int " + fabric_mod_name + "_queue_data_in(struct se_cmd *se_cmd)\n"
911 buf += "{\n"890 buf += "{\n"
@@ -948,15 +927,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 36 unmodified lines
948 buf += "}\n\n"927 buf += "}\n\n"
949 bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n"928 bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n"
950 929
951 if re.search('pack_lun\)\(', fo):
952 buf += "u64 " + fabric_mod_name + "_pack_lun(unsigned int lun)\n"
953 buf += "{\n"
954 buf += " WARN_ON(lun >= 256);\n"
955 buf += " /* Caller wants this byte-swapped */\n"
956 buf += " return cpu_to_le64((lun & 0xff) << 8);\n"
957 buf += "}\n\n"
958 bufi += "u64 " + fabric_mod_name + "_pack_lun(unsigned int);\n"
959
960 930
961 ret = p.write(buf)931 ret = p.write(buf)
962 if ret:932 if ret:
Documentation/thermal/sysfs-api.txt+1−1
@@ -284,7 +284,7 @@ method, the sys I/F structure will be built like this: · 283 unmodified lines
284The framework includes a simple notification mechanism, in the form of a284The framework includes a simple notification mechanism, in the form of a
285netlink event. Netlink socket initialization is done during the _init_285netlink event. Netlink socket initialization is done during the _init_
286of the framework. Drivers which intend to use the notification mechanism286of the framework. Drivers which intend to use the notification mechanism
287just need to call generate_netlink_event() with two arguments viz287just need to call thermal_generate_netlink_event() with two arguments viz
288(originator, event). Typically the originator will be an integer assigned288(originator, event). Typically the originator will be an integer assigned
289to a thermal_zone_device when it registers itself with the framework. The289to a thermal_zone_device when it registers itself with the framework. The
290event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,290event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,
Documentation/video4linux/v4l2-controls.txt+0−21
@@ -666,27 +666,6 @@ a control of this type whenever the first control belonging to a new control · 665 unmodified lines
666class is added.666class is added.
667 667
668 668
669Differences from the Spec
670=========================
671
672There are a few places where the framework acts slightly differently from the
673V4L2 Specification. Those differences are described in this section. We will
674have to see whether we need to adjust the spec or not.
675
6761) It is no longer required to have all controls contained in a
677v4l2_ext_control array be from the same control class. The framework will be
678able to handle any type of control in the array. You need to set ctrl_class
679to 0 in order to enable this. If ctrl_class is non-zero, then it will still
680check that all controls belong to that control class.
681
682If you set ctrl_class to 0 and count to 0, then it will only return an error
683if there are no controls at all.
684
6852) Clarified the way error_idx works. For get and set it will be equal to
686count if nothing was done yet. If it is less than count then only the controls
687up to error_idx-1 were successfully applied.
688
689
690Proposals for Extensions669Proposals for Extensions
691========================670========================
692 671
Documentation/virtual/00-INDEX+0−2
@@ -4,8 +4,6 @@ Virtualization support in the Linux kernel. · 3 unmodified lines
4 - this file.4 - this file.
5kvm/5kvm/
6 - Kernel Virtual Machine. See also http://linux-kvm.org6 - Kernel Virtual Machine. See also http://linux-kvm.org
7lguest/
8 - Extremely simple hypervisor for experimental/educational use.
9uml/7uml/
10 - User Mode Linux, builds/runs Linux kernel as a userspace program.8 - User Mode Linux, builds/runs Linux kernel as a userspace program.
11virtio.txt9virtio.txt
MAINTAINERS+56−51
@@ -159,7 +159,7 @@ S: Maintained · 158 unmodified lines
159F: drivers/net/ethernet/realtek/r8169.c159F: drivers/net/ethernet/realtek/r8169.c
160 160
1618250/16?50 (AND CLONE UARTS) SERIAL DRIVER1618250/16?50 (AND CLONE UARTS) SERIAL DRIVER
162M: Greg Kroah-Hartman <gregkh@suse.de>162M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
163L: linux-serial@vger.kernel.org163L: linux-serial@vger.kernel.org
164W: http://serial.sourceforge.net164W: http://serial.sourceforge.net
165S: Maintained165S: Maintained
@@ -745,6 +745,7 @@ M: Barry Song <baohua.song@csr.com> · 579 unmodified lines
745L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)745L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
746S: Maintained746S: Maintained
747F: arch/arm/mach-prima2/747F: arch/arm/mach-prima2/
748F: drivers/dma/sirf-dma*
748 749
749ARM/EBSA110 MACHINE SUPPORT750ARM/EBSA110 MACHINE SUPPORT
750M: Russell King <linux@arm.linux.org.uk>751M: Russell King <linux@arm.linux.org.uk>
@@ -788,12 +789,6 @@ F: arch/arm/mach-mx*/ · 37 unmodified lines
788F: arch/arm/mach-imx/789F: arch/arm/mach-imx/
789F: arch/arm/plat-mxc/790F: arch/arm/plat-mxc/
790 791
791ARM/FREESCALE IMX51
792M: Amit Kucheria <amit.kucheria@canonical.com>
793L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
794S: Maintained
795F: arch/arm/mach-mx5/
796
797ARM/FREESCALE IMX6792ARM/FREESCALE IMX6
798M: Shawn Guo <shawn.guo@linaro.org>793M: Shawn Guo <shawn.guo@linaro.org>
799L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)794L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1411,6 +1406,7 @@ F: net/ax25/ · 611 unmodified lines
1411B43 WIRELESS DRIVER1406B43 WIRELESS DRIVER
1412M: Stefano Brivio <stefano.brivio@polimi.it>1407M: Stefano Brivio <stefano.brivio@polimi.it>
1413L: linux-wireless@vger.kernel.org1408L: linux-wireless@vger.kernel.org
1409L: b43-dev@lists.infradead.org (moderated for non-subscribers)
1414W: http://linuxwireless.org/en/users/Drivers/b431410W: http://linuxwireless.org/en/users/Drivers/b43
1415S: Maintained1411S: Maintained
1416F: drivers/net/wireless/b43/1412F: drivers/net/wireless/b43/
@@ -1587,6 +1583,13 @@ L: linux-scsi@vger.kernel.org · 170 unmodified lines
1587S: Supported1583S: Supported
1588F: drivers/scsi/bnx2fc/1584F: drivers/scsi/bnx2fc/
1589 1585
1586BROADCOM SPECIFIC AMBA DRIVER (BCMA)
1587M: Rafał Miłecki <zajec5@gmail.com>
1588L: linux-wireless@vger.kernel.org
1589S: Maintained
1590F: drivers/bcma/
1591F: include/linux/bcma/
1592
1590BROCADE BFA FC SCSI DRIVER1593BROCADE BFA FC SCSI DRIVER
1591M: Jing Huang <huangj@brocade.com>1594M: Jing Huang <huangj@brocade.com>
1592L: linux-scsi@vger.kernel.org1595L: linux-scsi@vger.kernel.org
@@ -1774,9 +1777,9 @@ X: net/wireless/wext* · 181 unmodified lines
1774 1777
1775CHAR and MISC DRIVERS1778CHAR and MISC DRIVERS
1776M: Arnd Bergmann <arnd@arndb.de>1779M: Arnd Bergmann <arnd@arndb.de>
1777M: Greg Kroah-Hartman <greg@kroah.com>1780M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1778T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git1781T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
1779S: Maintained1782S: Supported
1780F: drivers/char/*1783F: drivers/char/*
1781F: drivers/misc/*1784F: drivers/misc/*
1782 1785
@@ -2237,6 +2240,17 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git · 454 unmodified lines
2237S: Supported2240S: Supported
2238F: fs/dlm/2241F: fs/dlm/
2239 2242
2243DMA BUFFER SHARING FRAMEWORK
2244M: Sumit Semwal <sumit.semwal@linaro.org>
2245S: Maintained
2246L: linux-media@vger.kernel.org
2247L: dri-devel@lists.freedesktop.org
2248L: linaro-mm-sig@lists.linaro.org
2249F: drivers/base/dma-buf*
2250F: include/linux/dma-buf*
2251F: Documentation/dma-buf-sharing.txt
2252T: git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git
2253
2240DMA GENERIC OFFLOAD ENGINE SUBSYSTEM2254DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
2241M: Vinod Koul <vinod.koul@intel.com>2255M: Vinod Koul <vinod.koul@intel.com>
2242M: Dan Williams <dan.j.williams@intel.com>2256M: Dan Williams <dan.j.williams@intel.com>
@@ -2267,7 +2281,7 @@ F: drivers/acpi/dock.c · 24 unmodified lines
2267DOCUMENTATION2281DOCUMENTATION
2268M: Randy Dunlap <rdunlap@xenotime.net>2282M: Randy Dunlap <rdunlap@xenotime.net>
2269L: linux-doc@vger.kernel.org2283L: linux-doc@vger.kernel.org
2270T: quilt http://userweb.kernel.org/~rdunlap/kernel-doc-patches/current/2284T: quilt http://xenotime.net/kernel-doc-patches/current/
2271S: Maintained2285S: Maintained
2272F: Documentation/2286F: Documentation/
2273 2287
@@ -2300,7 +2314,7 @@ F: lib/lru_cache.c · 26 unmodified lines
2300F: Documentation/blockdev/drbd/2314F: Documentation/blockdev/drbd/
2301 2315
2302DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS2316DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
2303M: Greg Kroah-Hartman <gregkh@suse.de>2317M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2304T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git2318T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git
2305S: Supported2319S: Supported
2306F: Documentation/kobject.txt2320F: Documentation/kobject.txt
@@ -2330,6 +2344,9 @@ F: include/drm/i915* · 23 unmodified lines
2330 2344
2331DRM DRIVERS FOR EXYNOS2345DRM DRIVERS FOR EXYNOS
2332M: Inki Dae <inki.dae@samsung.com>2346M: Inki Dae <inki.dae@samsung.com>
2347M: Joonyoung Shim <jy0922.shim@samsung.com>
2348M: Seung-Woo Kim <sw0312.kim@samsung.com>
2349M: Kyungmin Park <kyungmin.park@samsung.com>
2333L: dri-devel@lists.freedesktop.org2350L: dri-devel@lists.freedesktop.org
2334S: Supported2351S: Supported
2335F: drivers/gpu/drm/exynos2352F: drivers/gpu/drm/exynos
@@ -2382,7 +2399,7 @@ F: net/bridge/netfilter/ebt*.c · 46 unmodified lines
2382 2399
2383ECRYPT FILE SYSTEM2400ECRYPT FILE SYSTEM
2384M: Tyler Hicks <tyhicks@canonical.com>2401M: Tyler Hicks <tyhicks@canonical.com>
2385M: Dustin Kirkland <kirkland@canonical.com>2402M: Dustin Kirkland <dustin.kirkland@gazzang.com>
2386L: ecryptfs@vger.kernel.org2403L: ecryptfs@vger.kernel.org
2387W: https://launchpad.net/ecryptfs2404W: https://launchpad.net/ecryptfs
2388S: Supported2405S: Supported
@@ -3301,6 +3318,12 @@ S: Maintained · 912 unmodified lines
3301F: net/ieee802154/3318F: net/ieee802154/
3302F: drivers/ieee802154/3319F: drivers/ieee802154/
3303 3320
3321IIO SUBSYSTEM AND DRIVERS
3322M: Jonathan Cameron <jic23@cam.ac.uk>
3323L: linux-iio@vger.kernel.org
3324S: Maintained
3325F: drivers/staging/iio/
3326
3304IKANOS/ADI EAGLE ADSL USB DRIVER3327IKANOS/ADI EAGLE ADSL USB DRIVER
3305M: Matthieu Castet <castet.matthieu@free.fr>3328M: Matthieu Castet <castet.matthieu@free.fr>
3306M: Stanislaw Gruszka <stf_xl@wp.pl>3329M: Stanislaw Gruszka <stf_xl@wp.pl>
@@ -3969,11 +3992,11 @@ M: Rusty Russell <rusty@rustcorp.com.au> · 662 unmodified lines
3969L: lguest@lists.ozlabs.org3992L: lguest@lists.ozlabs.org
3970W: http://lguest.ozlabs.org/3993W: http://lguest.ozlabs.org/
3971S: Odd Fixes3994S: Odd Fixes
3972F: Documentation/virtual/lguest/3995F: arch/x86/include/asm/lguest*.h
3973F: arch/x86/lguest/3996F: arch/x86/lguest/
3974F: drivers/lguest/3997F: drivers/lguest/
3975F: include/linux/lguest*.h3998F: include/linux/lguest*.h
3976F: arch/x86/include/asm/lguest*.h3999F: tools/lguest/
3977 4000
3978LINUX FOR IBM pSERIES (RS/6000)4001LINUX FOR IBM pSERIES (RS/6000)
3979M: Paul Mackerras <paulus@au.ibm.com>4002M: Paul Mackerras <paulus@au.ibm.com>
@@ -4113,10 +4136,11 @@ L: linux-ntfs-dev@lists.sourceforge.net · 133 unmodified lines
4113W: http://www.linux-ntfs.org/content/view/19/37/4136W: http://www.linux-ntfs.org/content/view/19/37/
4114S: Maintained4137S: Maintained
4115F: Documentation/ldm.txt4138F: Documentation/ldm.txt
4116F: fs/partitions/ldm.*4139F: block/partitions/ldm.*
4117 4140
4118LogFS4141LogFS
4119M: Joern Engel <joern@logfs.org>4142M: Joern Engel <joern@logfs.org>
4143M: Prasad Joshi <prasadjoshi.linux@gmail.com>
4120L: logfs@logfs.org4144L: logfs@logfs.org
4121W: logfs.org4145W: logfs.org
4122S: Maintained4146S: Maintained
@@ -4258,13 +4282,6 @@ S: Orphan · 135 unmodified lines
4258F: drivers/video/matrox/matroxfb_*4282F: drivers/video/matrox/matroxfb_*
4259F: include/linux/matroxfb.h4283F: include/linux/matroxfb.h
4260 4284
4261MAX1668 TEMPERATURE SENSOR DRIVER
4262M: "David George" <david.george@ska.ac.za>
4263L: lm-sensors@lm-sensors.org
4264S: Maintained
4265F: Documentation/hwmon/max1668
4266F: drivers/hwmon/max1668.c
4267
4268MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER4285MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
4269M: "Hans J. Koch" <hjk@hansjkoch.de>4286M: "Hans J. Koch" <hjk@hansjkoch.de>
4270L: lm-sensors@lm-sensors.org4287L: lm-sensors@lm-sensors.org
@@ -5616,7 +5633,7 @@ W: http://www.ibm.com/developerworks/linux/linux390/ · 1345 unmodified lines
5616S: Supported5633S: Supported
5617F: arch/s390/5634F: arch/s390/
5618F: drivers/s390/5635F: drivers/s390/
5619F: fs/partitions/ibm.c5636F: block/partitions/ibm.c
5620F: Documentation/s390/5637F: Documentation/s390/
5621F: Documentation/DocBook/s390*5638F: Documentation/DocBook/s390*
5622 5639
@@ -5844,9 +5861,9 @@ S: Maintained · 221 unmodified lines
5844F: drivers/mmc/host/sdhci-spear.c5861F: drivers/mmc/host/sdhci-spear.c
5845 5862
5846SECURITY SUBSYSTEM5863SECURITY SUBSYSTEM
5847M: James Morris <jmorris@namei.org>5864M: James Morris <james.l.morris@oracle.com>
5848L: linux-security-module@vger.kernel.org (suggested Cc:)5865L: linux-security-module@vger.kernel.org (suggested Cc:)
5849T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git5866T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
5850W: http://security.wiki.kernel.org/5867W: http://security.wiki.kernel.org/
5851S: Supported5868S: Supported
5852F: security/5869F: security/
@@ -5857,7 +5874,7 @@ S: Supported · 4 unmodified lines
5857 5874
5858SELINUX SECURITY MODULE5875SELINUX SECURITY MODULE
5859M: Stephen Smalley <sds@tycho.nsa.gov>5876M: Stephen Smalley <sds@tycho.nsa.gov>
5860M: James Morris <jmorris@namei.org>5877M: James Morris <james.l.morris@oracle.com>
5861M: Eric Paris <eparis@parisplace.org>5878M: Eric Paris <eparis@parisplace.org>
5862L: selinux@tycho.nsa.gov (subscribers-only, general discussion)5879L: selinux@tycho.nsa.gov (subscribers-only, general discussion)
5863W: http://selinuxproject.org5880W: http://selinuxproject.org
@@ -6116,13 +6133,6 @@ S: Maintained · 252 unmodified lines
6116F: drivers/ssb/6133F: drivers/ssb/
6117F: include/linux/ssb/6134F: include/linux/ssb/
6118 6135
6119BROADCOM SPECIFIC AMBA DRIVER (BCMA)
6120M: Rafał Miłecki <zajec5@gmail.com>
6121L: linux-wireless@vger.kernel.org
6122S: Maintained
6123F: drivers/bcma/
6124F: include/linux/bcma/
6125
6126SONY VAIO CONTROL DEVICE DRIVER6136SONY VAIO CONTROL DEVICE DRIVER
6127M: Mattia Dongili <malattia@linux.it>6137M: Mattia Dongili <malattia@linux.it>
6128L: platform-driver-x86@vger.kernel.org6138L: platform-driver-x86@vger.kernel.org
@@ -6266,15 +6276,15 @@ S: Maintained · 137 unmodified lines
6266F: arch/alpha/kernel/srm_env.c6276F: arch/alpha/kernel/srm_env.c
6267 6277
6268STABLE BRANCH6278STABLE BRANCH
6269M: Greg Kroah-Hartman <greg@kroah.com>6279M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6270L: stable@vger.kernel.org6280L: stable@vger.kernel.org
6271S: Maintained6281S: Supported
6272 6282
6273STAGING SUBSYSTEM6283STAGING SUBSYSTEM
6274M: Greg Kroah-Hartman <gregkh@suse.de>6284M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6275T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git6285T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
6276L: devel@driverdev.osuosl.org6286L: devel@driverdev.osuosl.org
6277S: Maintained6287S: Supported
6278F: drivers/staging/6288F: drivers/staging/
6279 6289
6280STAGING - AGERE HERMES II and II.5 WIRELESS DRIVERS6290STAGING - AGERE HERMES II and II.5 WIRELESS DRIVERS
@@ -6386,11 +6396,6 @@ M: Omar Ramirez Luna <omar.ramirez@ti.com> · 105 unmodified lines
6386S: Odd Fixes6396S: Odd Fixes
6387F: drivers/staging/tidspbridge/6397F: drivers/staging/tidspbridge/
6388 6398
6389STAGING - TRIDENT TVMASTER TMxxxx USB VIDEO CAPTURE DRIVERS
6390L: linux-media@vger.kernel.org
6391S: Odd Fixes
6392F: drivers/staging/tm6000/
6393
6394STAGING - USB ENE SM/MS CARD READER DRIVER6399STAGING - USB ENE SM/MS CARD READER DRIVER
6395M: Al Cho <acho@novell.com>6400M: Al Cho <acho@novell.com>
6396S: Odd Fixes6401S: Odd Fixes
@@ -6659,10 +6664,10 @@ S: Maintained · 262 unmodified lines
6659K: ^Subject:.*(?i)trivial6664K: ^Subject:.*(?i)trivial
6660 6665
6661TTY LAYER6666TTY LAYER
6662M: Greg Kroah-Hartman <gregkh@suse.de>6667M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6663S: Maintained6668S: Supported
6664T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git6669T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git
6665F: drivers/tty/*6670F: drivers/tty/
6666F: drivers/tty/serial/serial_core.c6671F: drivers/tty/serial/serial_core.c
6667F: include/linux/serial_core.h6672F: include/linux/serial_core.h
6668F: include/linux/serial.h6673F: include/linux/serial.h
@@ -6948,7 +6953,7 @@ S: Maintained · 279 unmodified lines
6948F: drivers/usb/serial/digi_acceleport.c6953F: drivers/usb/serial/digi_acceleport.c
6949 6954
6950USB SERIAL DRIVER6955USB SERIAL DRIVER
6951M: Greg Kroah-Hartman <gregkh@suse.de>6956M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6952L: linux-usb@vger.kernel.org6957L: linux-usb@vger.kernel.org
6953S: Supported6958S: Supported
6954F: Documentation/usb/usb-serial.txt6959F: Documentation/usb/usb-serial.txt
@@ -6963,9 +6968,8 @@ S: Maintained · 8 unmodified lines
6963F: drivers/usb/serial/empeg.c6968F: drivers/usb/serial/empeg.c
6964 6969
6965USB SERIAL KEYSPAN DRIVER6970USB SERIAL KEYSPAN DRIVER
6966M: Greg Kroah-Hartman <greg@kroah.com>6971M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6967L: linux-usb@vger.kernel.org6972L: linux-usb@vger.kernel.org
6968W: http://www.kroah.com/linux/
6969S: Maintained6973S: Maintained
6970F: drivers/usb/serial/*keyspan*6974F: drivers/usb/serial/*keyspan*
6971 6975
@@ -6993,7 +6997,7 @@ F: Documentation/video4linux/sn9c102.txt · 21 unmodified lines
6993F: drivers/media/video/sn9c102/6997F: drivers/media/video/sn9c102/
6994 6998
6995USB SUBSYSTEM6999USB SUBSYSTEM
6996M: Greg Kroah-Hartman <gregkh@suse.de>7000M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6997L: linux-usb@vger.kernel.org7001L: linux-usb@vger.kernel.org
6998W: http://www.linux-usb.org7002W: http://www.linux-usb.org
6999T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6.git7003T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6.git
@@ -7080,7 +7084,7 @@ F: fs/hppfs/ · 80 unmodified lines
7080 7084
7081USERSPACE I/O (UIO)7085USERSPACE I/O (UIO)
7082M: "Hans J. Koch" <hjk@hansjkoch.de>7086M: "Hans J. Koch" <hjk@hansjkoch.de>
7083M: Greg Kroah-Hartman <gregkh@suse.de>7087M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7084S: Maintained7088S: Maintained
7085F: Documentation/DocBook/uio-howto.tmpl7089F: Documentation/DocBook/uio-howto.tmpl
7086F: drivers/uio/7090F: drivers/uio/
@@ -7198,7 +7202,7 @@ S: Maintained · 111 unmodified lines
7198F: drivers/net/vmxnet3/7202F: drivers/net/vmxnet3/
7199 7203
7200VMware PVSCSI driver7204VMware PVSCSI driver
7201M: Alok Kataria <akataria@vmware.com>7205M: Arvind Kumar <arvindkumar@vmware.com>
7202M: VMware PV-Drivers <pv-drivers@vmware.com>7206M: VMware PV-Drivers <pv-drivers@vmware.com>
7203L: linux-scsi@vger.kernel.org7207L: linux-scsi@vger.kernel.org
7204S: Maintained7208S: Maintained
@@ -7355,6 +7359,7 @@ S: Supported · 150 unmodified lines
7355F: Documentation/hwmon/wm83??7359F: Documentation/hwmon/wm83??
7356F: arch/arm/mach-s3c64xx/mach-crag6410*7360F: arch/arm/mach-s3c64xx/mach-crag6410*
7357F: drivers/leds/leds-wm83*.c7361F: drivers/leds/leds-wm83*.c
7362F: drivers/hwmon/wm83??-hwmon.c
7358F: drivers/input/misc/wm831x-on.c7363F: drivers/input/misc/wm831x-on.c
7359F: drivers/input/touchscreen/wm831x-ts.c7364F: drivers/input/touchscreen/wm831x-ts.c
7360F: drivers/input/touchscreen/wm97*.c7365F: drivers/input/touchscreen/wm97*.c
Makefile+2−2
@@ -1,7 +1,7 @@
1VERSION = 31VERSION = 3
2PATCHLEVEL = 22PATCHLEVEL = 3
3SUBLEVEL = 03SUBLEVEL = 0
4EXTRAVERSION =4EXTRAVERSION = -rc4
5NAME = Saber-toothed Squirrel5NAME = Saber-toothed Squirrel
6 6
7# *DOCUMENTATION*7# *DOCUMENTATION*
arch/arm/Kconfig+1−3
@@ -754,7 +754,7 @@ config ARCH_SA1100 · 753 unmodified lines
754 select ARCH_HAS_CPUFREQ754 select ARCH_HAS_CPUFREQ
755 select CPU_FREQ755 select CPU_FREQ
756 select GENERIC_CLOCKEVENTS756 select GENERIC_CLOCKEVENTS
757 select CLKDEV_LOOKUP757 select HAVE_CLK
758 select HAVE_SCHED_CLOCK758 select HAVE_SCHED_CLOCK
759 select TICK_ONESHOT759 select TICK_ONESHOT
760 select ARCH_REQUIRE_GPIOLIB760 select ARCH_REQUIRE_GPIOLIB
@@ -825,7 +825,6 @@ config ARCH_S5PC100 · 64 unmodified lines
825 select HAVE_CLK825 select HAVE_CLK
826 select CLKDEV_LOOKUP826 select CLKDEV_LOOKUP
827 select CPU_V7827 select CPU_V7
828 select ARM_L1_CACHE_SHIFT_6
829 select ARCH_USES_GETTIMEOFFSET828 select ARCH_USES_GETTIMEOFFSET
830 select HAVE_S3C2410_I2C if I2C829 select HAVE_S3C2410_I2C if I2C
831 select HAVE_S3C_RTC if RTC_CLASS830 select HAVE_S3C_RTC if RTC_CLASS
@@ -842,7 +841,6 @@ config ARCH_S5PV210 · 10 unmodified lines
842 select HAVE_CLK841 select HAVE_CLK
843 select CLKDEV_LOOKUP842 select CLKDEV_LOOKUP
844 select CLKSRC_MMIO843 select CLKSRC_MMIO
845 select ARM_L1_CACHE_SHIFT_6
846 select ARCH_HAS_CPUFREQ844 select ARCH_HAS_CPUFREQ
847 select GENERIC_CLOCKEVENTS845 select GENERIC_CLOCKEVENTS
848 select HAVE_SCHED_CLOCK846 select HAVE_SCHED_CLOCK
arch/arm/Makefile+0−1
@@ -160,7 +160,6 @@ machine-$(CONFIG_ARCH_MSM) := msm · 159 unmodified lines
160machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0160machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0
161machine-$(CONFIG_ARCH_IMX_V4_V5) := imx161machine-$(CONFIG_ARCH_IMX_V4_V5) := imx
162machine-$(CONFIG_ARCH_IMX_V6_V7) := imx162machine-$(CONFIG_ARCH_IMX_V6_V7) := imx
163machine-$(CONFIG_ARCH_MX5) := mx5
164machine-$(CONFIG_ARCH_MXS) := mxs163machine-$(CONFIG_ARCH_MXS) := mxs
165machine-$(CONFIG_ARCH_NETX) := netx164machine-$(CONFIG_ARCH_NETX) := netx
166machine-$(CONFIG_ARCH_NOMADIK) := nomadik165machine-$(CONFIG_ARCH_NOMADIK) := nomadik
arch/arm/boot/dts/exynos4210.dtsi+1−0
@@ -29,6 +29,7 @@ · 28 unmodified lines
29 compatible = "arm,cortex-a9-gic";29 compatible = "arm,cortex-a9-gic";
30 #interrupt-cells = <3>;30 #interrupt-cells = <3>;
31 interrupt-controller;31 interrupt-controller;
32 cpu-offset = <0x8000>;
32 reg = <0x10490000 0x1000>, <0x10480000 0x100>;33 reg = <0x10490000 0x1000>, <0x10480000 0x100>;
33 };34 };
34 35
arch/arm/boot/dts/tegra-paz00.dts+3−3
@@ -46,11 +46,11 @@ · 45 unmodified lines
46 };46 };
47 47
48 serial@70006200 {48 serial@70006200 {
49 status = "disable";49 clock-frequency = <216000000>;
50 };50 };
51 51
52 serial@70006300 {52 serial@70006300 {
53 clock-frequency = <216000000>;53 status = "disable";
54 };54 };
55 55
56 serial@70006400 {56 serial@70006400 {
@@ -60,7 +60,7 @@ · 3 unmodified lines
60 sdhci@c8000000 {60 sdhci@c8000000 {
61 cd-gpios = <&gpio 173 0>; /* gpio PV5 */61 cd-gpios = <&gpio 173 0>; /* gpio PV5 */
62 wp-gpios = <&gpio 57 0>; /* gpio PH1 */62 wp-gpios = <&gpio 57 0>; /* gpio PH1 */
63 power-gpios = <&gpio 155 0>; /* gpio PT3 */63 power-gpios = <&gpio 169 0>; /* gpio PV1 */
64 };64 };
65 65
66 sdhci@c8000200 {66 sdhci@c8000200 {
arch/arm/common/gic.c+2−5
@@ -41,6 +41,7 @@ · 40 unmodified lines
41 41
42#include <asm/irq.h>42#include <asm/irq.h>
43#include <asm/exception.h>43#include <asm/exception.h>
44#include <asm/smp_plat.h>
44#include <asm/mach/irq.h>45#include <asm/mach/irq.h>
45#include <asm/hardware/gic.h>46#include <asm/hardware/gic.h>
46 47
@@ -352,11 +353,7 @@ static void __init gic_dist_init(struct gic_chip_data *gic) · 305 unmodified lines
352 unsigned int gic_irqs = gic->gic_irqs;353 unsigned int gic_irqs = gic->gic_irqs;
353 struct irq_domain *domain = &gic->domain;354 struct irq_domain *domain = &gic->domain;
354 void __iomem *base = gic_data_dist_base(gic);355 void __iomem *base = gic_data_dist_base(gic);
355 u32 cpu = 0;356 u32 cpu = cpu_logical_map(smp_processor_id());
356
357#ifdef CONFIG_SMP
358 cpu = cpu_logical_map(smp_processor_id());
359#endif
360 357
361 cpumask = 1 << cpu;358 cpumask = 1 << cpu;
362 cpumask |= cpumask << 8;359 cpumask |= cpumask << 8;
arch/arm/common/it8152.c+0−7
@@ -320,13 +320,6 @@ err0: · 319 unmodified lines
320 return -EBUSY;320 return -EBUSY;
321}321}
322 322
323/*
324 * If we set up a device for bus mastering, we need to check the latency
325 * timer as we don't have even crappy BIOSes to set it properly.
326 * The implementation is from arch/i386/pci/i386.c
327 */
328unsigned int pcibios_max_latency = 255;
329
330/* ITE bridge requires setting latency timer to avoid early bus access323/* ITE bridge requires setting latency timer to avoid early bus access
331 termination by PCI bus master devices324 termination by PCI bus master devices
332*/325*/
arch/arm/common/pl330.c+2−1
@@ -1502,12 +1502,13 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op) · 1501 unmodified lines
1502 struct pl330_thread *thrd = ch_id;1502 struct pl330_thread *thrd = ch_id;
1503 struct pl330_dmac *pl330;1503 struct pl330_dmac *pl330;
1504 unsigned long flags;1504 unsigned long flags;
1505 int ret = 0, active = thrd->req_running;1505 int ret = 0, active;
1506 1506
1507 if (!thrd || thrd->free || thrd->dmac->state == DYING)1507 if (!thrd || thrd->free || thrd->dmac->state == DYING)
1508 return -EINVAL;1508 return -EINVAL;
1509 1509
1510 pl330 = thrd->dmac;1510 pl330 = thrd->dmac;
1511 active = thrd->req_running;
1511 1512
1512 spin_lock_irqsave(&pl330->lock, flags);1513 spin_lock_irqsave(&pl330->lock, flags);
1513 1514
arch/arm/configs/imx_v6_v7_defconfigrenamed from arch/arm/configs/mx5_defconfig+35−26
@@ -3,6 +3,7 @@ CONFIG_EXPERIMENTAL=y · 2 unmodified lines
3CONFIG_KERNEL_LZO=y3CONFIG_KERNEL_LZO=y
4CONFIG_SYSVIPC=y4CONFIG_SYSVIPC=y
5CONFIG_LOG_BUF_SHIFT=185CONFIG_LOG_BUF_SHIFT=18
6CONFIG_CGROUPS=y
6CONFIG_RELAY=y7CONFIG_RELAY=y
7CONFIG_EXPERT=y8CONFIG_EXPERT=y
8# CONFIG_SLUB_DEBUG is not set9# CONFIG_SLUB_DEBUG is not set
@@ -14,20 +15,31 @@ CONFIG_MODULE_SRCVERSION_ALL=y · 5 unmodified lines
14# CONFIG_LBDAF is not set15# CONFIG_LBDAF is not set
15# CONFIG_BLK_DEV_BSG is not set16# CONFIG_BLK_DEV_BSG is not set
16CONFIG_ARCH_MXC=y17CONFIG_ARCH_MXC=y
17CONFIG_ARCH_MX5=y18CONFIG_MACH_MX31LILLY=y
18CONFIG_MACH_MX51_BABBAGE=y19CONFIG_MACH_MX31LITE=y
20CONFIG_MACH_PCM037=y
21CONFIG_MACH_PCM037_EET=y
22CONFIG_MACH_MX31_3DS=y
23CONFIG_MACH_MX31MOBOARD=y
24CONFIG_MACH_QONG=y
25CONFIG_MACH_ARMADILLO5X0=y
26CONFIG_MACH_KZM_ARM11_01=y
27CONFIG_MACH_PCM043=y
28CONFIG_MACH_MX35_3DS=y
29CONFIG_MACH_EUKREA_CPUIMX35=y
30CONFIG_MACH_VPR200=y
31CONFIG_MACH_IMX51_DT=y
19CONFIG_MACH_MX51_3DS=y32CONFIG_MACH_MX51_3DS=y
20CONFIG_MACH_EUKREA_CPUIMX51=y33CONFIG_MACH_EUKREA_CPUIMX51=y
21CONFIG_MACH_EUKREA_CPUIMX51SD=y34CONFIG_MACH_EUKREA_CPUIMX51SD=y
22CONFIG_MACH_MX51_EFIKAMX=y35CONFIG_MACH_MX51_EFIKAMX=y
23CONFIG_MACH_MX51_EFIKASB=y36CONFIG_MACH_MX51_EFIKASB=y
24CONFIG_MACH_MX53_EVK=y37CONFIG_MACH_IMX53_DT=y
25CONFIG_MACH_MX53_SMD=y38CONFIG_SOC_IMX6Q=y
26CONFIG_MACH_MX53_LOCO=y
27CONFIG_MACH_MX53_ARD=y
28CONFIG_MXC_PWM=y39CONFIG_MXC_PWM=y
29CONFIG_NO_HZ=y40CONFIG_NO_HZ=y
30CONFIG_HIGH_RES_TIMERS=y41CONFIG_HIGH_RES_TIMERS=y
42CONFIG_SMP=y
31CONFIG_VMSPLIT_2G=y43CONFIG_VMSPLIT_2G=y
32CONFIG_PREEMPT_VOLUNTARY=y44CONFIG_PREEMPT_VOLUNTARY=y
33CONFIG_AEABI=y45CONFIG_AEABI=y
@@ -49,7 +61,7 @@ CONFIG_IP_PNP_DHCP=y · 15 unmodified lines
49# CONFIG_INET_XFRM_MODE_TUNNEL is not set61# CONFIG_INET_XFRM_MODE_TUNNEL is not set
50# CONFIG_INET_XFRM_MODE_BEET is not set62# CONFIG_INET_XFRM_MODE_BEET is not set
51# CONFIG_INET_LRO is not set63# CONFIG_INET_LRO is not set
52# CONFIG_IPV6 is not set64CONFIG_IPV6=y
53# CONFIG_WIRELESS is not set65# CONFIG_WIRELESS is not set
54CONFIG_DEVTMPFS=y66CONFIG_DEVTMPFS=y
55CONFIG_DEVTMPFS_MOUNT=y67CONFIG_DEVTMPFS_MOUNT=y
@@ -68,24 +80,20 @@ CONFIG_SCSI_SCAN_ASYNC=y · 12 unmodified lines
68CONFIG_ATA=y80CONFIG_ATA=y
69CONFIG_PATA_IMX=y81CONFIG_PATA_IMX=y
70CONFIG_NETDEVICES=y82CONFIG_NETDEVICES=y
71CONFIG_MII=m83# CONFIG_NET_VENDOR_BROADCOM is not set
72CONFIG_MARVELL_PHY=y84# CONFIG_NET_VENDOR_CHELSIO is not set
73CONFIG_DAVICOM_PHY=y85# CONFIG_NET_VENDOR_FARADAY is not set
74CONFIG_QSEMI_PHY=y86CONFIG_FEC=y
75CONFIG_LXT_PHY=y87# CONFIG_NET_VENDOR_INTEL is not set
76CONFIG_CICADA_PHY=y88# CONFIG_NET_VENDOR_MARVELL is not set
77CONFIG_VITESSE_PHY=y89# CONFIG_NET_VENDOR_MICREL is not set
78CONFIG_SMSC_PHY=y90# CONFIG_NET_VENDOR_MICROCHIP is not set
79CONFIG_BROADCOM_PHY=y91# CONFIG_NET_VENDOR_NATSEMI is not set
80CONFIG_ICPLUS_PHY=y92# CONFIG_NET_VENDOR_SEEQ is not set
81CONFIG_REALTEK_PHY=y93CONFIG_SMC91X=y
82CONFIG_NATIONAL_PHY=y94CONFIG_SMC911X=y
83CONFIG_STE10XP=y95CONFIG_SMSC911X=y
84CONFIG_LSI_ET1011C_PHY=y96# CONFIG_NET_VENDOR_STMICRO is not set
85CONFIG_MICREL_PHY=y
86CONFIG_NET_ETHERNET=y
87# CONFIG_NETDEV_1000 is not set
88# CONFIG_NETDEV_10000 is not set
89# CONFIG_WLAN is not set97# CONFIG_WLAN is not set
90# CONFIG_INPUT_MOUSEDEV_PSAUX is not set98# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
91CONFIG_INPUT_EVDEV=y99CONFIG_INPUT_EVDEV=y
@@ -124,7 +132,6 @@ CONFIG_USB_EHCI_HCD=y · 32 unmodified lines
124CONFIG_USB_EHCI_MXC=y132CONFIG_USB_EHCI_MXC=y
125CONFIG_USB_STORAGE=y133CONFIG_USB_STORAGE=y
126CONFIG_MMC=y134CONFIG_MMC=y
127CONFIG_MMC_BLOCK=m
128CONFIG_MMC_SDHCI=y135CONFIG_MMC_SDHCI=y
129CONFIG_MMC_SDHCI_PLTFM=y136CONFIG_MMC_SDHCI_PLTFM=y
130CONFIG_MMC_SDHCI_ESDHC_IMX=y137CONFIG_MMC_SDHCI_ESDHC_IMX=y
@@ -133,6 +140,8 @@ CONFIG_LEDS_CLASS=y · 2 unmodified lines
133CONFIG_RTC_CLASS=y140CONFIG_RTC_CLASS=y
134CONFIG_RTC_INTF_DEV_UIE_EMUL=y141CONFIG_RTC_INTF_DEV_UIE_EMUL=y
135CONFIG_RTC_MXC=y142CONFIG_RTC_MXC=y
143CONFIG_DMADEVICES=y
144CONFIG_IMX_SDMA=y
136CONFIG_EXT2_FS=y145CONFIG_EXT2_FS=y
137CONFIG_EXT2_FS_XATTR=y146CONFIG_EXT2_FS_XATTR=y
138CONFIG_EXT2_FS_POSIX_ACL=y147CONFIG_EXT2_FS_POSIX_ACL=y
arch/arm/configs/mx3_defconfig+0−144
@@ -1,144 +0,0 @@
1CONFIG_EXPERIMENTAL=y
2CONFIG_SYSVIPC=y
3CONFIG_IKCONFIG=y
4CONFIG_IKCONFIG_PROC=y
5CONFIG_LOG_BUF_SHIFT=14
6CONFIG_EXPERT=y
7CONFIG_SLAB=y
8CONFIG_MODULES=y
9CONFIG_MODULE_UNLOAD=y
10CONFIG_MODULE_FORCE_UNLOAD=y
11CONFIG_MODVERSIONS=y
12# CONFIG_BLK_DEV_BSG is not set
13CONFIG_ARCH_MXC=y
14CONFIG_MACH_MX31ADS_WM1133_EV1=y
15CONFIG_MACH_MX31LILLY=y
16CONFIG_MACH_MX31LITE=y
17CONFIG_MACH_PCM037=y
18CONFIG_MACH_PCM037_EET=y
19CONFIG_MACH_MX31_3DS=y
20CONFIG_MACH_MX31MOBOARD=y
21CONFIG_MACH_QONG=y
22CONFIG_MACH_ARMADILLO5X0=y
23CONFIG_MACH_KZM_ARM11_01=y
24CONFIG_MACH_PCM043=y
25CONFIG_MACH_MX35_3DS=y
26CONFIG_MACH_EUKREA_CPUIMX35=y
27CONFIG_MXC_IRQ_PRIOR=y
28CONFIG_MXC_PWM=y
29CONFIG_ARM_ERRATA_411920=y
30CONFIG_NO_HZ=y
31CONFIG_HIGH_RES_TIMERS=y
32CONFIG_PREEMPT=y
33CONFIG_AEABI=y
34CONFIG_ZBOOT_ROM_TEXT=0x0
35CONFIG_ZBOOT_ROM_BSS=0x0
36CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw ip=off"
37CONFIG_VFP=y
38CONFIG_PM_DEBUG=y
39CONFIG_NET=y
40CONFIG_PACKET=y
41CONFIG_UNIX=y
42CONFIG_INET=y
43CONFIG_IP_PNP=y
44CONFIG_IP_PNP_DHCP=y
45# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
46# CONFIG_INET_XFRM_MODE_TUNNEL is not set
47# CONFIG_INET_XFRM_MODE_BEET is not set
48# CONFIG_INET_LRO is not set
49# CONFIG_INET_DIAG is not set
50# CONFIG_IPV6 is not set
51CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
52CONFIG_FW_LOADER=m
53CONFIG_MTD=y
54CONFIG_MTD_CMDLINE_PARTS=y
55CONFIG_MTD_CHAR=y
56CONFIG_MTD_BLOCK=y
57CONFIG_MTD_CFI=y
58CONFIG_MTD_PHYSMAP=y
59CONFIG_MTD_NAND=y
60CONFIG_MTD_NAND_MXC=y
61CONFIG_MTD_UBI=y
62# CONFIG_BLK_DEV is not set
63CONFIG_MISC_DEVICES=y
64CONFIG_EEPROM_AT24=y
65CONFIG_NETDEVICES=y
66CONFIG_SMSC_PHY=y
67CONFIG_NET_ETHERNET=y
68CONFIG_SMSC911X=y
69CONFIG_DNET=y
70# CONFIG_NETDEV_1000 is not set
71# CONFIG_NETDEV_10000 is not set
72# CONFIG_INPUT_MOUSEDEV is not set
73# CONFIG_KEYBOARD_ATKBD is not set
74CONFIG_KEYBOARD_IMX=y
75# CONFIG_INPUT_MOUSE is not set
76# CONFIG_SERIO is not set
77# CONFIG_VT is not set
78# CONFIG_LEGACY_PTYS is not set
79CONFIG_SERIAL_8250=m
80CONFIG_SERIAL_8250_EXTENDED=y
81CONFIG_SERIAL_8250_SHARE_IRQ=y
82CONFIG_SERIAL_IMX=y
83CONFIG_SERIAL_IMX_CONSOLE=y
84# CONFIG_HW_RANDOM is not set
85CONFIG_I2C=y
86CONFIG_I2C_CHARDEV=y
87CONFIG_I2C_IMX=y
88CONFIG_SPI=y
89CONFIG_W1=y
90CONFIG_W1_MASTER_MXC=y
91CONFIG_W1_SLAVE_THERM=y
92# CONFIG_HWMON is not set
93CONFIG_WATCHDOG=y
94CONFIG_IMX2_WDT=y
95CONFIG_MFD_WM8350_I2C=y
96CONFIG_REGULATOR=y
97CONFIG_REGULATOR_WM8350=y
98CONFIG_MEDIA_SUPPORT=y
99CONFIG_VIDEO_DEV=y
100# CONFIG_RC_CORE is not set
101# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
102CONFIG_SOC_CAMERA=y
103CONFIG_SOC_CAMERA_MT9M001=y
104CONFIG_SOC_CAMERA_MT9M111=y
105CONFIG_SOC_CAMERA_MT9T031=y
106CONFIG_SOC_CAMERA_MT9V022=y
107CONFIG_SOC_CAMERA_TW9910=y
108CONFIG_SOC_CAMERA_OV772X=y
109CONFIG_VIDEO_MX3=y
110# CONFIG_RADIO_ADAPTERS is not set
111CONFIG_FB=y
112CONFIG_SOUND=y
113CONFIG_SND=y
114# CONFIG_SND_ARM is not set
115# CONFIG_SND_SPI is not set
116CONFIG_SND_SOC=y
117CONFIG_SND_IMX_SOC=y
118CONFIG_SND_MXC_SOC_WM1133_EV1=y
119CONFIG_SND_SOC_PHYCORE_AC97=y
120CONFIG_SND_SOC_EUKREA_TLV320=y
121CONFIG_USB=y
122CONFIG_USB_EHCI_HCD=y
123CONFIG_USB_EHCI_MXC=y
124CONFIG_USB_GADGET=m
125CONFIG_USB_FSL_USB2=m
126CONFIG_USB_G_SERIAL=m
127CONFIG_USB_ULPI=y
128CONFIG_MMC=y
129CONFIG_MMC_MXC=y
130CONFIG_RTC_CLASS=y
131CONFIG_RTC_MXC=y
132CONFIG_DMADEVICES=y
133# CONFIG_DNOTIFY is not set
134CONFIG_TMPFS=y
135CONFIG_JFFS2_FS=y
136CONFIG_UBIFS_FS=y
137CONFIG_NFS_FS=y
138CONFIG_NFS_V3=y
139CONFIG_NFS_V4=y
140CONFIG_ROOT_NFS=y
141# CONFIG_ENABLE_WARN_DEPRECATED is not set
142# CONFIG_ENABLE_MUST_CHECK is not set
143CONFIG_SYSCTL_SYSCALL_CHECK=y
144# CONFIG_CRYPTO_ANSI_CPRNG is not set
arch/arm/include/asm/assembler.h+7−2
@@ -137,6 +137,11 @@ · 136 unmodified lines
137 disable_irq137 disable_irq
138 .endm138 .endm
139 139
140 .macro save_and_disable_irqs_notrace, oldcpsr
141 mrs \oldcpsr, cpsr
142 disable_irq_notrace
143 .endm
144
140/*145/*
141 * Restore interrupt state previously stored in a register. We don't146 * Restore interrupt state previously stored in a register. We don't
142 * guarantee that this will preserve the flags.147 * guarantee that this will preserve the flags.
@@ -237,7 +242,7 @@ · 94 unmodified lines
237 */242 */
238#ifdef CONFIG_THUMB2_KERNEL243#ifdef CONFIG_THUMB2_KERNEL
239 244
240 .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=T()245 .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER()
2419999:2469999:
242 .if \inc == 1247 .if \inc == 1
243 \instr\cond\()b\()\t\().w \reg, [\ptr, #\off]248 \instr\cond\()b\()\t\().w \reg, [\ptr, #\off]
@@ -277,7 +282,7 @@ · 33 unmodified lines
277 282
278#else /* !CONFIG_THUMB2_KERNEL */283#else /* !CONFIG_THUMB2_KERNEL */
279 284
280 .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=T()285 .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=TUSER()
281 .rept \rept286 .rept \rept
2829999:2879999:
283 .if \inc == 1288 .if \inc == 1
arch/arm/include/asm/domain.h+4−4
@@ -83,9 +83,9 @@ · 82 unmodified lines
83 * instructions (inline assembly)83 * instructions (inline assembly)
84 */84 */
85#ifdef CONFIG_CPU_USE_DOMAINS85#ifdef CONFIG_CPU_USE_DOMAINS
86#define T(instr) #instr "t"86#define TUSER(instr) #instr "t"
87#else87#else
88#define T(instr) #instr88#define TUSER(instr) #instr
89#endif89#endif
90 90
91#else /* __ASSEMBLY__ */91#else /* __ASSEMBLY__ */
@@ -95,9 +95,9 @@ · 3 unmodified lines
95 * instructions95 * instructions
96 */96 */
97#ifdef CONFIG_CPU_USE_DOMAINS97#ifdef CONFIG_CPU_USE_DOMAINS
98#define T(instr) instr ## t98#define TUSER(instr) instr ## t
99#else99#else
100#define T(instr) instr100#define TUSER(instr) instr
101#endif101#endif
102 102
103#endif /* __ASSEMBLY__ */103#endif /* __ASSEMBLY__ */
arch/arm/include/asm/futex.h+4−4
@@ -75,9 +75,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, · 74 unmodified lines
75 75
76#define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \76#define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \
77 __asm__ __volatile__( \77 __asm__ __volatile__( \
78 "1: " T(ldr) " %1, [%3]\n" \78 "1: " TUSER(ldr) " %1, [%3]\n" \
79 " " insn "\n" \79 " " insn "\n" \
80 "2: " T(str) " %0, [%3]\n" \80 "2: " TUSER(str) " %0, [%3]\n" \
81 " mov %0, #0\n" \81 " mov %0, #0\n" \
82 __futex_atomic_ex_table("%5") \82 __futex_atomic_ex_table("%5") \
83 : "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \83 : "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \
@@ -95,10 +95,10 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, · 11 unmodified lines
95 return -EFAULT;95 return -EFAULT;
96 96
97 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"97 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
98 "1: " T(ldr) " %1, [%4]\n"98 "1: " TUSER(ldr) " %1, [%4]\n"
99 " teq %1, %2\n"99 " teq %1, %2\n"
100 " it eq @ explicit IT needed for the 2b label\n"100 " it eq @ explicit IT needed for the 2b label\n"
101 "2: " T(streq) " %3, [%4]\n"101 "2: " TUSER(streq) " %3, [%4]\n"
102 __futex_atomic_ex_table("%5")102 __futex_atomic_ex_table("%5")
103 : "+r" (ret), "=&r" (val)103 : "+r" (ret), "=&r" (val)
104 : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)104 : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
arch/arm/include/asm/hardware/pl330.h+1−1
@@ -41,7 +41,7 @@ enum pl330_dstcachectrl { · 40 unmodified lines
41 DCCTRL1, /* Bufferable only */41 DCCTRL1, /* Bufferable only */
42 DCCTRL2, /* Cacheable, but do not allocate */42 DCCTRL2, /* Cacheable, but do not allocate */
43 DCCTRL3, /* Cacheable and bufferable, but do not allocate */43 DCCTRL3, /* Cacheable and bufferable, but do not allocate */
44 DINVALID1 = 8,44 DINVALID1, /* AWCACHE = 0x1000 */
45 DINVALID2,45 DINVALID2,
46 DCCTRL6, /* Cacheable write-through, allocate on writes only */46 DCCTRL6, /* Cacheable write-through, allocate on writes only */
47 DCCTRL7, /* Cacheable write-back, allocate on writes only */47 DCCTRL7, /* Cacheable write-back, allocate on writes only */
arch/arm/include/asm/kprobes.h+0−1
@@ -24,7 +24,6 @@ · 23 unmodified lines
24#define MAX_INSN_SIZE 224#define MAX_INSN_SIZE 2
25#define MAX_STACK_SIZE 64 /* 32 would probably be OK */25#define MAX_STACK_SIZE 64 /* 32 would probably be OK */
26 26
27#define regs_return_value(regs) ((regs)->ARM_r0)
28#define flush_insn_slot(p) do { } while (0)27#define flush_insn_slot(p) do { } while (0)
29#define kretprobe_blacklist_size 028#define kretprobe_blacklist_size 0
30 29
arch/arm/include/asm/processor.h+1−0
@@ -22,6 +22,7 @@ · 21 unmodified lines
22#include <asm/hw_breakpoint.h>22#include <asm/hw_breakpoint.h>
23#include <asm/ptrace.h>23#include <asm/ptrace.h>
24#include <asm/types.h>24#include <asm/types.h>
25#include <asm/system.h>
25 26
26#ifdef __KERNEL__27#ifdef __KERNEL__
27#define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \28#define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \
arch/arm/include/asm/ptrace.h+5−0
@@ -189,6 +189,11 @@ static inline int valid_user_regs(struct pt_regs *regs) · 188 unmodified lines
189 return 0;189 return 0;
190}190}
191 191
192static inline long regs_return_value(struct pt_regs *regs)
193{
194 return regs->ARM_r0;
195}
196
192#define instruction_pointer(regs) (regs)->ARM_pc197#define instruction_pointer(regs) (regs)->ARM_pc
193 198
194#ifdef CONFIG_SMP199#ifdef CONFIG_SMP
arch/arm/include/asm/smp.h+0−6
@@ -70,12 +70,6 @@ extern void platform_secondary_init(unsigned int cpu); · 69 unmodified lines
70 */70 */
71extern void platform_smp_prepare_cpus(unsigned int);71extern void platform_smp_prepare_cpus(unsigned int);
72 72
73/*
74 * Logical CPU mapping.
75 */
76extern int __cpu_logical_map[NR_CPUS];
77#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
78
79/*73/*
80 * Initial data for bringing up a secondary CPU.74 * Initial data for bringing up a secondary CPU.
81 */75 */
arch/arm/include/asm/smp_plat.h+6−0
@@ -43,4 +43,10 @@ static inline int cache_ops_need_broadcast(void) · 42 unmodified lines
43}43}
44#endif44#endif
45 45
46/*
47 * Logical CPU mapping.
48 */
49extern int __cpu_logical_map[];
50#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
51
46#endif52#endif
arch/arm/include/asm/thread_info.h+6−0
@@ -129,6 +129,7 @@ extern void vfp_flush_hwstate(struct thread_info *); · 128 unmodified lines
129/*129/*
130 * thread information flags:130 * thread information flags:
131 * TIF_SYSCALL_TRACE - syscall trace active131 * TIF_SYSCALL_TRACE - syscall trace active
132 * TIF_SYSCAL_AUDIT - syscall auditing active
132 * TIF_SIGPENDING - signal pending133 * TIF_SIGPENDING - signal pending
133 * TIF_NEED_RESCHED - rescheduling necessary134 * TIF_NEED_RESCHED - rescheduling necessary
134 * TIF_NOTIFY_RESUME - callback before returning to user135 * TIF_NOTIFY_RESUME - callback before returning to user
@@ -139,6 +140,7 @@ extern void vfp_flush_hwstate(struct thread_info *); · 4 unmodified lines
139#define TIF_NEED_RESCHED 1140#define TIF_NEED_RESCHED 1
140#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */141#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
141#define TIF_SYSCALL_TRACE 8142#define TIF_SYSCALL_TRACE 8
143#define TIF_SYSCALL_AUDIT 9
142#define TIF_POLLING_NRFLAG 16144#define TIF_POLLING_NRFLAG 16
143#define TIF_USING_IWMMXT 17145#define TIF_USING_IWMMXT 17
144#define TIF_MEMDIE 18 /* is terminating due to OOM killer */146#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
@@ -149,11 +151,15 @@ extern void vfp_flush_hwstate(struct thread_info *); · 4 unmodified lines
149#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)151#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
150#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)152#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
151#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)153#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
154#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
152#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)155#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
153#define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)156#define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
154#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)157#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
155#define _TIF_SECCOMP (1 << TIF_SECCOMP)158#define _TIF_SECCOMP (1 << TIF_SECCOMP)
156 159
160/* Checks for any syscall work in entry-common.S */
161#define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT)
162
157/*163/*
158 * Change these and you break ASM code in entry-common.S164 * Change these and you break ASM code in entry-common.S
159 */165 */
arch/arm/include/asm/tlb.h+9−1
@@ -198,7 +198,15 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, · 197 unmodified lines
198 unsigned long addr)198 unsigned long addr)
199{199{
200 pgtable_page_dtor(pte);200 pgtable_page_dtor(pte);
201 tlb_add_flush(tlb, addr);201
202 /*
203 * With the classic ARM MMU, a pte page has two corresponding pmd
204 * entries, each covering 1MB.
205 */
206 addr &= PMD_MASK;
207 tlb_add_flush(tlb, addr + SZ_1M - PAGE_SIZE);
208 tlb_add_flush(tlb, addr + SZ_1M);
209
202 tlb_remove_page(tlb, pte);210 tlb_remove_page(tlb, pte);
203}211}
204 212
arch/arm/include/asm/uaccess.h+8−8
@@ -227,7 +227,7 @@ do { \ · 226 unmodified lines
227 227
228#define __get_user_asm_byte(x,addr,err) \228#define __get_user_asm_byte(x,addr,err) \
229 __asm__ __volatile__( \229 __asm__ __volatile__( \
230 "1: " T(ldrb) " %1,[%2],#0\n" \230 "1: " TUSER(ldrb) " %1,[%2],#0\n" \
231 "2:\n" \231 "2:\n" \
232 " .pushsection .fixup,\"ax\"\n" \232 " .pushsection .fixup,\"ax\"\n" \
233 " .align 2\n" \233 " .align 2\n" \
@@ -263,7 +263,7 @@ do { \ · 29 unmodified lines
263 263
264#define __get_user_asm_word(x,addr,err) \264#define __get_user_asm_word(x,addr,err) \
265 __asm__ __volatile__( \265 __asm__ __volatile__( \
266 "1: " T(ldr) " %1,[%2],#0\n" \266 "1: " TUSER(ldr) " %1,[%2],#0\n" \
267 "2:\n" \267 "2:\n" \
268 " .pushsection .fixup,\"ax\"\n" \268 " .pushsection .fixup,\"ax\"\n" \
269 " .align 2\n" \269 " .align 2\n" \
@@ -308,7 +308,7 @@ do { \ · 38 unmodified lines
308 308
309#define __put_user_asm_byte(x,__pu_addr,err) \309#define __put_user_asm_byte(x,__pu_addr,err) \
310 __asm__ __volatile__( \310 __asm__ __volatile__( \
311 "1: " T(strb) " %1,[%2],#0\n" \311 "1: " TUSER(strb) " %1,[%2],#0\n" \
312 "2:\n" \312 "2:\n" \
313 " .pushsection .fixup,\"ax\"\n" \313 " .pushsection .fixup,\"ax\"\n" \
314 " .align 2\n" \314 " .align 2\n" \
@@ -341,7 +341,7 @@ do { \ · 26 unmodified lines
341 341
342#define __put_user_asm_word(x,__pu_addr,err) \342#define __put_user_asm_word(x,__pu_addr,err) \
343 __asm__ __volatile__( \343 __asm__ __volatile__( \
344 "1: " T(str) " %1,[%2],#0\n" \344 "1: " TUSER(str) " %1,[%2],#0\n" \
345 "2:\n" \345 "2:\n" \
346 " .pushsection .fixup,\"ax\"\n" \346 " .pushsection .fixup,\"ax\"\n" \
347 " .align 2\n" \347 " .align 2\n" \
@@ -366,10 +366,10 @@ do { \ · 18 unmodified lines
366 366
367#define __put_user_asm_dword(x,__pu_addr,err) \367#define __put_user_asm_dword(x,__pu_addr,err) \
368 __asm__ __volatile__( \368 __asm__ __volatile__( \
369 ARM( "1: " T(str) " " __reg_oper1 ", [%1], #4\n" ) \369 ARM( "1: " TUSER(str) " " __reg_oper1 ", [%1], #4\n" ) \
370 ARM( "2: " T(str) " " __reg_oper0 ", [%1]\n" ) \370 ARM( "2: " TUSER(str) " " __reg_oper0 ", [%1]\n" ) \
371 THUMB( "1: " T(str) " " __reg_oper1 ", [%1]\n" ) \371 THUMB( "1: " TUSER(str) " " __reg_oper1 ", [%1]\n" ) \
372 THUMB( "2: " T(str) " " __reg_oper0 ", [%1, #4]\n" ) \372 THUMB( "2: " TUSER(str) " " __reg_oper0 ", [%1, #4]\n" ) \
373 "3:\n" \373 "3:\n" \
374 " .pushsection .fixup,\"ax\"\n" \374 " .pushsection .fixup,\"ax\"\n" \
375 " .align 2\n" \375 " .align 2\n" \
arch/arm/include/asm/unified.h+2−2
@@ -37,8 +37,8 @@ · 36 unmodified lines
37#define THUMB(x...) x37#define THUMB(x...) x
38#ifdef __ASSEMBLY__38#ifdef __ASSEMBLY__
39#define W(instr) instr.w39#define W(instr) instr.w
40#endif
41#define BSYM(sym) sym + 140#define BSYM(sym) sym + 1
41#endif
42 42
43#else /* !CONFIG_THUMB2_KERNEL */43#else /* !CONFIG_THUMB2_KERNEL */
44 44
@@ -49,8 +49,8 @@ · 4 unmodified lines
49#define THUMB(x...)49#define THUMB(x...)
50#ifdef __ASSEMBLY__50#ifdef __ASSEMBLY__
51#define W(instr) instr51#define W(instr) instr
52#endif
53#define BSYM(sym) sym52#define BSYM(sym) sym
53#endif
54 54
55#endif /* CONFIG_THUMB2_KERNEL */55#endif /* CONFIG_THUMB2_KERNEL */
56 56
arch/arm/kernel/entry-armv.S+1−1
@@ -790,7 +790,7 @@ __kuser_cmpxchg64: @ 0xffff0f60 · 789 unmodified lines
790 smp_dmb arm790 smp_dmb arm
791 rsbs r0, r3, #0 @ set returned val and C flag791 rsbs r0, r3, #0 @ set returned val and C flag
792 ldmfd sp!, {r4, r5, r6, r7}792 ldmfd sp!, {r4, r5, r6, r7}
793 bx lr793 usr_ret lr
794 794
795#elif !defined(CONFIG_SMP)795#elif !defined(CONFIG_SMP)
796 796
arch/arm/kernel/entry-common.S+11−8
@@ -87,7 +87,7 @@ ENTRY(ret_from_fork) · 86 unmodified lines
87 get_thread_info tsk87 get_thread_info tsk
88 ldr r1, [tsk, #TI_FLAGS] @ check for syscall tracing88 ldr r1, [tsk, #TI_FLAGS] @ check for syscall tracing
89 mov why, #189 mov why, #1
90 tst r1, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?90 tst r1, #_TIF_SYSCALL_WORK @ are we tracing syscalls?
91 beq ret_slow_syscall91 beq ret_slow_syscall
92 mov r1, sp92 mov r1, sp
93 mov r0, #1 @ trace exit [IP = 1]93 mov r0, #1 @ trace exit [IP = 1]
@@ -149,6 +149,11 @@ ENDPROC(ret_from_fork) · 55 unmodified lines
149#endif149#endif
150#endif150#endif
151 151
152.macro mcount_adjust_addr rd, rn
153 bic \rd, \rn, #1 @ clear the Thumb bit if present
154 sub \rd, \rd, #MCOUNT_INSN_SIZE
155.endm
156
152.macro __mcount suffix157.macro __mcount suffix
153 mcount_enter158 mcount_enter
154 ldr r0, =ftrace_trace_function159 ldr r0, =ftrace_trace_function
@@ -173,8 +178,7 @@ ENDPROC(ret_from_fork) · 18 unmodified lines
173 mcount_exit178 mcount_exit
174 179
1751: mcount_get_lr r1 @ lr of instrumented func1801: mcount_get_lr r1 @ lr of instrumented func
176 mov r0, lr @ instrumented function181 mcount_adjust_addr r0, lr @ instrumented function
177 sub r0, r0, #MCOUNT_INSN_SIZE
178 adr lr, BSYM(2f)182 adr lr, BSYM(2f)
179 mov pc, r2183 mov pc, r2
1802: mcount_exit1842: mcount_exit
@@ -184,8 +188,7 @@ ENDPROC(ret_from_fork) · 3 unmodified lines
184 mcount_enter188 mcount_enter
185 189
186 mcount_get_lr r1 @ lr of instrumented func190 mcount_get_lr r1 @ lr of instrumented func
187 mov r0, lr @ instrumented function191 mcount_adjust_addr r0, lr @ instrumented function
188 sub r0, r0, #MCOUNT_INSN_SIZE
189 192
190 .globl ftrace_call\suffix193 .globl ftrace_call\suffix
191ftrace_call\suffix:194ftrace_call\suffix:
@@ -205,11 +208,11 @@ ftrace_graph_call\suffix: · 13 unmodified lines
205#ifdef CONFIG_DYNAMIC_FTRACE208#ifdef CONFIG_DYNAMIC_FTRACE
206 @ called from __ftrace_caller, saved in mcount_enter209 @ called from __ftrace_caller, saved in mcount_enter
207 ldr r1, [sp, #16] @ instrumented routine (func)210 ldr r1, [sp, #16] @ instrumented routine (func)
211 mcount_adjust_addr r1, r1
208#else212#else
209 @ called from __mcount, untouched in lr213 @ called from __mcount, untouched in lr
210 mov r1, lr @ instrumented routine (func)214 mcount_adjust_addr r1, lr @ instrumented routine (func)
211#endif215#endif
212 sub r1, r1, #MCOUNT_INSN_SIZE
213 mov r2, fp @ frame pointer216 mov r2, fp @ frame pointer
214 bl prepare_ftrace_return217 bl prepare_ftrace_return
215 mcount_exit218 mcount_exit
@@ -443,7 +446,7 @@ ENTRY(vector_swi) · 227 unmodified lines
4431:4461:
444#endif447#endif
445 448
446 tst r10, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?449 tst r10, #_TIF_SYSCALL_WORK @ are we tracing syscalls?
447 bne __sys_trace450 bne __sys_trace
448 451
449 cmp scno, #NR_syscalls @ check upper syscall limit452 cmp scno, #NR_syscalls @ check upper syscall limit
arch/arm/kernel/perf_event_v7.c+28−0
@@ -469,6 +469,20 @@ static const unsigned armv7_a5_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] · 468 unmodified lines
469 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,469 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
470 },470 },
471 },471 },
472 [C(NODE)] = {
473 [C(OP_READ)] = {
474 [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
475 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
476 },
477 [C(OP_WRITE)] = {
478 [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
479 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
480 },
481 [C(OP_PREFETCH)] = {
482 [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
483 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
484 },
485 },
472};486};
473 487
474/*488/*
@@ -579,6 +593,20 @@ static const unsigned armv7_a15_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] · 104 unmodified lines
579 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,593 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
580 },594 },
581 },595 },
596 [C(NODE)] = {
597 [C(OP_READ)] = {
598 [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
599 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
600 },
601 [C(OP_WRITE)] = {
602 [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
603 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
604 },
605 [C(OP_PREFETCH)] = {
606 [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
607 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
608 },
609 },
582};610};
583 611
584/*612/*
arch/arm/kernel/ptrace.c+23−8
@@ -23,6 +23,7 @@ · 22 unmodified lines
23#include <linux/perf_event.h>23#include <linux/perf_event.h>
24#include <linux/hw_breakpoint.h>24#include <linux/hw_breakpoint.h>
25#include <linux/regset.h>25#include <linux/regset.h>
26#include <linux/audit.h>
26 27
27#include <asm/pgtable.h>28#include <asm/pgtable.h>
28#include <asm/system.h>29#include <asm/system.h>
@@ -699,10 +700,13 @@ static int vfp_set(struct task_struct *target, · 670 unmodified lines
699{700{
700 int ret;701 int ret;
701 struct thread_info *thread = task_thread_info(target);702 struct thread_info *thread = task_thread_info(target);
702 struct vfp_hard_struct new_vfp = thread->vfpstate.hard;703 struct vfp_hard_struct new_vfp;
703 const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs);704 const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs);
704 const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr);705 const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr);
705 706
707 vfp_sync_hwstate(thread);
708 new_vfp = thread->vfpstate.hard;
709
706 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,710 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
707 &new_vfp.fpregs,711 &new_vfp.fpregs,
708 user_fpregs_offset,712 user_fpregs_offset,
@@ -723,9 +727,8 @@ static int vfp_set(struct task_struct *target, · 14 unmodified lines
723 if (ret)727 if (ret)
724 return ret;728 return ret;
725 729
726 vfp_sync_hwstate(thread);
727 thread->vfpstate.hard = new_vfp;
728 vfp_flush_hwstate(thread);730 vfp_flush_hwstate(thread);
731 thread->vfpstate.hard = new_vfp;
729 732
730 return 0;733 return 0;
731}734}
@@ -902,15 +905,16 @@ long arch_ptrace(struct task_struct *child, long request, · 170 unmodified lines
902 return ret;905 return ret;
903}906}
904 907
908#ifdef __ARMEB__
909#define AUDIT_ARCH_NR AUDIT_ARCH_ARMEB
910#else
911#define AUDIT_ARCH_NR AUDIT_ARCH_ARM
912#endif
913
905asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno)914asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno)
906{915{
907 unsigned long ip;916 unsigned long ip;
908 917
909 if (!test_thread_flag(TIF_SYSCALL_TRACE))
910 return scno;
911 if (!(current->ptrace & PT_PTRACED))
912 return scno;
913
914 /*918 /*
915 * Save IP. IP is used to denote syscall entry/exit:919 * Save IP. IP is used to denote syscall entry/exit:
916 * IP = 0 -> entry, = 1 -> exit920 * IP = 0 -> entry, = 1 -> exit
@@ -918,6 +922,17 @@ asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) · 1 unmodified line
918 ip = regs->ARM_ip;922 ip = regs->ARM_ip;
919 regs->ARM_ip = why;923 regs->ARM_ip = why;
920 924
925 if (!ip)
926 audit_syscall_exit(regs);
927 else
928 audit_syscall_entry(AUDIT_ARCH_NR, scno, regs->ARM_r0,
929 regs->ARM_r1, regs->ARM_r2, regs->ARM_r3);
930
931 if (!test_thread_flag(TIF_SYSCALL_TRACE))
932 return scno;
933 if (!(current->ptrace & PT_PTRACED))
934 return scno;
935
921 current_thread_info()->syscall = scno;936 current_thread_info()->syscall = scno;
922 937
923 /* the 0x80 provides a way for the tracing parent to distinguish938 /* the 0x80 provides a way for the tracing parent to distinguish
arch/arm/kernel/setup.c+15−2
@@ -21,7 +21,6 @@ · 20 unmodified lines
21#include <linux/init.h>21#include <linux/init.h>
22#include <linux/kexec.h>22#include <linux/kexec.h>
23#include <linux/of_fdt.h>23#include <linux/of_fdt.h>
24#include <linux/crash_dump.h>
25#include <linux/root_dev.h>24#include <linux/root_dev.h>
26#include <linux/cpu.h>25#include <linux/cpu.h>
27#include <linux/interrupt.h>26#include <linux/interrupt.h>
@@ -160,7 +159,7 @@ static struct resource mem_res[] = { · 132 unmodified lines
160 .flags = IORESOURCE_MEM159 .flags = IORESOURCE_MEM
161 },160 },
162 {161 {
163 .name = "Kernel text",162 .name = "Kernel code",
164 .start = 0,163 .start = 0,
165 .end = 0,164 .end = 0,
166 .flags = IORESOURCE_MEM165 .flags = IORESOURCE_MEM
@@ -427,6 +426,20 @@ void cpu_init(void) · 260 unmodified lines
427 : "r14");426 : "r14");
428}427}
429 428
429int __cpu_logical_map[NR_CPUS];
430
431void __init smp_setup_processor_id(void)
432{
433 int i;
434 u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0;
435
436 cpu_logical_map(0) = cpu;
437 for (i = 1; i < NR_CPUS; ++i)
438 cpu_logical_map(i) = i == cpu ? 0 : i;
439
440 printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu);
441}
442
430static void __init setup_processor(void)443static void __init setup_processor(void)
431{444{
432 struct proc_info_list *list;445 struct proc_info_list *list;
arch/arm/kernel/signal.c+2−3
@@ -227,6 +227,8 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame) · 226 unmodified lines
227 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)227 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
228 return -EINVAL;228 return -EINVAL;
229 229
230 vfp_flush_hwstate(thread);
231
230 /*232 /*
231 * Copy the floating point registers. There can be unused233 * Copy the floating point registers. There can be unused
232 * registers see asm/hwcap.h for details.234 * registers see asm/hwcap.h for details.
@@ -251,9 +253,6 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame) · 18 unmodified lines
251 __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);253 __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
252 __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);254 __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
253 255
254 if (!err)
255 vfp_flush_hwstate(thread);
256
257 return err ? -EFAULT : 0;256 return err ? -EFAULT : 0;
258}257}
259 258
arch/arm/kernel/smp.c+8−16
@@ -233,20 +233,6 @@ void __ref cpu_die(void) · 232 unmodified lines
233}233}
234#endif /* CONFIG_HOTPLUG_CPU */234#endif /* CONFIG_HOTPLUG_CPU */
235 235
236int __cpu_logical_map[NR_CPUS];
237
238void __init smp_setup_processor_id(void)
239{
240 int i;
241 u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0;
242
243 cpu_logical_map(0) = cpu;
244 for (i = 1; i < NR_CPUS; ++i)
245 cpu_logical_map(i) = i == cpu ? 0 : i;
246
247 printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu);
248}
249
250/*236/*
251 * Called by both boot and secondaries to move global data into237 * Called by both boot and secondaries to move global data into
252 * per-processor storage.238 * per-processor storage.
@@ -443,9 +429,7 @@ static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent); · 190 unmodified lines
443static void ipi_timer(void)429static void ipi_timer(void)
444{430{
445 struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);431 struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
446 irq_enter();
447 evt->event_handler(evt);432 evt->event_handler(evt);
448 irq_exit();
449}433}
450 434
451#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST435#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
@@ -548,7 +532,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs) · 96 unmodified lines
548 532
549 switch (ipinr) {533 switch (ipinr) {
550 case IPI_TIMER:534 case IPI_TIMER:
535 irq_enter();
551 ipi_timer();536 ipi_timer();
537 irq_exit();
552 break;538 break;
553 539
554 case IPI_RESCHEDULE:540 case IPI_RESCHEDULE:
@@ -556,15 +542,21 @@ void handle_IPI(int ipinr, struct pt_regs *regs) · 1 unmodified line
556 break;542 break;
557 543
558 case IPI_CALL_FUNC:544 case IPI_CALL_FUNC:
545 irq_enter();
559 generic_smp_call_function_interrupt();546 generic_smp_call_function_interrupt();
547 irq_exit();
560 break;548 break;
561 549
562 case IPI_CALL_FUNC_SINGLE:550 case IPI_CALL_FUNC_SINGLE:
551 irq_enter();
563 generic_smp_call_function_single_interrupt();552 generic_smp_call_function_single_interrupt();
553 irq_exit();
564 break;554 break;
565 555
566 case IPI_CPU_STOP:556 case IPI_CPU_STOP:
557 irq_enter();
567 ipi_cpu_stop(cpu);558 ipi_cpu_stop(cpu);
559 irq_exit();
568 break;560 break;
569 561
570 default:562 default:
arch/arm/kernel/smp_twd.c+3−1
@@ -129,7 +129,7 @@ static struct notifier_block twd_cpufreq_nb = { · 128 unmodified lines
129 129
130static int twd_cpufreq_init(void)130static int twd_cpufreq_init(void)
131{131{
132 if (!IS_ERR(twd_clk))132 if (twd_evt && *__this_cpu_ptr(twd_evt) && !IS_ERR(twd_clk))
133 return cpufreq_register_notifier(&twd_cpufreq_nb,133 return cpufreq_register_notifier(&twd_cpufreq_nb,
134 CPUFREQ_TRANSITION_NOTIFIER);134 CPUFREQ_TRANSITION_NOTIFIER);
135 135
@@ -252,6 +252,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) · 116 unmodified lines
252 else252 else
253 twd_calibrate_rate();253 twd_calibrate_rate();
254 254
255 __raw_writel(0, twd_base + TWD_TIMER_CONTROL);
256
255 clk->name = "local_timer";257 clk->name = "local_timer";
256 clk->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |258 clk->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
257 CLOCK_EVT_FEAT_C3STOP;259 CLOCK_EVT_FEAT_C3STOP;
arch/arm/kernel/traps.c+4−1
@@ -266,6 +266,7 @@ void die(const char *str, struct pt_regs *regs, int err) · 265 unmodified lines
266{266{
267 struct thread_info *thread = current_thread_info();267 struct thread_info *thread = current_thread_info();
268 int ret;268 int ret;
269 enum bug_trap_type bug_type = BUG_TRAP_TYPE_NONE;
269 270
270 oops_enter();271 oops_enter();
271 272
@@ -273,7 +274,9 @@ void die(const char *str, struct pt_regs *regs, int err) · 1 unmodified line
273 console_verbose();274 console_verbose();
274 bust_spinlocks(1);275 bust_spinlocks(1);
275 if (!user_mode(regs))276 if (!user_mode(regs))
276 report_bug(regs->ARM_pc, regs);277 bug_type = report_bug(regs->ARM_pc, regs);
278 if (bug_type != BUG_TRAP_TYPE_NONE)
279 str = "Oops - BUG";
277 ret = __die(str, err, thread, regs);280 ret = __die(str, err, thread, regs);
278 281
279 if (regs && kexec_should_crash(thread->task))282 if (regs && kexec_should_crash(thread->task))
arch/arm/kernel/vmlinux.lds.S+6−4
@@ -4,11 +4,13 @@ · 3 unmodified lines
4 */4 */
5 5
6#include <asm-generic/vmlinux.lds.h>6#include <asm-generic/vmlinux.lds.h>
7#include <asm/cache.h>
7#include <asm/thread_info.h>8#include <asm/thread_info.h>
8#include <asm/memory.h>9#include <asm/memory.h>
9#include <asm/page.h>10#include <asm/page.h>
10 11
11#define PROC_INFO \12#define PROC_INFO \
13 . = ALIGN(4); \
12 VMLINUX_SYMBOL(__proc_info_begin) = .; \14 VMLINUX_SYMBOL(__proc_info_begin) = .; \
13 *(.proc.info.init) \15 *(.proc.info.init) \
14 VMLINUX_SYMBOL(__proc_info_end) = .;16 VMLINUX_SYMBOL(__proc_info_end) = .;
@@ -181,7 +183,7 @@ SECTIONS · 166 unmodified lines
181 }183 }
182#endif184#endif
183 185
184 PERCPU_SECTION(32)186 PERCPU_SECTION(L1_CACHE_BYTES)
185 187
186#ifdef CONFIG_XIP_KERNEL188#ifdef CONFIG_XIP_KERNEL
187 __data_loc = ALIGN(4); /* location in binary */189 __data_loc = ALIGN(4); /* location in binary */
@@ -212,13 +214,13 @@ SECTIONS · 24 unmodified lines
212#endif214#endif
213 215
214 NOSAVE_DATA216 NOSAVE_DATA
215 CACHELINE_ALIGNED_DATA(32)217 CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
216 READ_MOSTLY_DATA(32)218 READ_MOSTLY_DATA(L1_CACHE_BYTES)
217 219
218 /*220 /*
219 * The exception fixup table (might need resorting at runtime)221 * The exception fixup table (might need resorting at runtime)
220 */222 */
221 . = ALIGN(32);223 . = ALIGN(4);
222 __start___ex_table = .;224 __start___ex_table = .;
223#ifdef CONFIG_MMU225#ifdef CONFIG_MMU
224 *(__ex_table)226 *(__ex_table)
arch/arm/lib/getuser.S+6−6
@@ -31,18 +31,18 @@ · 30 unmodified lines
31#include <asm/domain.h>31#include <asm/domain.h>
32 32
33ENTRY(__get_user_1)33ENTRY(__get_user_1)
341: T(ldrb) r2, [r0]341: TUSER(ldrb) r2, [r0]
35 mov r0, #035 mov r0, #0
36 mov pc, lr36 mov pc, lr
37ENDPROC(__get_user_1)37ENDPROC(__get_user_1)
38 38
39ENTRY(__get_user_2)39ENTRY(__get_user_2)
40#ifdef CONFIG_THUMB2_KERNEL40#ifdef CONFIG_THUMB2_KERNEL
412: T(ldrb) r2, [r0]412: TUSER(ldrb) r2, [r0]
423: T(ldrb) r3, [r0, #1]423: TUSER(ldrb) r3, [r0, #1]
43#else43#else
442: T(ldrb) r2, [r0], #1442: TUSER(ldrb) r2, [r0], #1
453: T(ldrb) r3, [r0]453: TUSER(ldrb) r3, [r0]
46#endif46#endif
47#ifndef __ARMEB__47#ifndef __ARMEB__
48 orr r2, r2, r3, lsl #848 orr r2, r2, r3, lsl #8
@@ -54,7 +54,7 @@ ENTRY(__get_user_2) · 5 unmodified lines
54ENDPROC(__get_user_2)54ENDPROC(__get_user_2)
55 55
56ENTRY(__get_user_4)56ENTRY(__get_user_4)
574: T(ldr) r2, [r0]574: TUSER(ldr) r2, [r0]
58 mov r0, #058 mov r0, #0
59 mov pc, lr59 mov pc, lr
60ENDPROC(__get_user_4)60ENDPROC(__get_user_4)
arch/arm/lib/putuser.S+14−14
@@ -31,7 +31,7 @@ · 30 unmodified lines
31#include <asm/domain.h>31#include <asm/domain.h>
32 32
33ENTRY(__put_user_1)33ENTRY(__put_user_1)
341: T(strb) r2, [r0]341: TUSER(strb) r2, [r0]
35 mov r0, #035 mov r0, #0
36 mov pc, lr36 mov pc, lr
37ENDPROC(__put_user_1)37ENDPROC(__put_user_1)
@@ -40,19 +40,19 @@ ENTRY(__put_user_2) · 2 unmodified lines
40 mov ip, r2, lsr #840 mov ip, r2, lsr #8
41#ifdef CONFIG_THUMB2_KERNEL41#ifdef CONFIG_THUMB2_KERNEL
42#ifndef __ARMEB__42#ifndef __ARMEB__
432: T(strb) r2, [r0]432: TUSER(strb) r2, [r0]
443: T(strb) ip, [r0, #1]443: TUSER(strb) ip, [r0, #1]
45#else45#else
462: T(strb) ip, [r0]462: TUSER(strb) ip, [r0]
473: T(strb) r2, [r0, #1]473: TUSER(strb) r2, [r0, #1]
48#endif48#endif
49#else /* !CONFIG_THUMB2_KERNEL */49#else /* !CONFIG_THUMB2_KERNEL */
50#ifndef __ARMEB__50#ifndef __ARMEB__
512: T(strb) r2, [r0], #1512: TUSER(strb) r2, [r0], #1
523: T(strb) ip, [r0]523: TUSER(strb) ip, [r0]
53#else53#else
542: T(strb) ip, [r0], #1542: TUSER(strb) ip, [r0], #1
553: T(strb) r2, [r0]553: TUSER(strb) r2, [r0]
56#endif56#endif
57#endif /* CONFIG_THUMB2_KERNEL */57#endif /* CONFIG_THUMB2_KERNEL */
58 mov r0, #058 mov r0, #0
@@ -60,18 +60,18 @@ ENTRY(__put_user_2) · 1 unmodified line
60ENDPROC(__put_user_2)60ENDPROC(__put_user_2)
61 61
62ENTRY(__put_user_4)62ENTRY(__put_user_4)
634: T(str) r2, [r0]634: TUSER(str) r2, [r0]
64 mov r0, #064 mov r0, #0
65 mov pc, lr65 mov pc, lr
66ENDPROC(__put_user_4)66ENDPROC(__put_user_4)
67 67
68ENTRY(__put_user_8)68ENTRY(__put_user_8)
69#ifdef CONFIG_THUMB2_KERNEL69#ifdef CONFIG_THUMB2_KERNEL
705: T(str) r2, [r0]705: TUSER(str) r2, [r0]
716: T(str) r3, [r0, #4]716: TUSER(str) r3, [r0, #4]
72#else72#else
735: T(str) r2, [r0], #4735: TUSER(str) r2, [r0], #4
746: T(str) r3, [r0]746: TUSER(str) r3, [r0]
75#endif75#endif
76 mov r0, #076 mov r0, #0
77 mov pc, lr77 mov pc, lr
arch/arm/lib/uaccess.S+41−41
@@ -32,11 +32,11 @@ · 31 unmodified lines
32 rsb ip, ip, #432 rsb ip, ip, #4
33 cmp ip, #233 cmp ip, #2
34 ldrb r3, [r1], #134 ldrb r3, [r1], #1
35USER( T(strb) r3, [r0], #1) @ May fault35USER( TUSER( strb) r3, [r0], #1) @ May fault
36 ldrgeb r3, [r1], #136 ldrgeb r3, [r1], #1
37USER( T(strgeb) r3, [r0], #1) @ May fault37USER( TUSER( strgeb) r3, [r0], #1) @ May fault
38 ldrgtb r3, [r1], #138 ldrgtb r3, [r1], #1
39USER( T(strgtb) r3, [r0], #1) @ May fault39USER( TUSER( strgtb) r3, [r0], #1) @ May fault
40 sub r2, r2, ip40 sub r2, r2, ip
41 b .Lc2u_dest_aligned41 b .Lc2u_dest_aligned
42 42
@@ -59,7 +59,7 @@ ENTRY(__copy_to_user) · 16 unmodified lines
59 addmi ip, r2, #459 addmi ip, r2, #4
60 bmi .Lc2u_0nowords60 bmi .Lc2u_0nowords
61 ldr r3, [r1], #461 ldr r3, [r1], #4
62USER( T(str) r3, [r0], #4) @ May fault62USER( TUSER( str) r3, [r0], #4) @ May fault
63 mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction63 mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
64 rsb ip, ip, #064 rsb ip, ip, #0
65 movs ip, ip, lsr #32 - PAGE_SHIFT65 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -88,18 +88,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 22 unmodified lines
88 stmneia r0!, {r3 - r4} @ Shouldnt fault88 stmneia r0!, {r3 - r4} @ Shouldnt fault
89 tst ip, #489 tst ip, #4
90 ldrne r3, [r1], #490 ldrne r3, [r1], #4
91 T(strne) r3, [r0], #4 @ Shouldnt fault91 TUSER( strne) r3, [r0], #4 @ Shouldnt fault
92 ands ip, ip, #392 ands ip, ip, #3
93 beq .Lc2u_0fupi93 beq .Lc2u_0fupi
94.Lc2u_0nowords: teq ip, #094.Lc2u_0nowords: teq ip, #0
95 beq .Lc2u_finished95 beq .Lc2u_finished
96.Lc2u_nowords: cmp ip, #296.Lc2u_nowords: cmp ip, #2
97 ldrb r3, [r1], #197 ldrb r3, [r1], #1
98USER( T(strb) r3, [r0], #1) @ May fault98USER( TUSER( strb) r3, [r0], #1) @ May fault
99 ldrgeb r3, [r1], #199 ldrgeb r3, [r1], #1
100USER( T(strgeb) r3, [r0], #1) @ May fault100USER( TUSER( strgeb) r3, [r0], #1) @ May fault
101 ldrgtb r3, [r1], #1101 ldrgtb r3, [r1], #1
102USER( T(strgtb) r3, [r0], #1) @ May fault102USER( TUSER( strgtb) r3, [r0], #1) @ May fault
103 b .Lc2u_finished103 b .Lc2u_finished
104 104
105.Lc2u_not_enough:105.Lc2u_not_enough:
@@ -120,7 +120,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault · 14 unmodified lines
120 mov r3, r7, pull #8120 mov r3, r7, pull #8
121 ldr r7, [r1], #4121 ldr r7, [r1], #4
122 orr r3, r3, r7, push #24122 orr r3, r3, r7, push #24
123USER( T(str) r3, [r0], #4) @ May fault123USER( TUSER( str) r3, [r0], #4) @ May fault
124 mov ip, r0, lsl #32 - PAGE_SHIFT124 mov ip, r0, lsl #32 - PAGE_SHIFT
125 rsb ip, ip, #0125 rsb ip, ip, #0
126 movs ip, ip, lsr #32 - PAGE_SHIFT126 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -155,18 +155,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 28 unmodified lines
155 movne r3, r7, pull #8155 movne r3, r7, pull #8
156 ldrne r7, [r1], #4156 ldrne r7, [r1], #4
157 orrne r3, r3, r7, push #24157 orrne r3, r3, r7, push #24
158 T(strne) r3, [r0], #4 @ Shouldnt fault158 TUSER( strne) r3, [r0], #4 @ Shouldnt fault
159 ands ip, ip, #3159 ands ip, ip, #3
160 beq .Lc2u_1fupi160 beq .Lc2u_1fupi
161.Lc2u_1nowords: mov r3, r7, get_byte_1161.Lc2u_1nowords: mov r3, r7, get_byte_1
162 teq ip, #0162 teq ip, #0
163 beq .Lc2u_finished163 beq .Lc2u_finished
164 cmp ip, #2164 cmp ip, #2
165USER( T(strb) r3, [r0], #1) @ May fault165USER( TUSER( strb) r3, [r0], #1) @ May fault
166 movge r3, r7, get_byte_2166 movge r3, r7, get_byte_2
167USER( T(strgeb) r3, [r0], #1) @ May fault167USER( TUSER( strgeb) r3, [r0], #1) @ May fault
168 movgt r3, r7, get_byte_3168 movgt r3, r7, get_byte_3
169USER( T(strgtb) r3, [r0], #1) @ May fault169USER( TUSER( strgtb) r3, [r0], #1) @ May fault
170 b .Lc2u_finished170 b .Lc2u_finished
171 171
172.Lc2u_2fupi: subs r2, r2, #4172.Lc2u_2fupi: subs r2, r2, #4
@@ -175,7 +175,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault · 2 unmodified lines
175 mov r3, r7, pull #16175 mov r3, r7, pull #16
176 ldr r7, [r1], #4176 ldr r7, [r1], #4
177 orr r3, r3, r7, push #16177 orr r3, r3, r7, push #16
178USER( T(str) r3, [r0], #4) @ May fault178USER( TUSER( str) r3, [r0], #4) @ May fault
179 mov ip, r0, lsl #32 - PAGE_SHIFT179 mov ip, r0, lsl #32 - PAGE_SHIFT
180 rsb ip, ip, #0180 rsb ip, ip, #0
181 movs ip, ip, lsr #32 - PAGE_SHIFT181 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -210,18 +210,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 28 unmodified lines
210 movne r3, r7, pull #16210 movne r3, r7, pull #16
211 ldrne r7, [r1], #4211 ldrne r7, [r1], #4
212 orrne r3, r3, r7, push #16212 orrne r3, r3, r7, push #16
213 T(strne) r3, [r0], #4 @ Shouldnt fault213 TUSER( strne) r3, [r0], #4 @ Shouldnt fault
214 ands ip, ip, #3214 ands ip, ip, #3
215 beq .Lc2u_2fupi215 beq .Lc2u_2fupi
216.Lc2u_2nowords: mov r3, r7, get_byte_2216.Lc2u_2nowords: mov r3, r7, get_byte_2
217 teq ip, #0217 teq ip, #0
218 beq .Lc2u_finished218 beq .Lc2u_finished
219 cmp ip, #2219 cmp ip, #2
220USER( T(strb) r3, [r0], #1) @ May fault220USER( TUSER( strb) r3, [r0], #1) @ May fault
221 movge r3, r7, get_byte_3221 movge r3, r7, get_byte_3
222USER( T(strgeb) r3, [r0], #1) @ May fault222USER( TUSER( strgeb) r3, [r0], #1) @ May fault
223 ldrgtb r3, [r1], #0223 ldrgtb r3, [r1], #0
224USER( T(strgtb) r3, [r0], #1) @ May fault224USER( TUSER( strgtb) r3, [r0], #1) @ May fault
225 b .Lc2u_finished225 b .Lc2u_finished
226 226
227.Lc2u_3fupi: subs r2, r2, #4227.Lc2u_3fupi: subs r2, r2, #4
@@ -230,7 +230,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault · 2 unmodified lines
230 mov r3, r7, pull #24230 mov r3, r7, pull #24
231 ldr r7, [r1], #4231 ldr r7, [r1], #4
232 orr r3, r3, r7, push #8232 orr r3, r3, r7, push #8
233USER( T(str) r3, [r0], #4) @ May fault233USER( TUSER( str) r3, [r0], #4) @ May fault
234 mov ip, r0, lsl #32 - PAGE_SHIFT234 mov ip, r0, lsl #32 - PAGE_SHIFT
235 rsb ip, ip, #0235 rsb ip, ip, #0
236 movs ip, ip, lsr #32 - PAGE_SHIFT236 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -265,18 +265,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 28 unmodified lines
265 movne r3, r7, pull #24265 movne r3, r7, pull #24
266 ldrne r7, [r1], #4266 ldrne r7, [r1], #4
267 orrne r3, r3, r7, push #8267 orrne r3, r3, r7, push #8
268 T(strne) r3, [r0], #4 @ Shouldnt fault268 TUSER( strne) r3, [r0], #4 @ Shouldnt fault
269 ands ip, ip, #3269 ands ip, ip, #3
270 beq .Lc2u_3fupi270 beq .Lc2u_3fupi
271.Lc2u_3nowords: mov r3, r7, get_byte_3271.Lc2u_3nowords: mov r3, r7, get_byte_3
272 teq ip, #0272 teq ip, #0
273 beq .Lc2u_finished273 beq .Lc2u_finished
274 cmp ip, #2274 cmp ip, #2
275USER( T(strb) r3, [r0], #1) @ May fault275USER( TUSER( strb) r3, [r0], #1) @ May fault
276 ldrgeb r3, [r1], #1276 ldrgeb r3, [r1], #1
277USER( T(strgeb) r3, [r0], #1) @ May fault277USER( TUSER( strgeb) r3, [r0], #1) @ May fault
278 ldrgtb r3, [r1], #0278 ldrgtb r3, [r1], #0
279USER( T(strgtb) r3, [r0], #1) @ May fault279USER( TUSER( strgtb) r3, [r0], #1) @ May fault
280 b .Lc2u_finished280 b .Lc2u_finished
281ENDPROC(__copy_to_user)281ENDPROC(__copy_to_user)
282 282
@@ -295,11 +295,11 @@ ENDPROC(__copy_to_user) · 12 unmodified lines
295.Lcfu_dest_not_aligned:295.Lcfu_dest_not_aligned:
296 rsb ip, ip, #4296 rsb ip, ip, #4
297 cmp ip, #2297 cmp ip, #2
298USER( T(ldrb) r3, [r1], #1) @ May fault298USER( TUSER( ldrb) r3, [r1], #1) @ May fault
299 strb r3, [r0], #1299 strb r3, [r0], #1
300USER( T(ldrgeb) r3, [r1], #1) @ May fault300USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
301 strgeb r3, [r0], #1301 strgeb r3, [r0], #1
302USER( T(ldrgtb) r3, [r1], #1) @ May fault302USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
303 strgtb r3, [r0], #1303 strgtb r3, [r0], #1
304 sub r2, r2, ip304 sub r2, r2, ip
305 b .Lcfu_dest_aligned305 b .Lcfu_dest_aligned
@@ -322,7 +322,7 @@ ENTRY(__copy_from_user) · 16 unmodified lines
322.Lcfu_0fupi: subs r2, r2, #4322.Lcfu_0fupi: subs r2, r2, #4
323 addmi ip, r2, #4323 addmi ip, r2, #4
324 bmi .Lcfu_0nowords324 bmi .Lcfu_0nowords
325USER( T(ldr) r3, [r1], #4)325USER( TUSER( ldr) r3, [r1], #4)
326 str r3, [r0], #4326 str r3, [r0], #4
327 mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction327 mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
328 rsb ip, ip, #0328 rsb ip, ip, #0
@@ -351,18 +351,18 @@ USER( T(ldr) r3, [r1], #4) · 22 unmodified lines
351 ldmneia r1!, {r3 - r4} @ Shouldnt fault351 ldmneia r1!, {r3 - r4} @ Shouldnt fault
352 stmneia r0!, {r3 - r4}352 stmneia r0!, {r3 - r4}
353 tst ip, #4353 tst ip, #4
354 T(ldrne) r3, [r1], #4 @ Shouldnt fault354 TUSER( ldrne) r3, [r1], #4 @ Shouldnt fault
355 strne r3, [r0], #4355 strne r3, [r0], #4
356 ands ip, ip, #3356 ands ip, ip, #3
357 beq .Lcfu_0fupi357 beq .Lcfu_0fupi
358.Lcfu_0nowords: teq ip, #0358.Lcfu_0nowords: teq ip, #0
359 beq .Lcfu_finished359 beq .Lcfu_finished
360.Lcfu_nowords: cmp ip, #2360.Lcfu_nowords: cmp ip, #2
361USER( T(ldrb) r3, [r1], #1) @ May fault361USER( TUSER( ldrb) r3, [r1], #1) @ May fault
362 strb r3, [r0], #1362 strb r3, [r0], #1
363USER( T(ldrgeb) r3, [r1], #1) @ May fault363USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
364 strgeb r3, [r0], #1364 strgeb r3, [r0], #1
365USER( T(ldrgtb) r3, [r1], #1) @ May fault365USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
366 strgtb r3, [r0], #1366 strgtb r3, [r0], #1
367 b .Lcfu_finished367 b .Lcfu_finished
368 368
@@ -375,7 +375,7 @@ USER( T(ldrgtb) r3, [r1], #1) @ May fault · 6 unmodified lines
375 375
376.Lcfu_src_not_aligned:376.Lcfu_src_not_aligned:
377 bic r1, r1, #3377 bic r1, r1, #3
378USER( T(ldr) r7, [r1], #4) @ May fault378USER( TUSER( ldr) r7, [r1], #4) @ May fault
379 cmp ip, #2379 cmp ip, #2
380 bgt .Lcfu_3fupi380 bgt .Lcfu_3fupi
381 beq .Lcfu_2fupi381 beq .Lcfu_2fupi
@@ -383,7 +383,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 1 unmodified line
383 addmi ip, r2, #4383 addmi ip, r2, #4
384 bmi .Lcfu_1nowords384 bmi .Lcfu_1nowords
385 mov r3, r7, pull #8385 mov r3, r7, pull #8
386USER( T(ldr) r7, [r1], #4) @ May fault386USER( TUSER( ldr) r7, [r1], #4) @ May fault
387 orr r3, r3, r7, push #24387 orr r3, r3, r7, push #24
388 str r3, [r0], #4388 str r3, [r0], #4
389 mov ip, r1, lsl #32 - PAGE_SHIFT389 mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -418,7 +418,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 28 unmodified lines
418 stmneia r0!, {r3 - r4}418 stmneia r0!, {r3 - r4}
419 tst ip, #4419 tst ip, #4
420 movne r3, r7, pull #8420 movne r3, r7, pull #8
421USER( T(ldrne) r7, [r1], #4) @ May fault421USER( TUSER( ldrne) r7, [r1], #4) @ May fault
422 orrne r3, r3, r7, push #24422 orrne r3, r3, r7, push #24
423 strne r3, [r0], #4423 strne r3, [r0], #4
424 ands ip, ip, #3424 ands ip, ip, #3
@@ -438,7 +438,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault · 13 unmodified lines
438 addmi ip, r2, #4438 addmi ip, r2, #4
439 bmi .Lcfu_2nowords439 bmi .Lcfu_2nowords
440 mov r3, r7, pull #16440 mov r3, r7, pull #16
441USER( T(ldr) r7, [r1], #4) @ May fault441USER( TUSER( ldr) r7, [r1], #4) @ May fault
442 orr r3, r3, r7, push #16442 orr r3, r3, r7, push #16
443 str r3, [r0], #4443 str r3, [r0], #4
444 mov ip, r1, lsl #32 - PAGE_SHIFT444 mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -474,7 +474,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 29 unmodified lines
474 stmneia r0!, {r3 - r4}474 stmneia r0!, {r3 - r4}
475 tst ip, #4475 tst ip, #4
476 movne r3, r7, pull #16476 movne r3, r7, pull #16
477USER( T(ldrne) r7, [r1], #4) @ May fault477USER( TUSER( ldrne) r7, [r1], #4) @ May fault
478 orrne r3, r3, r7, push #16478 orrne r3, r3, r7, push #16
479 strne r3, [r0], #4479 strne r3, [r0], #4
480 ands ip, ip, #3480 ands ip, ip, #3
@@ -486,7 +486,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault · 5 unmodified lines
486 strb r3, [r0], #1486 strb r3, [r0], #1
487 movge r3, r7, get_byte_3487 movge r3, r7, get_byte_3
488 strgeb r3, [r0], #1488 strgeb r3, [r0], #1
489USER( T(ldrgtb) r3, [r1], #0) @ May fault489USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault
490 strgtb r3, [r0], #1490 strgtb r3, [r0], #1
491 b .Lcfu_finished491 b .Lcfu_finished
492 492
@@ -494,7 +494,7 @@ USER( T(ldrgtb) r3, [r1], #0) @ May fault · 1 unmodified line
494 addmi ip, r2, #4494 addmi ip, r2, #4
495 bmi .Lcfu_3nowords495 bmi .Lcfu_3nowords
496 mov r3, r7, pull #24496 mov r3, r7, pull #24
497USER( T(ldr) r7, [r1], #4) @ May fault497USER( TUSER( ldr) r7, [r1], #4) @ May fault
498 orr r3, r3, r7, push #8498 orr r3, r3, r7, push #8
499 str r3, [r0], #4499 str r3, [r0], #4
500 mov ip, r1, lsl #32 - PAGE_SHIFT500 mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -529,7 +529,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 28 unmodified lines
529 stmneia r0!, {r3 - r4}529 stmneia r0!, {r3 - r4}
530 tst ip, #4530 tst ip, #4
531 movne r3, r7, pull #24531 movne r3, r7, pull #24
532USER( T(ldrne) r7, [r1], #4) @ May fault532USER( TUSER( ldrne) r7, [r1], #4) @ May fault
533 orrne r3, r3, r7, push #8533 orrne r3, r3, r7, push #8
534 strne r3, [r0], #4534 strne r3, [r0], #4
535 ands ip, ip, #3535 ands ip, ip, #3
@@ -539,9 +539,9 @@ USER( T(ldrne) r7, [r1], #4) @ May fault · 3 unmodified lines
539 beq .Lcfu_finished539 beq .Lcfu_finished
540 cmp ip, #2540 cmp ip, #2
541 strb r3, [r0], #1541 strb r3, [r0], #1
542USER( T(ldrgeb) r3, [r1], #1) @ May fault542USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
543 strgeb r3, [r0], #1543 strgeb r3, [r0], #1
544USER( T(ldrgtb) r3, [r1], #1) @ May fault544USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
545 strgtb r3, [r0], #1545 strgtb r3, [r0], #1
546 b .Lcfu_finished546 b .Lcfu_finished
547ENDPROC(__copy_from_user)547ENDPROC(__copy_from_user)
arch/arm/mach-at91/Kconfig+14−0
@@ -18,6 +18,12 @@ config HAVE_AT91_USART4 · 17 unmodified lines
18config HAVE_AT91_USART518config HAVE_AT91_USART5
19 bool19 bool
20 20
21config AT91_SAM9_ALT_RESET
22 bool
23
24config AT91_SAM9G45_RESET
25 bool
26
21menu "Atmel AT91 System-on-Chip"27menu "Atmel AT91 System-on-Chip"
22 28
23choice29choice
@@ -39,6 +45,7 @@ config ARCH_AT91SAM9260 · 15 unmodified lines
39 select HAVE_AT91_USART445 select HAVE_AT91_USART4
40 select HAVE_AT91_USART546 select HAVE_AT91_USART5
41 select HAVE_NET_MACB47 select HAVE_NET_MACB
48 select AT91_SAM9_ALT_RESET
42 49
43config ARCH_AT91SAM926150config ARCH_AT91SAM9261
44 bool "AT91SAM9261"51 bool "AT91SAM9261"
@@ -46,6 +53,7 @@ config ARCH_AT91SAM9261 · 1 unmodified line
46 select GENERIC_CLOCKEVENTS53 select GENERIC_CLOCKEVENTS
47 select HAVE_FB_ATMEL54 select HAVE_FB_ATMEL
48 select HAVE_AT91_DBGU055 select HAVE_AT91_DBGU0
56 select AT91_SAM9_ALT_RESET
49 57
50config ARCH_AT91SAM9G1058config ARCH_AT91SAM9G10
51 bool "AT91SAM9G10"59 bool "AT91SAM9G10"
@@ -53,6 +61,7 @@ config ARCH_AT91SAM9G10 · 1 unmodified line
53 select GENERIC_CLOCKEVENTS61 select GENERIC_CLOCKEVENTS
54 select HAVE_AT91_DBGU062 select HAVE_AT91_DBGU0
55 select HAVE_FB_ATMEL63 select HAVE_FB_ATMEL
64 select AT91_SAM9_ALT_RESET
56 65
57config ARCH_AT91SAM926366config ARCH_AT91SAM9263
58 bool "AT91SAM9263"67 bool "AT91SAM9263"
@@ -61,6 +70,7 @@ config ARCH_AT91SAM9263 · 2 unmodified lines
61 select HAVE_FB_ATMEL70 select HAVE_FB_ATMEL
62 select HAVE_NET_MACB71 select HAVE_NET_MACB
63 select HAVE_AT91_DBGU172 select HAVE_AT91_DBGU1
73 select AT91_SAM9_ALT_RESET
64 74
65config ARCH_AT91SAM9RL75config ARCH_AT91SAM9RL
66 bool "AT91SAM9RL"76 bool "AT91SAM9RL"
@@ -69,6 +79,7 @@ config ARCH_AT91SAM9RL · 2 unmodified lines
69 select HAVE_AT91_USART379 select HAVE_AT91_USART3
70 select HAVE_FB_ATMEL80 select HAVE_FB_ATMEL
71 select HAVE_AT91_DBGU081 select HAVE_AT91_DBGU0
82 select AT91_SAM9_ALT_RESET
72 83
73config ARCH_AT91SAM9G2084config ARCH_AT91SAM9G20
74 bool "AT91SAM9G20"85 bool "AT91SAM9G20"
@@ -79,6 +90,7 @@ config ARCH_AT91SAM9G20 · 4 unmodified lines
79 select HAVE_AT91_USART490 select HAVE_AT91_USART4
80 select HAVE_AT91_USART591 select HAVE_AT91_USART5
81 select HAVE_NET_MACB92 select HAVE_NET_MACB
93 select AT91_SAM9_ALT_RESET
82 94
83config ARCH_AT91SAM9G4595config ARCH_AT91SAM9G45
84 bool "AT91SAM9G45"96 bool "AT91SAM9G45"
@@ -88,6 +100,7 @@ config ARCH_AT91SAM9G45 · 3 unmodified lines
88 select HAVE_FB_ATMEL100 select HAVE_FB_ATMEL
89 select HAVE_NET_MACB101 select HAVE_NET_MACB
90 select HAVE_AT91_DBGU1102 select HAVE_AT91_DBGU1
103 select AT91_SAM9G45_RESET
91 104
92config ARCH_AT91CAP9105config ARCH_AT91CAP9
93 bool "AT91CAP9"106 bool "AT91CAP9"
@@ -96,6 +109,7 @@ config ARCH_AT91CAP9 · 2 unmodified lines
96 select HAVE_FB_ATMEL109 select HAVE_FB_ATMEL
97 select HAVE_NET_MACB110 select HAVE_NET_MACB
98 select HAVE_AT91_DBGU1111 select HAVE_AT91_DBGU1
112 select AT91_SAM9G45_RESET
99 113
100config ARCH_AT91X40114config ARCH_AT91X40
101 bool "AT91x40"115 bool "AT91x40"
arch/arm/mach-at91/Makefile+8−6
@@ -8,15 +8,17 @@ obj-n := · 7 unmodified lines
8obj- :=8obj- :=
9 9
10obj-$(CONFIG_AT91_PMC_UNIT) += clock.o10obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
11obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
12obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
11 13
12# CPU-specific support14# CPU-specific support
13obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o15obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
14obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o16obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
15obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o at91sam9_alt_reset.o17obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
16obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o at91sam9_alt_reset.o18obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
17obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o at91sam9_alt_reset.o19obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
18obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o at91sam9_alt_reset.o20obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
19obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o21obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
20obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o22obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
21obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o23obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
22obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o24obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
arch/arm/mach-at91/at91cap9.c+2−7
@@ -21,7 +21,6 @@ · 20 unmodified lines
21#include <mach/cpu.h>21#include <mach/cpu.h>
22#include <mach/at91cap9.h>22#include <mach/at91cap9.h>
23#include <mach/at91_pmc.h>23#include <mach/at91_pmc.h>
24#include <mach/at91_rstc.h>
25 24
26#include "soc.h"25#include "soc.h"
27#include "generic.h"26#include "generic.h"
@@ -314,11 +313,6 @@ static struct at91_gpio_bank at91cap9_gpio[] __initdata = { · 286 unmodified lines
314 }313 }
315};314};
316 315
317static void at91cap9_restart(char mode, const char *cmd)
318{
319 at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
320}
321
322/* --------------------------------------------------------------------316/* --------------------------------------------------------------------
323 * AT91CAP9 processor initialization317 * AT91CAP9 processor initialization
324 * -------------------------------------------------------------------- */318 * -------------------------------------------------------------------- */
@@ -331,13 +325,14 @@ static void __init at91cap9_map_io(void) · 6 unmodified lines
331static void __init at91cap9_ioremap_registers(void)325static void __init at91cap9_ioremap_registers(void)
332{326{
333 at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC);327 at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC);
328 at91_ioremap_rstc(AT91CAP9_BASE_RSTC);
334 at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT);329 at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT);
335 at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC);330 at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC);
336}331}
337 332
338static void __init at91cap9_initialize(void)333static void __init at91cap9_initialize(void)
339{334{
340 arm_pm_restart = at91cap9_restart;335 arm_pm_restart = at91sam9g45_restart;
341 at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1);336 at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1);
342 337
343 /* Register GPIO subsystem */338 /* Register GPIO subsystem */
arch/arm/mach-at91/at91rm9200_devices.c+1−1
@@ -83,7 +83,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 82 unmodified lines
83 * USB Device (Gadget)83 * USB Device (Gadget)
84 * -------------------------------------------------------------------- */84 * -------------------------------------------------------------------- */
85 85
86#ifdef CONFIG_USB_AT9186#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
87static struct at91_udc_data udc_data;87static struct at91_udc_data udc_data;
88 88
89static struct resource udc_resources[] = {89static struct resource udc_resources[] = {
arch/arm/mach-at91/at91sam9260.c+1−0
@@ -323,6 +323,7 @@ static void __init at91sam9260_map_io(void) · 322 unmodified lines
323static void __init at91sam9260_ioremap_registers(void)323static void __init at91sam9260_ioremap_registers(void)
324{324{
325 at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC);325 at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC);
326 at91_ioremap_rstc(AT91SAM9260_BASE_RSTC);
326 at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT);327 at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT);
327 at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC);328 at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC);
328}329}
arch/arm/mach-at91/at91sam9260_devices.c+3−6
@@ -84,7 +84,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 83 unmodified lines
84 * USB Device (Gadget)84 * USB Device (Gadget)
85 * -------------------------------------------------------------------- */85 * -------------------------------------------------------------------- */
86 86
87#ifdef CONFIG_USB_AT9187#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
88static struct at91_udc_data udc_data;88static struct at91_udc_data udc_data;
89 89
90static struct resource udc_resources[] = {90static struct resource udc_resources[] = {
@@ -1215,8 +1215,7 @@ void __init at91_add_device_serial(void) {} · 1124 unmodified lines
1215 * CF/IDE1215 * CF/IDE
1216 * -------------------------------------------------------------------- */1216 * -------------------------------------------------------------------- */
1217 1217
1218#if defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE) || \1218#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE) || \
1219 defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE) || \
1220 defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE)1219 defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE)
1221 1220
1222static struct at91_cf_data cf0_data;1221static struct at91_cf_data cf0_data;
@@ -1313,10 +1312,8 @@ void __init at91_add_device_cf(struct at91_cf_data *data) · 90 unmodified lines
1313 if (data->flags & AT91_CF_TRUE_IDE)1312 if (data->flags & AT91_CF_TRUE_IDE)
1314#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE)1313#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE)
1315 pdev->name = "pata_at91";1314 pdev->name = "pata_at91";
1316#elif defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
1317 pdev->name = "at91_ide";
1318#else1315#else
1319#warning "board requires AT91_CF_TRUE_IDE: enable either at91_ide or pata_at91"1316#warning "board requires AT91_CF_TRUE_IDE: enable pata_at91"
1320#endif1317#endif
1321 else1318 else
1322 pdev->name = "at91_cf";1319 pdev->name = "at91_cf";
arch/arm/mach-at91/at91sam9261.c+1−0
@@ -281,6 +281,7 @@ static void __init at91sam9261_map_io(void) · 280 unmodified lines
281static void __init at91sam9261_ioremap_registers(void)281static void __init at91sam9261_ioremap_registers(void)
282{282{
283 at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC);283 at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC);
284 at91_ioremap_rstc(AT91SAM9261_BASE_RSTC);
284 at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT);285 at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT);
285 at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC);286 at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC);
286}287}
arch/arm/mach-at91/at91sam9261_devices.c+1−1
@@ -87,7 +87,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 86 unmodified lines
87 * USB Device (Gadget)87 * USB Device (Gadget)
88 * -------------------------------------------------------------------- */88 * -------------------------------------------------------------------- */
89 89
90#ifdef CONFIG_USB_AT9190#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
91static struct at91_udc_data udc_data;91static struct at91_udc_data udc_data;
92 92
93static struct resource udc_resources[] = {93static struct resource udc_resources[] = {
arch/arm/mach-at91/at91sam9263.c+1−0
@@ -301,6 +301,7 @@ static void __init at91sam9263_map_io(void) · 300 unmodified lines
301static void __init at91sam9263_ioremap_registers(void)301static void __init at91sam9263_ioremap_registers(void)
302{302{
303 at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC);303 at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC);
304 at91_ioremap_rstc(AT91SAM9263_BASE_RSTC);
304 at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT);305 at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT);
305 at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0);306 at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0);
306 at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1);307 at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1);
arch/arm/mach-at91/at91sam9263_devices.c+4−4
@@ -92,7 +92,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 91 unmodified lines
92 * USB Device (Gadget)92 * USB Device (Gadget)
93 * -------------------------------------------------------------------- */93 * -------------------------------------------------------------------- */
94 94
95#ifdef CONFIG_USB_AT9195#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
96static struct at91_udc_data udc_data;96static struct at91_udc_data udc_data;
97 97
98static struct resource udc_resources[] = {98static struct resource udc_resources[] = {
@@ -355,8 +355,8 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {} · 256 unmodified lines
355 * Compact Flash (PCMCIA or IDE)355 * Compact Flash (PCMCIA or IDE)
356 * -------------------------------------------------------------------- */356 * -------------------------------------------------------------------- */
357 357
358#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \358#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE) || \
359 defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)359 defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE)
360 360
361static struct at91_cf_data cf0_data;361static struct at91_cf_data cf0_data;
362 362
@@ -450,7 +450,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) · 87 unmodified lines
450 at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */450 at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */
451 at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */451 at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
452 452
453 pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";453 pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "pata_at91" : "at91_cf";
454 platform_device_register(pdev);454 platform_device_register(pdev);
455}455}
456#else456#else
arch/arm/mach-at91/at91sam9_alt_reset.S+3−4
@@ -23,7 +23,8 @@ · 22 unmodified lines
23 .globl at91sam9_alt_restart23 .globl at91sam9_alt_restart
24 24
25at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants25at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants
26 ldr r1, .at91_va_base_rstc_cr26 ldr r1, =at91_rstc_base
27 ldr r1, [r1]
27 28
28 mov r2, #129 mov r2, #1
29 mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN30 mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN
@@ -33,11 +34,9 @@ at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants · 3 unmodified lines
33 34
34 str r2, [r0, #AT91_SDRAMC_TR] @ disable SDRAM access35 str r2, [r0, #AT91_SDRAMC_TR] @ disable SDRAM access
35 str r3, [r0, #AT91_SDRAMC_LPR] @ power down SDRAM36 str r3, [r0, #AT91_SDRAMC_LPR] @ power down SDRAM
36 str r4, [r1] @ reset processor37 str r4, [r1, #AT91_RSTC_CR] @ reset processor
37 38
38 b .39 b .
39 40
40.at91_va_base_sdramc:41.at91_va_base_sdramc:
41 .word AT91_VA_BASE_SYS + AT91_SDRAMC042 .word AT91_VA_BASE_SYS + AT91_SDRAMC0
42.at91_va_base_rstc_cr:
43 .word AT91_VA_BASE_SYS + AT91_RSTC_CR
arch/arm/mach-at91/at91sam9g45.c+1−6
@@ -18,7 +18,6 @@ · 17 unmodified lines
18#include <asm/mach/map.h>18#include <asm/mach/map.h>
19#include <mach/at91sam9g45.h>19#include <mach/at91sam9g45.h>
20#include <mach/at91_pmc.h>20#include <mach/at91_pmc.h>
21#include <mach/at91_rstc.h>
22#include <mach/cpu.h>21#include <mach/cpu.h>
23 22
24#include "soc.h"23#include "soc.h"
@@ -318,11 +317,6 @@ static struct at91_gpio_bank at91sam9g45_gpio[] __initdata = { · 293 unmodified lines
318 }317 }
319};318};
320 319
321static void at91sam9g45_restart(char mode, const char *cmd)
322{
323 at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
324}
325
326/* --------------------------------------------------------------------320/* --------------------------------------------------------------------
327 * AT91SAM9G45 processor initialization321 * AT91SAM9G45 processor initialization
328 * -------------------------------------------------------------------- */322 * -------------------------------------------------------------------- */
@@ -336,6 +330,7 @@ static void __init at91sam9g45_map_io(void) · 7 unmodified lines
336static void __init at91sam9g45_ioremap_registers(void)330static void __init at91sam9g45_ioremap_registers(void)
337{331{
338 at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC);332 at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC);
333 at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC);
339 at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT);334 at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT);
340 at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC);335 at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC);
341}336}
arch/arm/mach-at91/at91sam9g45_reset.S+40−0
@@ -0,0 +1,40 @@
1/*
2 * reset AT91SAM9G45 as per errata
3 *
4 * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcosoft.com>
5 *
6 * unless the SDRAM is cleanly shutdown before we hit the
7 * reset register it can be left driving the data bus and
8 * killing the chance of a subsequent boot from NAND
9 *
10 * GPLv2 Only
11 */
12
13#include <linux/linkage.h>
14#include <mach/hardware.h>
15#include <mach/at91sam9_ddrsdr.h>
16#include <mach/at91_rstc.h>
17
18 .arm
19
20 .globl at91sam9g45_restart
21
22at91sam9g45_restart:
23 ldr r0, .at91_va_base_sdramc0 @ preload constants
24 ldr r1, =at91_rstc_base
25 ldr r1, [r1]
26
27 mov r2, #1
28 mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN
29 ldr r4, =AT91_RSTC_KEY | AT91_RSTC_PERRST | AT91_RSTC_PROCRST
30
31 .balign 32 @ align to cache line
32
33 str r2, [r0, #AT91_DDRSDRC_RTR] @ disable DDR0 access
34 str r3, [r0, #AT91_DDRSDRC_LPR] @ power down DDR0
35 str r4, [r1, #AT91_RSTC_CR] @ reset processor
36
37 b .
38
39.at91_va_base_sdramc0:
40 .word AT91_VA_BASE_SYS + AT91_DDRSDRC0
arch/arm/mach-at91/at91sam9rl.c+1−0
@@ -286,6 +286,7 @@ static void __init at91sam9rl_map_io(void) · 285 unmodified lines
286static void __init at91sam9rl_ioremap_registers(void)286static void __init at91sam9rl_ioremap_registers(void)
287{287{
288 at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC);288 at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC);
289 at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC);
289 at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT);290 at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT);
290 at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC);291 at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC);
291}292}
arch/arm/mach-at91/generic.h+2−0
@@ -58,7 +58,9 @@ extern void at91_irq_suspend(void); · 57 unmodified lines
58extern void at91_irq_resume(void);58extern void at91_irq_resume(void);
59 59
60/* reset */60/* reset */
61extern void at91_ioremap_rstc(u32 base_addr);
61extern void at91sam9_alt_restart(char, const char *);62extern void at91sam9_alt_restart(char, const char *);
63extern void at91sam9g45_restart(char, const char *);
62 64
63/* shutdown */65/* shutdown */
64extern void at91_ioremap_shdwc(u32 base_addr);66extern void at91_ioremap_shdwc(u32 base_addr);
arch/arm/mach-at91/include/mach/at91_rstc.h+15−3
@@ -16,13 +16,25 @@ · 15 unmodified lines
16#ifndef AT91_RSTC_H16#ifndef AT91_RSTC_H
17#define AT91_RSTC_H17#define AT91_RSTC_H
18 18
19#define AT91_RSTC_CR (AT91_RSTC + 0x00) /* Reset Controller Control Register */19#ifndef __ASSEMBLY__
20extern void __iomem *at91_rstc_base;
21
22#define at91_rstc_read(field) \
23 __raw_readl(at91_rstc_base + field)
24
25#define at91_rstc_write(field, value) \
26 __raw_writel(value, at91_rstc_base + field);
27#else
28.extern at91_rstc_base
29#endif
30
31#define AT91_RSTC_CR 0x00 /* Reset Controller Control Register */
20#define AT91_RSTC_PROCRST (1 << 0) /* Processor Reset */32#define AT91_RSTC_PROCRST (1 << 0) /* Processor Reset */
21#define AT91_RSTC_PERRST (1 << 2) /* Peripheral Reset */33#define AT91_RSTC_PERRST (1 << 2) /* Peripheral Reset */
22#define AT91_RSTC_EXTRST (1 << 3) /* External Reset */34#define AT91_RSTC_EXTRST (1 << 3) /* External Reset */
23#define AT91_RSTC_KEY (0xa5 << 24) /* KEY Password */35#define AT91_RSTC_KEY (0xa5 << 24) /* KEY Password */
24 36
25#define AT91_RSTC_SR (AT91_RSTC + 0x04) /* Reset Controller Status Register */37#define AT91_RSTC_SR 0x04 /* Reset Controller Status Register */
26#define AT91_RSTC_URSTS (1 << 0) /* User Reset Status */38#define AT91_RSTC_URSTS (1 << 0) /* User Reset Status */
27#define AT91_RSTC_RSTTYP (7 << 8) /* Reset Type */39#define AT91_RSTC_RSTTYP (7 << 8) /* Reset Type */
28#define AT91_RSTC_RSTTYP_GENERAL (0 << 8)40#define AT91_RSTC_RSTTYP_GENERAL (0 << 8)
@@ -33,7 +45,7 @@ · 4 unmodified lines
33#define AT91_RSTC_NRSTL (1 << 16) /* NRST Pin Level */45#define AT91_RSTC_NRSTL (1 << 16) /* NRST Pin Level */
34#define AT91_RSTC_SRCMP (1 << 17) /* Software Reset Command in Progress */46#define AT91_RSTC_SRCMP (1 << 17) /* Software Reset Command in Progress */
35 47
36#define AT91_RSTC_MR (AT91_RSTC + 0x08) /* Reset Controller Mode Register */48#define AT91_RSTC_MR 0x08 /* Reset Controller Mode Register */
37#define AT91_RSTC_URSTEN (1 << 0) /* User Reset Enable */49#define AT91_RSTC_URSTEN (1 << 0) /* User Reset Enable */
38#define AT91_RSTC_URSTIEN (1 << 4) /* User Reset Interrupt Enable */50#define AT91_RSTC_URSTIEN (1 << 4) /* User Reset Interrupt Enable */
39#define AT91_RSTC_ERSTL (0xf << 8) /* External Reset Length */51#define AT91_RSTC_ERSTL (0xf << 8) /* External Reset Length */
arch/arm/mach-at91/include/mach/at91cap9.h+1−1
@@ -83,7 +83,6 @@ · 82 unmodified lines
83#define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)83#define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)
84#define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)84#define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)
85#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)85#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
86#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
87#define AT91_GPBR (cpu_is_at91cap9_revB() ? \86#define AT91_GPBR (cpu_is_at91cap9_revB() ? \
88 (0xfffffd50 - AT91_BASE_SYS) : \87 (0xfffffd50 - AT91_BASE_SYS) : \
89 (0xfffffd60 - AT91_BASE_SYS))88 (0xfffffd60 - AT91_BASE_SYS))
@@ -96,6 +95,7 @@ · 6 unmodified lines
96#define AT91CAP9_BASE_PIOB 0xfffff40095#define AT91CAP9_BASE_PIOB 0xfffff400
97#define AT91CAP9_BASE_PIOC 0xfffff60096#define AT91CAP9_BASE_PIOC 0xfffff600
98#define AT91CAP9_BASE_PIOD 0xfffff80097#define AT91CAP9_BASE_PIOD 0xfffff800
98#define AT91CAP9_BASE_RSTC 0xfffffd00
99#define AT91CAP9_BASE_SHDWC 0xfffffd1099#define AT91CAP9_BASE_SHDWC 0xfffffd10
100#define AT91CAP9_BASE_RTT 0xfffffd20100#define AT91CAP9_BASE_RTT 0xfffffd20
101#define AT91CAP9_BASE_PIT 0xfffffd30101#define AT91CAP9_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h+0−108
@@ -1,108 +0,0 @@
1/*
2 * arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h
3 *
4 * (C) 2008 Andrew Victor
5 *
6 * DDR/SDR Controller (DDRSDRC) - System peripherals registers.
7 * Based on AT91CAP9 datasheet revision B.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 */
14
15#ifndef AT91CAP9_DDRSDR_H
16#define AT91CAP9_DDRSDR_H
17
18#define AT91_DDRSDRC_MR 0x00 /* Mode Register */
19#define AT91_DDRSDRC_MODE (0xf << 0) /* Command Mode */
20#define AT91_DDRSDRC_MODE_NORMAL 0
21#define AT91_DDRSDRC_MODE_NOP 1
22#define AT91_DDRSDRC_MODE_PRECHARGE 2
23#define AT91_DDRSDRC_MODE_LMR 3
24#define AT91_DDRSDRC_MODE_REFRESH 4
25#define AT91_DDRSDRC_MODE_EXT_LMR 5
26#define AT91_DDRSDRC_MODE_DEEP 6
27
28#define AT91_DDRSDRC_RTR 0x04 /* Refresh Timer Register */
29#define AT91_DDRSDRC_COUNT (0xfff << 0) /* Refresh Timer Counter */
30
31#define AT91_DDRSDRC_CR 0x08 /* Configuration Register */
32#define AT91_DDRSDRC_NC (3 << 0) /* Number of Column Bits */
33#define AT91_DDRSDRC_NC_SDR8 (0 << 0)
34#define AT91_DDRSDRC_NC_SDR9 (1 << 0)
35#define AT91_DDRSDRC_NC_SDR10 (2 << 0)
36#define AT91_DDRSDRC_NC_SDR11 (3 << 0)
37#define AT91_DDRSDRC_NC_DDR9 (0 << 0)
38#define AT91_DDRSDRC_NC_DDR10 (1 << 0)
39#define AT91_DDRSDRC_NC_DDR11 (2 << 0)
40#define AT91_DDRSDRC_NC_DDR12 (3 << 0)
41#define AT91_DDRSDRC_NR (3 << 2) /* Number of Row Bits */
42#define AT91_DDRSDRC_NR_11 (0 << 2)
43#define AT91_DDRSDRC_NR_12 (1 << 2)
44#define AT91_DDRSDRC_NR_13 (2 << 2)
45#define AT91_DDRSDRC_CAS (7 << 4) /* CAS Latency */
46#define AT91_DDRSDRC_CAS_2 (2 << 4)
47#define AT91_DDRSDRC_CAS_3 (3 << 4)
48#define AT91_DDRSDRC_CAS_25 (6 << 4)
49#define AT91_DDRSDRC_DLL (1 << 7) /* Reset DLL */
50#define AT91_DDRSDRC_DICDS (1 << 8) /* Output impedance control */
51
52#define AT91_DDRSDRC_T0PR 0x0C /* Timing 0 Register */
53#define AT91_DDRSDRC_TRAS (0xf << 0) /* Active to Precharge delay */
54#define AT91_DDRSDRC_TRCD (0xf << 4) /* Row to Column delay */
55#define AT91_DDRSDRC_TWR (0xf << 8) /* Write recovery delay */
56#define AT91_DDRSDRC_TRC (0xf << 12) /* Row cycle delay */
57#define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */
58#define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */
59#define AT91_DDRSDRC_TWTR (1 << 24) /* Internal Write to Read delay */
60#define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */
61
62#define AT91_DDRSDRC_T1PR 0x10 /* Timing 1 Register */
63#define AT91_DDRSDRC_TRFC (0x1f << 0) /* Row Cycle Delay */
64#define AT91_DDRSDRC_TXSNR (0xff << 8) /* Exit self-refresh to non-read */
65#define AT91_DDRSDRC_TXSRD (0xff << 16) /* Exit self-refresh to read */
66#define AT91_DDRSDRC_TXP (0xf << 24) /* Exit power-down delay */
67
68#define AT91_DDRSDRC_LPR 0x18 /* Low Power Register */
69#define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */
70#define AT91_DDRSDRC_LPCB_DISABLE 0
71#define AT91_DDRSDRC_LPCB_SELF_REFRESH 1
72#define AT91_DDRSDRC_LPCB_POWER_DOWN 2
73#define AT91_DDRSDRC_LPCB_DEEP_POWER_DOWN 3
74#define AT91_DDRSDRC_CLKFR (1 << 2) /* Clock Frozen */
75#define AT91_DDRSDRC_PASR (7 << 4) /* Partial Array Self Refresh */
76#define AT91_DDRSDRC_TCSR (3 << 8) /* Temperature Compensated Self Refresh */
77#define AT91_DDRSDRC_DS (3 << 10) /* Drive Strength */
78#define AT91_DDRSDRC_TIMEOUT (3 << 12) /* Time to define when Low Power Mode is enabled */
79#define AT91_DDRSDRC_TIMEOUT_0_CLK_CYCLES (0 << 12)
80#define AT91_DDRSDRC_TIMEOUT_64_CLK_CYCLES (1 << 12)
81#define AT91_DDRSDRC_TIMEOUT_128_CLK_CYCLES (2 << 12)
82
83#define AT91_DDRSDRC_MDR 0x1C /* Memory Device Register */
84#define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */
85#define AT91_DDRSDRC_MD_SDR 0
86#define AT91_DDRSDRC_MD_LOW_POWER_SDR 1
87#define AT91_DDRSDRC_MD_DDR 2
88#define AT91_DDRSDRC_MD_LOW_POWER_DDR 3
89
90#define AT91_DDRSDRC_DLLR 0x20 /* DLL Information Register */
91#define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */
92#define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */
93#define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */
94#define AT91_DDRSDRC_SDCOVF (1 << 3) /* Slave Delay Correction Overflow */
95#define AT91_DDRSDRC_SDCUDF (1 << 4) /* Slave Delay Correction Underflow */
96#define AT91_DDRSDRC_SDERF (1 << 5) /* Slave Delay Correction error */
97#define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */
98#define AT91_DDRSDRC_SDVAL (0xff << 16) /* Slave Delay value */
99#define AT91_DDRSDRC_SDCVAL (0xff << 24) /* Slave Delay Correction value */
100
101/* Register access macros */
102#define at91_ramc_read(num, reg) \
103 at91_sys_read(AT91_DDRSDRC##num + reg)
104#define at91_ramc_write(num, reg, value) \
105 at91_sys_write(AT91_DDRSDRC##num + reg, value)
106
107
108#endif
arch/arm/mach-at91/include/mach/at91sam9260.h+1−1
@@ -83,7 +83,6 @@ · 82 unmodified lines
83#define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)83#define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
84#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)84#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
85#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)85#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
86#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
87#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)86#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)
88 87
89#define AT91SAM9260_BASE_ECC 0xffffe80088#define AT91SAM9260_BASE_ECC 0xffffe800
@@ -92,6 +91,7 @@ · 2 unmodified lines
92#define AT91SAM9260_BASE_PIOA 0xfffff40091#define AT91SAM9260_BASE_PIOA 0xfffff400
93#define AT91SAM9260_BASE_PIOB 0xfffff60092#define AT91SAM9260_BASE_PIOB 0xfffff600
94#define AT91SAM9260_BASE_PIOC 0xfffff80093#define AT91SAM9260_BASE_PIOC 0xfffff800
94#define AT91SAM9260_BASE_RSTC 0xfffffd00
95#define AT91SAM9260_BASE_SHDWC 0xfffffd1095#define AT91SAM9260_BASE_SHDWC 0xfffffd10
96#define AT91SAM9260_BASE_RTT 0xfffffd2096#define AT91SAM9260_BASE_RTT 0xfffffd20
97#define AT91SAM9260_BASE_PIT 0xfffffd3097#define AT91SAM9260_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9261.h+1−1
@@ -68,7 +68,6 @@ · 67 unmodified lines
68#define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)68#define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
69#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)69#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
70#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)70#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
71#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
72#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)71#define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)
73 72
74#define AT91SAM9261_BASE_SMC 0xffffec0073#define AT91SAM9261_BASE_SMC 0xffffec00
@@ -76,6 +75,7 @@ · 1 unmodified line
76#define AT91SAM9261_BASE_PIOA 0xfffff40075#define AT91SAM9261_BASE_PIOA 0xfffff400
77#define AT91SAM9261_BASE_PIOB 0xfffff60076#define AT91SAM9261_BASE_PIOB 0xfffff600
78#define AT91SAM9261_BASE_PIOC 0xfffff80077#define AT91SAM9261_BASE_PIOC 0xfffff800
78#define AT91SAM9261_BASE_RSTC 0xfffffd00
79#define AT91SAM9261_BASE_SHDWC 0xfffffd1079#define AT91SAM9261_BASE_SHDWC 0xfffffd10
80#define AT91SAM9261_BASE_RTT 0xfffffd2080#define AT91SAM9261_BASE_RTT 0xfffffd20
81#define AT91SAM9261_BASE_PIT 0xfffffd3081#define AT91SAM9261_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9263.h+1−1
@@ -78,7 +78,6 @@ · 77 unmodified lines
78#define AT91_SDRAMC1 (0xffffe800 - AT91_BASE_SYS)78#define AT91_SDRAMC1 (0xffffe800 - AT91_BASE_SYS)
79#define AT91_MATRIX (0xffffec00 - AT91_BASE_SYS)79#define AT91_MATRIX (0xffffec00 - AT91_BASE_SYS)
80#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)80#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
81#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
82#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)81#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
83 82
84#define AT91SAM9263_BASE_ECC0 0xffffe00083#define AT91SAM9263_BASE_ECC0 0xffffe000
@@ -91,6 +90,7 @@ · 6 unmodified lines
91#define AT91SAM9263_BASE_PIOC 0xfffff60090#define AT91SAM9263_BASE_PIOC 0xfffff600
92#define AT91SAM9263_BASE_PIOD 0xfffff80091#define AT91SAM9263_BASE_PIOD 0xfffff800
93#define AT91SAM9263_BASE_PIOE 0xfffffa0092#define AT91SAM9263_BASE_PIOE 0xfffffa00
93#define AT91SAM9263_BASE_RSTC 0xfffffd00
94#define AT91SAM9263_BASE_SHDWC 0xfffffd1094#define AT91SAM9263_BASE_SHDWC 0xfffffd10
95#define AT91SAM9263_BASE_RTT0 0xfffffd2095#define AT91SAM9263_BASE_RTT0 0xfffffd20
96#define AT91SAM9263_BASE_PIT 0xfffffd3096#define AT91SAM9263_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h+20−10
@@ -46,10 +46,10 @@ · 45 unmodified lines
46#define AT91_DDRSDRC_CAS_25 (6 << 4)46#define AT91_DDRSDRC_CAS_25 (6 << 4)
47#define AT91_DDRSDRC_RST_DLL (1 << 7) /* Reset DLL */47#define AT91_DDRSDRC_RST_DLL (1 << 7) /* Reset DLL */
48#define AT91_DDRSDRC_DICDS (1 << 8) /* Output impedance control */48#define AT91_DDRSDRC_DICDS (1 << 8) /* Output impedance control */
49#define AT91_DDRSDRC_DIS_DLL (1 << 9) /* Disable DLL */49#define AT91_DDRSDRC_DIS_DLL (1 << 9) /* Disable DLL [SAM9 Only] */
50#define AT91_DDRSDRC_OCD (1 << 12) /* Off-Chip Driver */50#define AT91_DDRSDRC_OCD (1 << 12) /* Off-Chip Driver [SAM9 Only] */
51#define AT91_DDRSDRC_DQMS (1 << 16) /* Mask Data is Shared */51#define AT91_DDRSDRC_DQMS (1 << 16) /* Mask Data is Shared [SAM9 Only] */
52#define AT91_DDRSDRC_ACTBST (1 << 18) /* Active Bank X to Burst Stop Read Access Bank Y */52#define AT91_DDRSDRC_ACTBST (1 << 18) /* Active Bank X to Burst Stop Read Access Bank Y [SAM9 Only] */
53 53
54#define AT91_DDRSDRC_T0PR 0x0C /* Timing 0 Register */54#define AT91_DDRSDRC_T0PR 0x0C /* Timing 0 Register */
55#define AT91_DDRSDRC_TRAS (0xf << 0) /* Active to Precharge delay */55#define AT91_DDRSDRC_TRAS (0xf << 0) /* Active to Precharge delay */
@@ -59,7 +59,8 @@ · 3 unmodified lines
59#define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */59#define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */
60#define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */60#define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */
61#define AT91_DDRSDRC_TWTR (0x7 << 24) /* Internal Write to Read delay */61#define AT91_DDRSDRC_TWTR (0x7 << 24) /* Internal Write to Read delay */
62#define AT91_DDRSDRC_RED_WRRD (0x1 << 27) /* Reduce Write to Read Delay */62#define AT91CAP9_DDRSDRC_TWTR (1 << 24) /* Internal Write to Read delay */
63#define AT91_DDRSDRC_RED_WRRD (0x1 << 27) /* Reduce Write to Read Delay [SAM9 Only] */
63#define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */64#define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */
64 65
65#define AT91_DDRSDRC_T1PR 0x10 /* Timing 1 Register */66#define AT91_DDRSDRC_T1PR 0x10 /* Timing 1 Register */
@@ -68,13 +69,14 @@ · 2 unmodified lines
68#define AT91_DDRSDRC_TXSRD (0xff << 16) /* Exit self-refresh to read */69#define AT91_DDRSDRC_TXSRD (0xff << 16) /* Exit self-refresh to read */
69#define AT91_DDRSDRC_TXP (0xf << 24) /* Exit power-down delay */70#define AT91_DDRSDRC_TXP (0xf << 24) /* Exit power-down delay */
70 71
71#define AT91_DDRSDRC_T2PR 0x14 /* Timing 2 Register */72#define AT91_DDRSDRC_T2PR 0x14 /* Timing 2 Register [SAM9 Only] */
72#define AT91_DDRSDRC_TXARD (0xf << 0) /* Exit active power down delay to read command in mode "Fast Exit" */73#define AT91_DDRSDRC_TXARD (0xf << 0) /* Exit active power down delay to read command in mode "Fast Exit" */
73#define AT91_DDRSDRC_TXARDS (0xf << 4) /* Exit active power down delay to read command in mode "Slow Exit" */74#define AT91_DDRSDRC_TXARDS (0xf << 4) /* Exit active power down delay to read command in mode "Slow Exit" */
74#define AT91_DDRSDRC_TRPA (0xf << 8) /* Row Precharge All delay */75#define AT91_DDRSDRC_TRPA (0xf << 8) /* Row Precharge All delay */
75#define AT91_DDRSDRC_TRTP (0x7 << 12) /* Read to Precharge delay */76#define AT91_DDRSDRC_TRTP (0x7 << 12) /* Read to Precharge delay */
76 77
77#define AT91_DDRSDRC_LPR 0x1C /* Low Power Register */78#define AT91_DDRSDRC_LPR 0x1C /* Low Power Register */
79#define AT91CAP9_DDRSDRC_LPR 0x18 /* Low Power Register */
78#define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */80#define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */
79#define AT91_DDRSDRC_LPCB_DISABLE 081#define AT91_DDRSDRC_LPCB_DISABLE 0
80#define AT91_DDRSDRC_LPCB_SELF_REFRESH 182#define AT91_DDRSDRC_LPCB_SELF_REFRESH 1
@@ -92,32 +94,40 @@ · 11 unmodified lines
92#define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */94#define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */
93 95
94#define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */96#define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */
97#define AT91CAP9_DDRSDRC_MDR 0x1C /* Memory Device Register */
95#define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */98#define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */
96#define AT91_DDRSDRC_MD_SDR 099#define AT91_DDRSDRC_MD_SDR 0
97#define AT91_DDRSDRC_MD_LOW_POWER_SDR 1100#define AT91_DDRSDRC_MD_LOW_POWER_SDR 1
101#define AT91CAP9_DDRSDRC_MD_DDR 2
98#define AT91_DDRSDRC_MD_LOW_POWER_DDR 3102#define AT91_DDRSDRC_MD_LOW_POWER_DDR 3
99#define AT91_DDRSDRC_MD_DDR2 6103#define AT91_DDRSDRC_MD_DDR2 6 /* [SAM9 Only] */
100#define AT91_DDRSDRC_DBW (1 << 4) /* Data Bus Width */104#define AT91_DDRSDRC_DBW (1 << 4) /* Data Bus Width */
101#define AT91_DDRSDRC_DBW_32BITS (0 << 4)105#define AT91_DDRSDRC_DBW_32BITS (0 << 4)
102#define AT91_DDRSDRC_DBW_16BITS (1 << 4)106#define AT91_DDRSDRC_DBW_16BITS (1 << 4)
103 107
104#define AT91_DDRSDRC_DLL 0x24 /* DLL Information Register */108#define AT91_DDRSDRC_DLL 0x24 /* DLL Information Register */
109#define AT91CAP9_DDRSDRC_DLL 0x20 /* DLL Information Register */
105#define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */110#define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */
106#define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */111#define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */
107#define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */112#define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */
113#define AT91CAP9_DDRSDRC_SDCOVF (1 << 3) /* Slave Delay Correction Overflow */
114#define AT91CAP9_DDRSDRC_SDCUDF (1 << 4) /* Slave Delay Correction Underflow */
115#define AT91CAP9_DDRSDRC_SDERF (1 << 5) /* Slave Delay Correction error */
108#define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */116#define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */
117#define AT91CAP9_DDRSDRC_SDVAL (0xff << 16) /* Slave Delay value */
118#define AT91CAP9_DDRSDRC_SDCVAL (0xff << 24) /* Slave Delay Correction value */
109 119
110#define AT91_DDRSDRC_HS 0x2C /* High Speed Register */120#define AT91_DDRSDRC_HS 0x2C /* High Speed Register [SAM9 Only] */
111#define AT91_DDRSDRC_DIS_ATCP_RD (1 << 2) /* Anticip read access is disabled */121#define AT91_DDRSDRC_DIS_ATCP_RD (1 << 2) /* Anticip read access is disabled */
112 122
113#define AT91_DDRSDRC_DELAY(n) (0x30 + (0x4 * (n))) /* Delay I/O Register n */123#define AT91_DDRSDRC_DELAY(n) (0x30 + (0x4 * (n))) /* Delay I/O Register n */
114 124
115#define AT91_DDRSDRC_WPMR 0xE4 /* Write Protect Mode Register */125#define AT91_DDRSDRC_WPMR 0xE4 /* Write Protect Mode Register [SAM9 Only] */
116#define AT91_DDRSDRC_WP (1 << 0) /* Write protect enable */126#define AT91_DDRSDRC_WP (1 << 0) /* Write protect enable */
117#define AT91_DDRSDRC_WPKEY (0xffffff << 8) /* Write protect key */127#define AT91_DDRSDRC_WPKEY (0xffffff << 8) /* Write protect key */
118#define AT91_DDRSDRC_KEY (0x444452 << 8) /* Write protect key = "DDR" */128#define AT91_DDRSDRC_KEY (0x444452 << 8) /* Write protect key = "DDR" */
119 129
120#define AT91_DDRSDRC_WPSR 0xE8 /* Write Protect Status Register */130#define AT91_DDRSDRC_WPSR 0xE8 /* Write Protect Status Register [SAM9 Only] */
121#define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */131#define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */
122#define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */132#define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */
123 133
arch/arm/mach-at91/include/mach/at91sam9_smc.h+29−0
@@ -18,6 +18,35 @@ · 17 unmodified lines
18 18
19#include <mach/cpu.h>19#include <mach/cpu.h>
20 20
21#ifndef __ASSEMBLY__
22struct sam9_smc_config {
23 /* Setup register */
24 u8 ncs_read_setup;
25 u8 nrd_setup;
26 u8 ncs_write_setup;
27 u8 nwe_setup;
28
29 /* Pulse register */
30 u8 ncs_read_pulse;
31 u8 nrd_pulse;
32 u8 ncs_write_pulse;
33 u8 nwe_pulse;
34
35 /* Cycle register */
36 u16 read_cycle;
37 u16 write_cycle;
38
39 /* Mode register */
40 u32 mode;
41 u8 tdf_cycles:4;
42};
43
44extern void sam9_smc_configure(int id, int cs, struct sam9_smc_config *config);
45extern void sam9_smc_read(int id, int cs, struct sam9_smc_config *config);
46extern void sam9_smc_read_mode(int id, int cs, struct sam9_smc_config *config);
47extern void sam9_smc_write_mode(int id, int cs, struct sam9_smc_config *config);
48#endif
49
21#define AT91_SMC_SETUP 0x00 /* Setup Register for CS n */50#define AT91_SMC_SETUP 0x00 /* Setup Register for CS n */
22#define AT91_SMC_NWESETUP (0x3f << 0) /* NWE Setup Length */51#define AT91_SMC_NWESETUP (0x3f << 0) /* NWE Setup Length */
23#define AT91_SMC_NWESETUP_(x) ((x) << 0)52#define AT91_SMC_NWESETUP_(x) ((x) << 0)
arch/arm/mach-at91/include/mach/at91sam9g45.h+1−1
@@ -90,7 +90,6 @@ · 89 unmodified lines
90#define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)90#define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)
91#define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)91#define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)
92#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)92#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
93#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
94#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)93#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
95 94
96#define AT91SAM9G45_BASE_ECC 0xffffe20095#define AT91SAM9G45_BASE_ECC 0xffffe200
@@ -102,6 +101,7 @@ · 5 unmodified lines
102#define AT91SAM9G45_BASE_PIOC 0xfffff600101#define AT91SAM9G45_BASE_PIOC 0xfffff600
103#define AT91SAM9G45_BASE_PIOD 0xfffff800102#define AT91SAM9G45_BASE_PIOD 0xfffff800
104#define AT91SAM9G45_BASE_PIOE 0xfffffa00103#define AT91SAM9G45_BASE_PIOE 0xfffffa00
104#define AT91SAM9G45_BASE_RSTC 0xfffffd00
105#define AT91SAM9G45_BASE_SHDWC 0xfffffd10105#define AT91SAM9G45_BASE_SHDWC 0xfffffd10
106#define AT91SAM9G45_BASE_RTT 0xfffffd20106#define AT91SAM9G45_BASE_RTT 0xfffffd20
107#define AT91SAM9G45_BASE_PIT 0xfffffd30107#define AT91SAM9G45_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9rl.h+1−1
@@ -72,7 +72,6 @@ · 71 unmodified lines
72#define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)72#define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
73#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)73#define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
74#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)74#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
75#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
76#define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS)75#define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS)
77#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)76#define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
78 77
@@ -84,6 +83,7 @@ · 5 unmodified lines
84#define AT91SAM9RL_BASE_PIOB 0xfffff60083#define AT91SAM9RL_BASE_PIOB 0xfffff600
85#define AT91SAM9RL_BASE_PIOC 0xfffff80084#define AT91SAM9RL_BASE_PIOC 0xfffff800
86#define AT91SAM9RL_BASE_PIOD 0xfffffa0085#define AT91SAM9RL_BASE_PIOD 0xfffffa00
86#define AT91SAM9RL_BASE_RSTC 0xfffffd00
87#define AT91SAM9RL_BASE_SHDWC 0xfffffd1087#define AT91SAM9RL_BASE_SHDWC 0xfffffd10
88#define AT91SAM9RL_BASE_RTT 0xfffffd2088#define AT91SAM9RL_BASE_RTT 0xfffffd20
89#define AT91SAM9RL_BASE_PIT 0xfffffd3089#define AT91SAM9RL_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/board.h+1−1
@@ -88,7 +88,7 @@ extern void __init at91_add_device_eth(struct macb_platform_data *data); · 87 unmodified lines
88struct at91_usbh_data {88struct at91_usbh_data {
89 u8 ports; /* number of ports on root hub */89 u8 ports; /* number of ports on root hub */
90 int vbus_pin[2]; /* port power-control pin */90 int vbus_pin[2]; /* port power-control pin */
91 u8 vbus_pin_inverted;91 u8 vbus_pin_active_low[2];
92 u8 overcurrent_supported;92 u8 overcurrent_supported;
93 int overcurrent_pin[2];93 int overcurrent_pin[2];
94 u8 overcurrent_status[2];94 u8 overcurrent_status[2];
arch/arm/mach-at91/pm.c+2−7
@@ -34,7 +34,6 @@ · 33 unmodified lines
34/*34/*
35 * Show the reason for the previous system reset.35 * Show the reason for the previous system reset.
36 */36 */
37#if defined(AT91_RSTC)
38 37
39#include <mach/at91_rstc.h>38#include <mach/at91_rstc.h>
40#include <mach/at91_shdwc.h>39#include <mach/at91_shdwc.h>
@@ -58,10 +57,10 @@ static void __init show_reset_status(void) · 17 unmodified lines
58 char *reason, *r2 = reset;57 char *reason, *r2 = reset;
59 u32 reset_type, wake_type;58 u32 reset_type, wake_type;
60 59
61 if (!at91_shdwc_base)60 if (!at91_shdwc_base || !at91_rstc_base)
62 return;61 return;
63 62
64 reset_type = at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_RSTTYP;63 reset_type = at91_rstc_read(AT91_RSTC_SR) & AT91_RSTC_RSTTYP;
65 wake_type = at91_shdwc_read(AT91_SHDW_SR);64 wake_type = at91_shdwc_read(AT91_SHDW_SR);
66 65
67 switch (reset_type) {66 switch (reset_type) {
@@ -102,10 +101,6 @@ static void __init show_reset_status(void) · 34 unmodified lines
102 }101 }
103 pr_info("AT91: Starting after %s %s\n", reason, r2);102 pr_info("AT91: Starting after %s %s\n", reason, r2);
104}103}
105#else
106static void __init show_reset_status(void) {}
107#endif
108
109 104
110static int at91_pm_valid_state(suspend_state_t state)105static int at91_pm_valid_state(suspend_state_t state)
111{106{
arch/arm/mach-at91/pm.h+4−4
@@ -25,21 +25,21 @@ static inline u32 sdram_selfrefresh_enable(void) · 24 unmodified lines
25 : : "r" (0))25 : : "r" (0))
26 26
27#elif defined(CONFIG_ARCH_AT91CAP9)27#elif defined(CONFIG_ARCH_AT91CAP9)
28#include <mach/at91cap9_ddrsdr.h>28#include <mach/at91sam9_ddrsdr.h>
29 29
30 30
31static inline u32 sdram_selfrefresh_enable(void)31static inline u32 sdram_selfrefresh_enable(void)
32{32{
33 u32 saved_lpr, lpr;33 u32 saved_lpr, lpr;
34 34
35 saved_lpr = at91_ramc_read(0, AT91_DDRSDRC_LPR);35 saved_lpr = at91_ramc_read(0, AT91CAP9_DDRSDRC_LPR);
36 36
37 lpr = saved_lpr & ~AT91_DDRSDRC_LPCB;37 lpr = saved_lpr & ~AT91_DDRSDRC_LPCB;
38 at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH);38 at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH);
39 return saved_lpr;39 return saved_lpr;
40}40}
41 41
42#define sdram_selfrefresh_disable(saved_lpr) at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr)42#define sdram_selfrefresh_disable(saved_lpr) at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, saved_lpr)
43#define wait_for_interrupt_enable() cpu_do_idle()43#define wait_for_interrupt_enable() cpu_do_idle()
44 44
45#elif defined(CONFIG_ARCH_AT91SAM9G45)45#elif defined(CONFIG_ARCH_AT91SAM9G45)
arch/arm/mach-at91/pm_slowclock.S+2−3
@@ -18,9 +18,8 @@ · 17 unmodified lines
18 18
19#if defined(CONFIG_ARCH_AT91RM9200)19#if defined(CONFIG_ARCH_AT91RM9200)
20#include <mach/at91rm9200_mc.h>20#include <mach/at91rm9200_mc.h>
21#elif defined(CONFIG_ARCH_AT91CAP9)21#elif defined(CONFIG_ARCH_AT91CAP9) \
22#include <mach/at91cap9_ddrsdr.h>22 || defined(CONFIG_ARCH_AT91SAM9G45)
23#elif defined(CONFIG_ARCH_AT91SAM9G45)
24#include <mach/at91sam9_ddrsdr.h>23#include <mach/at91sam9_ddrsdr.h>
25#else24#else
26#include <mach/at91sam9_sdramc.h>25#include <mach/at91sam9_sdramc.h>
arch/arm/mach-at91/sam9_smc.c+71−5
@@ -2,6 +2,7 @@ · 1 unmodified line
2 * linux/arch/arm/mach-at91/sam9_smc.c2 * linux/arch/arm/mach-at91/sam9_smc.c
3 *3 *
4 * Copyright (C) 2008 Andrew Victor4 * Copyright (C) 2008 Andrew Victor
5 * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *6 *
6 * This program is free software; you can redistribute it and/or modify7 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as8 * it under the terms of the GNU General Public License version 2 as
@@ -22,7 +23,22 @@ · 14 unmodified lines
22 23
23static void __iomem *smc_base_addr[2];24static void __iomem *smc_base_addr[2];
24 25
25static void __init sam9_smc_cs_configure(void __iomem *base, struct sam9_smc_config* config)26static void sam9_smc_cs_write_mode(void __iomem *base,
27 struct sam9_smc_config *config)
28{
29 __raw_writel(config->mode
30 | AT91_SMC_TDF_(config->tdf_cycles),
31 base + AT91_SMC_MODE);
32}
33
34void sam9_smc_write_mode(int id, int cs,
35 struct sam9_smc_config *config)
36{
37 sam9_smc_cs_write_mode(AT91_SMC_CS(id, cs), config);
38}
39
40static void sam9_smc_cs_configure(void __iomem *base,
41 struct sam9_smc_config *config)
26{42{
27 43
28 /* Setup register */44 /* Setup register */
@@ -45,16 +61,66 @@ static void __init sam9_smc_cs_configure(void __iomem *base, struct sam9_smc_con · 16 unmodified lines
45 base + AT91_SMC_CYCLE);61 base + AT91_SMC_CYCLE);
46 62
47 /* Mode register */63 /* Mode register */
48 __raw_writel(config->mode64 sam9_smc_cs_write_mode(base, config);
49 | AT91_SMC_TDF_(config->tdf_cycles),
50 base + AT91_SMC_MODE);
51}65}
52 66
53void __init sam9_smc_configure(int id, int cs, struct sam9_smc_config* config)67void sam9_smc_configure(int id, int cs,
68 struct sam9_smc_config *config)
54{69{
55 sam9_smc_cs_configure(AT91_SMC_CS(id, cs), config);70 sam9_smc_cs_configure(AT91_SMC_CS(id, cs), config);
56}71}
57 72
73static void sam9_smc_cs_read_mode(void __iomem *base,
74 struct sam9_smc_config *config)
75{
76 u32 val = __raw_readl(base + AT91_SMC_MODE);
77
78 config->mode = (val & ~AT91_SMC_NWECYCLE);
79 config->tdf_cycles = (val & AT91_SMC_NWECYCLE) >> 16 ;
80}
81
82void sam9_smc_read_mode(int id, int cs,
83 struct sam9_smc_config *config)
84{
85 sam9_smc_cs_read_mode(AT91_SMC_CS(id, cs), config);
86}
87
88static void sam9_smc_cs_read(void __iomem *base,
89 struct sam9_smc_config *config)
90{
91 u32 val;
92
93 /* Setup register */
94 val = __raw_readl(base + AT91_SMC_SETUP);
95
96 config->nwe_setup = val & AT91_SMC_NWESETUP;
97 config->ncs_write_setup = (val & AT91_SMC_NCS_WRSETUP) >> 8;
98 config->nrd_setup = (val & AT91_SMC_NRDSETUP) >> 16;
99 config->ncs_read_setup = (val & AT91_SMC_NCS_RDSETUP) >> 24;
100
101 /* Pulse register */
102 val = __raw_readl(base + AT91_SMC_PULSE);
103
104 config->nwe_setup = val & AT91_SMC_NWEPULSE;
105 config->ncs_write_pulse = (val & AT91_SMC_NCS_WRPULSE) >> 8;
106 config->nrd_pulse = (val & AT91_SMC_NRDPULSE) >> 16;
107 config->ncs_read_pulse = (val & AT91_SMC_NCS_RDPULSE) >> 24;
108
109 /* Cycle register */
110 val = __raw_readl(base + AT91_SMC_CYCLE);
111
112 config->write_cycle = val & AT91_SMC_NWECYCLE;
113 config->read_cycle = (val & AT91_SMC_NRDCYCLE) >> 16;
114
115 /* Mode register */
116 sam9_smc_cs_read_mode(base, config);
117}
118
119void sam9_smc_read(int id, int cs, struct sam9_smc_config *config)
120{
121 sam9_smc_cs_read(AT91_SMC_CS(id, cs), config);
122}
123
58void __init at91sam9_ioremap_smc(int id, u32 addr)124void __init at91sam9_ioremap_smc(int id, u32 addr)
59{125{
60 if (id > 1) {126 if (id > 1) {
arch/arm/mach-at91/sam9_smc.h+0−23
@@ -8,27 +8,4 @@ · 7 unmodified lines
8 * published by the Free Software Foundation.8 * published by the Free Software Foundation.
9 */9 */
10 10
11struct sam9_smc_config {
12 /* Setup register */
13 u8 ncs_read_setup;
14 u8 nrd_setup;
15 u8 ncs_write_setup;
16 u8 nwe_setup;
17
18 /* Pulse register */
19 u8 ncs_read_pulse;
20 u8 nrd_pulse;
21 u8 ncs_write_pulse;
22 u8 nwe_pulse;
23
24 /* Cycle register */
25 u16 read_cycle;
26 u16 write_cycle;
27
28 /* Mode register */
29 u32 mode;
30 u8 tdf_cycles:4;
31};
32
33extern void __init sam9_smc_configure(int id, int cs, struct sam9_smc_config* config);
34extern void __init at91sam9_ioremap_smc(int id, u32 addr);11extern void __init at91sam9_ioremap_smc(int id, u32 addr);
arch/arm/mach-at91/setup.c+14−2
@@ -29,9 +29,12 @@ EXPORT_SYMBOL(at91_soc_initdata); · 28 unmodified lines
29void __init at91rm9200_set_type(int type)29void __init at91rm9200_set_type(int type)
30{30{
31 if (type == ARCH_REVISON_9200_PQFP)31 if (type == ARCH_REVISON_9200_PQFP)
32 at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
33 else
34 at91_soc_initdata.subtype = AT91_SOC_RM9200_PQFP;32 at91_soc_initdata.subtype = AT91_SOC_RM9200_PQFP;
33 else
34 at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
35
36 pr_info("AT91: filled in soc subtype: %s\n",
37 at91_get_soc_subtype(&at91_soc_initdata));
35}38}
36 39
37void __init at91_init_irq_default(void)40void __init at91_init_irq_default(void)
@@ -281,6 +284,15 @@ void __init at91_ioremap_shdwc(u32 base_addr) · 243 unmodified lines
281 pm_power_off = at91sam9_poweroff;284 pm_power_off = at91sam9_poweroff;
282}285}
283 286
287void __iomem *at91_rstc_base;
288
289void __init at91_ioremap_rstc(u32 base_addr)
290{
291 at91_rstc_base = ioremap(base_addr, 16);
292 if (!at91_rstc_base)
293 panic("Impossible to ioremap at91_rstc_base\n");
294}
295
284void __init at91_initialize(unsigned long main_clock)296void __init at91_initialize(unsigned long main_clock)
285{297{
286 at91_boot_soc.ioremap_registers();298 at91_boot_soc.ioremap_registers();
arch/arm/mach-bcmring/arch.c+1−1
@@ -194,6 +194,6 @@ MACHINE_START(BCMRING, "BCMRING") · 193 unmodified lines
194 .init_early = bcmring_init_early,194 .init_early = bcmring_init_early,
195 .init_irq = bcmring_init_irq,195 .init_irq = bcmring_init_irq,
196 .timer = &bcmring_timer,196 .timer = &bcmring_timer,
197 .init_machine = bcmring_init_machine197 .init_machine = bcmring_init_machine,
198 .restart = bcmring_restart,198 .restart = bcmring_restart,
199MACHINE_END199MACHINE_END
arch/arm/mach-bcmring/dma.c+0−812
@@ -33,17 +33,11 @@ · 32 unmodified lines
33 33
34#include <mach/timer.h>34#include <mach/timer.h>
35 35
36#include <linux/mm.h>
37#include <linux/pfn.h>36#include <linux/pfn.h>
38#include <linux/atomic.h>37#include <linux/atomic.h>
39#include <linux/sched.h>38#include <linux/sched.h>
40#include <mach/dma.h>39#include <mach/dma.h>
41 40
42/* I don't quite understand why dc4 fails when this is set to 1 and DMA is enabled */
43/* especially since dc4 doesn't use kmalloc'd memory. */
44
45#define ALLOW_MAP_OF_KMALLOC_MEMORY 0
46
47/* ---- Public Variables ------------------------------------------------- */41/* ---- Public Variables ------------------------------------------------- */
48 42
49/* ---- Private Constants and Types -------------------------------------- */43/* ---- Private Constants and Types -------------------------------------- */
@@ -53,58 +47,18 @@ · 3 unmodified lines
53#define CONTROLLER_FROM_HANDLE(handle) (((handle) >> 4) & 0x0f)47#define CONTROLLER_FROM_HANDLE(handle) (((handle) >> 4) & 0x0f)
54#define CHANNEL_FROM_HANDLE(handle) ((handle) & 0x0f)48#define CHANNEL_FROM_HANDLE(handle) ((handle) & 0x0f)
55 49
56#define DMA_MAP_DEBUG 0
57
58#if DMA_MAP_DEBUG
59# define DMA_MAP_PRINT(fmt, args...) printk("%s: " fmt, __func__, ## args)
60#else
61# define DMA_MAP_PRINT(fmt, args...)
62#endif
63 50
64/* ---- Private Variables ------------------------------------------------ */51/* ---- Private Variables ------------------------------------------------ */
65 52
66static DMA_Global_t gDMA;53static DMA_Global_t gDMA;
67static struct proc_dir_entry *gDmaDir;54static struct proc_dir_entry *gDmaDir;
68 55
69static atomic_t gDmaStatMemTypeKmalloc = ATOMIC_INIT(0);
70static atomic_t gDmaStatMemTypeVmalloc = ATOMIC_INIT(0);
71static atomic_t gDmaStatMemTypeUser = ATOMIC_INIT(0);
72static atomic_t gDmaStatMemTypeCoherent = ATOMIC_INIT(0);
73
74#include "dma_device.c"56#include "dma_device.c"
75 57
76/* ---- Private Function Prototypes -------------------------------------- */58/* ---- Private Function Prototypes -------------------------------------- */
77 59
78/* ---- Functions ------------------------------------------------------- */60/* ---- Functions ------------------------------------------------------- */
79 61
80/****************************************************************************/
81/**
82* Displays information for /proc/dma/mem-type
83*/
84/****************************************************************************/
85
86static int dma_proc_read_mem_type(char *buf, char **start, off_t offset,
87 int count, int *eof, void *data)
88{
89 int len = 0;
90
91 len += sprintf(buf + len, "dma_map_mem statistics\n");
92 len +=
93 sprintf(buf + len, "coherent: %d\n",
94 atomic_read(&gDmaStatMemTypeCoherent));
95 len +=
96 sprintf(buf + len, "kmalloc: %d\n",
97 atomic_read(&gDmaStatMemTypeKmalloc));
98 len +=
99 sprintf(buf + len, "vmalloc: %d\n",
100 atomic_read(&gDmaStatMemTypeVmalloc));
101 len +=
102 sprintf(buf + len, "user: %d\n",
103 atomic_read(&gDmaStatMemTypeUser));
104
105 return len;
106}
107
108/****************************************************************************/62/****************************************************************************/
109/**63/**
110* Displays information for /proc/dma/channels64* Displays information for /proc/dma/channels
@@ -846,8 +800,6 @@ int dma_init(void) · 735 unmodified lines
846 dma_proc_read_channels, NULL);800 dma_proc_read_channels, NULL);
847 create_proc_read_entry("devices", 0, gDmaDir,801 create_proc_read_entry("devices", 0, gDmaDir,
848 dma_proc_read_devices, NULL);802 dma_proc_read_devices, NULL);
849 create_proc_read_entry("mem-type", 0, gDmaDir,
850 dma_proc_read_mem_type, NULL);
851 }803 }
852 804
853out:805out:
@@ -1565,767 +1517,3 @@ int dma_set_device_handler(DMA_Device_t dev, /* Device to set the callback for. · 711 unmodified lines
1565}1517}
1566 1518
1567EXPORT_SYMBOL(dma_set_device_handler);1519EXPORT_SYMBOL(dma_set_device_handler);
1568
1569/****************************************************************************/
1570/**
1571* Initializes a memory mapping structure
1572*/
1573/****************************************************************************/
1574
1575int dma_init_mem_map(DMA_MemMap_t *memMap)
1576{
1577 memset(memMap, 0, sizeof(*memMap));
1578
1579 sema_init(&memMap->lock, 1);
1580
1581 return 0;
1582}
1583
1584EXPORT_SYMBOL(dma_init_mem_map);
1585
1586/****************************************************************************/
1587/**
1588* Releases any memory currently being held by a memory mapping structure.
1589*/
1590/****************************************************************************/
1591
1592int dma_term_mem_map(DMA_MemMap_t *memMap)
1593{
1594 down(&memMap->lock); /* Just being paranoid */
1595
1596 /* Free up any allocated memory */
1597
1598 up(&memMap->lock);
1599 memset(memMap, 0, sizeof(*memMap));
1600
1601 return 0;
1602}
1603
1604EXPORT_SYMBOL(dma_term_mem_map);
1605
1606/****************************************************************************/
1607/**
1608* Looks at a memory address and categorizes it.
1609*
1610* @return One of the values from the DMA_MemType_t enumeration.
1611*/
1612/****************************************************************************/
1613
1614DMA_MemType_t dma_mem_type(void *addr)
1615{
1616 unsigned long addrVal = (unsigned long)addr;
1617
1618 if (addrVal >= CONSISTENT_BASE) {
1619 /* NOTE: DMA virtual memory space starts at 0xFFxxxxxx */
1620
1621 /* dma_alloc_xxx pages are physically and virtually contiguous */
1622
1623 return DMA_MEM_TYPE_DMA;
1624 }
1625
1626 /* Technically, we could add one more classification. Addresses between VMALLOC_END */
1627 /* and the beginning of the DMA virtual address could be considered to be I/O space. */
1628 /* Right now, nobody cares about this particular classification, so we ignore it. */
1629
1630 if (is_vmalloc_addr(addr)) {
1631 /* Address comes from the vmalloc'd region. Pages are virtually */
1632 /* contiguous but NOT physically contiguous */
1633
1634 return DMA_MEM_TYPE_VMALLOC;
1635 }
1636
1637 if (addrVal >= PAGE_OFFSET) {
1638 /* PAGE_OFFSET is typically 0xC0000000 */
1639
1640 /* kmalloc'd pages are physically contiguous */
1641
1642 return DMA_MEM_TYPE_KMALLOC;
1643 }
1644
1645 return DMA_MEM_TYPE_USER;
1646}
1647
1648EXPORT_SYMBOL(dma_mem_type);
1649
1650/****************************************************************************/
1651/**
1652* Looks at a memory address and determines if we support DMA'ing to/from
1653* that type of memory.
1654*
1655* @return boolean -
1656* return value != 0 means dma supported
1657* return value == 0 means dma not supported
1658*/
1659/****************************************************************************/
1660
1661int dma_mem_supports_dma(void *addr)
1662{
1663 DMA_MemType_t memType = dma_mem_type(addr);
1664
1665 return (memType == DMA_MEM_TYPE_DMA)
1666#if ALLOW_MAP_OF_KMALLOC_MEMORY
1667 || (memType == DMA_MEM_TYPE_KMALLOC)
1668#endif
1669 || (memType == DMA_MEM_TYPE_USER);
1670}
1671
1672EXPORT_SYMBOL(dma_mem_supports_dma);
1673
1674/****************************************************************************/
1675/**
1676* Maps in a memory region such that it can be used for performing a DMA.
1677*
1678* @return
1679*/
1680/****************************************************************************/
1681
1682int dma_map_start(DMA_MemMap_t *memMap, /* Stores state information about the map */
1683 enum dma_data_direction dir /* Direction that the mapping will be going */
1684 ) {
1685 int rc;
1686
1687 down(&memMap->lock);
1688
1689 DMA_MAP_PRINT("memMap: %p\n", memMap);
1690
1691 if (memMap->inUse) {
1692 printk(KERN_ERR "%s: memory map %p is already being used\n",
1693 __func__, memMap);
1694 rc = -EBUSY;
1695 goto out;
1696 }
1697
1698 memMap->inUse = 1;
1699 memMap->dir = dir;
1700 memMap->numRegionsUsed = 0;
1701
1702 rc = 0;
1703
1704out:
1705
1706 DMA_MAP_PRINT("returning %d", rc);
1707
1708 up(&memMap->lock);
1709
1710 return rc;
1711}
1712
1713EXPORT_SYMBOL(dma_map_start);
1714
1715/****************************************************************************/
1716/**
1717* Adds a segment of memory to a memory map. Each segment is both
1718* physically and virtually contiguous.
1719*
1720* @return 0 on success, error code otherwise.
1721*/
1722/****************************************************************************/
1723
1724static int dma_map_add_segment(DMA_MemMap_t *memMap, /* Stores state information about the map */
1725 DMA_Region_t *region, /* Region that the segment belongs to */
1726 void *virtAddr, /* Virtual address of the segment being added */
1727 dma_addr_t physAddr, /* Physical address of the segment being added */
1728 size_t numBytes /* Number of bytes of the segment being added */
1729 ) {
1730 DMA_Segment_t *segment;
1731
1732 DMA_MAP_PRINT("memMap:%p va:%p pa:0x%x #:%d\n", memMap, virtAddr,
1733 physAddr, numBytes);
1734
1735 /* Sanity check */
1736
1737 if (((unsigned long)virtAddr < (unsigned long)region->virtAddr)
1738 || (((unsigned long)virtAddr + numBytes)) >
1739 ((unsigned long)region->virtAddr + region->numBytes)) {
1740 printk(KERN_ERR
1741 "%s: virtAddr %p is outside region @ %p len: %d\n",
1742 __func__, virtAddr, region->virtAddr, region->numBytes);
1743 return -EINVAL;
1744 }
1745
1746 if (region->numSegmentsUsed > 0) {
1747 /* Check to see if this segment is physically contiguous with the previous one */
1748
1749 segment = &region->segment[region->numSegmentsUsed - 1];
1750
1751 if ((segment->physAddr + segment->numBytes) == physAddr) {
1752 /* It is - just add on to the end */
1753
1754 DMA_MAP_PRINT("appending %d bytes to last segment\n",
1755 numBytes);
1756
1757 segment->numBytes += numBytes;
1758
1759 return 0;
1760 }
1761 }
1762
1763 /* Reallocate to hold more segments, if required. */
1764
1765 if (region->numSegmentsUsed >= region->numSegmentsAllocated) {
1766 DMA_Segment_t *newSegment;
1767 size_t oldSize =
1768 region->numSegmentsAllocated * sizeof(*newSegment);
1769 int newAlloc = region->numSegmentsAllocated + 4;
1770 size_t newSize = newAlloc * sizeof(*newSegment);
1771
1772 newSegment = kmalloc(newSize, GFP_KERNEL);
1773 if (newSegment == NULL) {
1774 return -ENOMEM;
1775 }
1776 memcpy(newSegment, region->segment, oldSize);
1777 memset(&((uint8_t *) newSegment)[oldSize], 0,
1778 newSize - oldSize);
1779 kfree(region->segment);
1780
1781 region->numSegmentsAllocated = newAlloc;
1782 region->segment = newSegment;
1783 }
1784
1785 segment = &region->segment[region->numSegmentsUsed];
1786 region->numSegmentsUsed++;
1787
1788 segment->virtAddr = virtAddr;
1789 segment->physAddr = physAddr;
1790 segment->numBytes = numBytes;
1791
1792 DMA_MAP_PRINT("returning success\n");
1793
1794 return 0;
1795}
1796
1797/****************************************************************************/
1798/**
1799* Adds a region of memory to a memory map. Each region is virtually
1800* contiguous, but not necessarily physically contiguous.
1801*
1802* @return 0 on success, error code otherwise.
1803*/
1804/****************************************************************************/
1805
1806int dma_map_add_region(DMA_MemMap_t *memMap, /* Stores state information about the map */
1807 void *mem, /* Virtual address that we want to get a map of */
1808 size_t numBytes /* Number of bytes being mapped */
1809 ) {
1810 unsigned long addr = (unsigned long)mem;
1811 unsigned int offset;
1812 int rc = 0;
1813 DMA_Region_t *region;
1814 dma_addr_t physAddr;
1815
1816 down(&memMap->lock);
1817
1818 DMA_MAP_PRINT("memMap:%p va:%p #:%d\n", memMap, mem, numBytes);
1819
1820 if (!memMap->inUse) {
1821 printk(KERN_ERR "%s: Make sure you call dma_map_start first\n",
1822 __func__);
1823 rc = -EINVAL;
1824 goto out;
1825 }
1826
1827 /* Reallocate to hold more regions. */
1828
1829 if (memMap->numRegionsUsed >= memMap->numRegionsAllocated) {
1830 DMA_Region_t *newRegion;
1831 size_t oldSize =
1832 memMap->numRegionsAllocated * sizeof(*newRegion);
1833 int newAlloc = memMap->numRegionsAllocated + 4;
1834 size_t newSize = newAlloc * sizeof(*newRegion);
1835
1836 newRegion = kmalloc(newSize, GFP_KERNEL);
1837 if (newRegion == NULL) {
1838 rc = -ENOMEM;
1839 goto out;
1840 }
1841 memcpy(newRegion, memMap->region, oldSize);
1842 memset(&((uint8_t *) newRegion)[oldSize], 0, newSize - oldSize);
1843
1844 kfree(memMap->region);
1845
1846 memMap->numRegionsAllocated = newAlloc;
1847 memMap->region = newRegion;
1848 }
1849
1850 region = &memMap->region[memMap->numRegionsUsed];
1851 memMap->numRegionsUsed++;
1852
1853 offset = addr & ~PAGE_MASK;
1854
1855 region->memType = dma_mem_type(mem);
1856 region->virtAddr = mem;
1857 region->numBytes = numBytes;
1858 region->numSegmentsUsed = 0;
1859 region->numLockedPages = 0;
1860 region->lockedPages = NULL;
1861
1862 switch (region->memType) {
1863 case DMA_MEM_TYPE_VMALLOC:
1864 {
1865 atomic_inc(&gDmaStatMemTypeVmalloc);
1866
1867 /* printk(KERN_ERR "%s: vmalloc'd pages are not supported\n", __func__); */
1868
1869 /* vmalloc'd pages are not physically contiguous */
1870
1871 rc = -EINVAL;
1872 break;
1873 }
1874
1875 case DMA_MEM_TYPE_KMALLOC:
1876 {
1877 atomic_inc(&gDmaStatMemTypeKmalloc);
1878
1879 /* kmalloc'd pages are physically contiguous, so they'll have exactly */
1880 /* one segment */
1881
1882#if ALLOW_MAP_OF_KMALLOC_MEMORY
1883 physAddr =
1884 dma_map_single(NULL, mem, numBytes, memMap->dir);
1885 rc = dma_map_add_segment(memMap, region, mem, physAddr,
1886 numBytes);
1887#else
1888 rc = -EINVAL;
1889#endif
1890 break;
1891 }
1892
1893 case DMA_MEM_TYPE_DMA:
1894 {
1895 /* dma_alloc_xxx pages are physically contiguous */
1896
1897 atomic_inc(&gDmaStatMemTypeCoherent);
1898
1899 physAddr = (vmalloc_to_pfn(mem) << PAGE_SHIFT) + offset;
1900
1901 dma_sync_single_for_cpu(NULL, physAddr, numBytes,
1902 memMap->dir);
1903 rc = dma_map_add_segment(memMap, region, mem, physAddr,
1904 numBytes);
1905 break;
1906 }
1907
1908 case DMA_MEM_TYPE_USER:
1909 {
1910 size_t firstPageOffset;
1911 size_t firstPageSize;
1912 struct page **pages;
1913 struct task_struct *userTask;
1914
1915 atomic_inc(&gDmaStatMemTypeUser);
1916
1917#if 1
1918 /* If the pages are user pages, then the dma_mem_map_set_user_task function */
1919 /* must have been previously called. */
1920
1921 if (memMap->userTask == NULL) {
1922 printk(KERN_ERR
1923 "%s: must call dma_mem_map_set_user_task when using user-mode memory\n",
1924 __func__);
1925 return -EINVAL;
1926 }
1927
1928 /* User pages need to be locked. */
1929
1930 firstPageOffset =
1931 (unsigned long)region->virtAddr & (PAGE_SIZE - 1);
1932 firstPageSize = PAGE_SIZE - firstPageOffset;
1933
1934 region->numLockedPages = (firstPageOffset
1935 + region->numBytes +
1936 PAGE_SIZE - 1) / PAGE_SIZE;
1937 pages =
1938 kmalloc(region->numLockedPages *
1939 sizeof(struct page *), GFP_KERNEL);
1940
1941 if (pages == NULL) {
1942 region->numLockedPages = 0;
1943 return -ENOMEM;
1944 }
1945
1946 userTask = memMap->userTask;
1947
1948 down_read(&userTask->mm->mmap_sem);
1949 rc = get_user_pages(userTask, /* task */
1950 userTask->mm, /* mm */
1951 (unsigned long)region->virtAddr, /* start */
1952 region->numLockedPages, /* len */
1953 memMap->dir == DMA_FROM_DEVICE, /* write */
1954 0, /* force */
1955 pages, /* pages (array of pointers to page) */
1956 NULL); /* vmas */
1957 up_read(&userTask->mm->mmap_sem);
1958
1959 if (rc != region->numLockedPages) {
1960 kfree(pages);
1961 region->numLockedPages = 0;
1962
1963 if (rc >= 0) {
1964 rc = -EINVAL;
1965 }
1966 } else {
1967 uint8_t *virtAddr = region->virtAddr;
1968 size_t bytesRemaining;
1969 int pageIdx;
1970
1971 rc = 0; /* Since get_user_pages returns +ve number */
1972
1973 region->lockedPages = pages;
1974
1975 /* We've locked the user pages. Now we need to walk them and figure */
1976 /* out the physical addresses. */
1977
1978 /* The first page may be partial */
1979
1980 dma_map_add_segment(memMap,
1981 region,
1982 virtAddr,
1983 PFN_PHYS(page_to_pfn
1984 (pages[0])) +
1985 firstPageOffset,
1986 firstPageSize);
1987
1988 virtAddr += firstPageSize;
1989 bytesRemaining =
1990 region->numBytes - firstPageSize;
1991
1992 for (pageIdx = 1;
1993 pageIdx < region->numLockedPages;
1994 pageIdx++) {
1995 size_t bytesThisPage =
1996 (bytesRemaining >
1997 PAGE_SIZE ? PAGE_SIZE :
1998 bytesRemaining);
1999
2000 DMA_MAP_PRINT
2001 ("pageIdx:%d pages[pageIdx]=%p pfn=%u phys=%u\n",
2002 pageIdx, pages[pageIdx],
2003 page_to_pfn(pages[pageIdx]),
2004 PFN_PHYS(page_to_pfn
2005 (pages[pageIdx])));
2006
2007 dma_map_add_segment(memMap,
2008 region,
2009 virtAddr,
2010 PFN_PHYS(page_to_pfn
2011 (pages
2012 [pageIdx])),
2013 bytesThisPage);
2014
2015 virtAddr += bytesThisPage;
2016 bytesRemaining -= bytesThisPage;
2017 }
2018 }
2019#else
2020 printk(KERN_ERR
2021 "%s: User mode pages are not yet supported\n",
2022 __func__);
2023
2024 /* user pages are not physically contiguous */
2025
2026 rc = -EINVAL;
2027#endif
2028 break;
2029 }
2030
2031 default:
2032 {
2033 printk(KERN_ERR "%s: Unsupported memory type: %d\n",
2034 __func__, region->memType);
2035
2036 rc = -EINVAL;
2037 break;
2038 }
2039 }
2040
2041 if (rc != 0) {
2042 memMap->numRegionsUsed--;
2043 }
2044
2045out:
2046
2047 DMA_MAP_PRINT("returning %d\n", rc);
2048
2049 up(&memMap->lock);
2050
2051 return rc;
2052}
2053
2054EXPORT_SYMBOL(dma_map_add_segment);
2055
2056/****************************************************************************/
2057/**
2058* Maps in a memory region such that it can be used for performing a DMA.
2059*
2060* @return 0 on success, error code otherwise.
2061*/
2062/****************************************************************************/
2063
2064int dma_map_mem(DMA_MemMap_t *memMap, /* Stores state information about the map */
2065 void *mem, /* Virtual address that we want to get a map of */
2066 size_t numBytes, /* Number of bytes being mapped */
2067 enum dma_data_direction dir /* Direction that the mapping will be going */
2068 ) {
2069 int rc;
2070
2071 rc = dma_map_start(memMap, dir);
2072 if (rc == 0) {
2073 rc = dma_map_add_region(memMap, mem, numBytes);
2074 if (rc < 0) {
2075 /* Since the add fails, this function will fail, and the caller won't */
2076 /* call unmap, so we need to do it here. */
2077
2078 dma_unmap(memMap, 0);
2079 }
2080 }
2081
2082 return rc;
2083}
2084
2085EXPORT_SYMBOL(dma_map_mem);
2086
2087/****************************************************************************/
2088/**
2089* Setup a descriptor ring for a given memory map.
2090*
2091* It is assumed that the descriptor ring has already been initialized, and
2092* this routine will only reallocate a new descriptor ring if the existing
2093* one is too small.
2094*
2095* @return 0 on success, error code otherwise.
2096*/
2097/****************************************************************************/
2098
2099int dma_map_create_descriptor_ring(DMA_Device_t dev, /* DMA device (where the ring is stored) */
2100 DMA_MemMap_t *memMap, /* Memory map that will be used */
2101 dma_addr_t devPhysAddr /* Physical address of device */
2102 ) {
2103 int rc;
2104 int numDescriptors;
2105 DMA_DeviceAttribute_t *devAttr;
2106 DMA_Region_t *region;
2107 DMA_Segment_t *segment;
2108 dma_addr_t srcPhysAddr;
2109 dma_addr_t dstPhysAddr;
2110 int regionIdx;
2111 int segmentIdx;
2112
2113 devAttr = &DMA_gDeviceAttribute[dev];
2114
2115 down(&memMap->lock);
2116
2117 /* Figure out how many descriptors we need */
2118
2119 numDescriptors = 0;
2120 for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2121 region = &memMap->region[regionIdx];
2122
2123 for (segmentIdx = 0; segmentIdx < region->numSegmentsUsed;
2124 segmentIdx++) {
2125 segment = &region->segment[segmentIdx];
2126
2127 if (memMap->dir == DMA_TO_DEVICE) {
2128 srcPhysAddr = segment->physAddr;
2129 dstPhysAddr = devPhysAddr;
2130 } else {
2131 srcPhysAddr = devPhysAddr;
2132 dstPhysAddr = segment->physAddr;
2133 }
2134
2135 rc =
2136 dma_calculate_descriptor_count(dev, srcPhysAddr,
2137 dstPhysAddr,
2138 segment->
2139 numBytes);
2140 if (rc < 0) {
2141 printk(KERN_ERR
2142 "%s: dma_calculate_descriptor_count failed: %d\n",
2143 __func__, rc);
2144 goto out;
2145 }
2146 numDescriptors += rc;
2147 }
2148 }
2149
2150 /* Adjust the size of the ring, if it isn't big enough */
2151
2152 if (numDescriptors > devAttr->ring.descriptorsAllocated) {
2153 dma_free_descriptor_ring(&devAttr->ring);
2154 rc =
2155 dma_alloc_descriptor_ring(&devAttr->ring,
2156 numDescriptors);
2157 if (rc < 0) {
2158 printk(KERN_ERR
2159 "%s: dma_alloc_descriptor_ring failed: %d\n",
2160 __func__, rc);
2161 goto out;
2162 }
2163 } else {
2164 rc =
2165 dma_init_descriptor_ring(&devAttr->ring,
2166 numDescriptors);
2167 if (rc < 0) {
2168 printk(KERN_ERR
2169 "%s: dma_init_descriptor_ring failed: %d\n",
2170 __func__, rc);
2171 goto out;
2172 }
2173 }
2174
2175 /* Populate the descriptors */
2176
2177 for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2178 region = &memMap->region[regionIdx];
2179
2180 for (segmentIdx = 0; segmentIdx < region->numSegmentsUsed;
2181 segmentIdx++) {
2182 segment = &region->segment[segmentIdx];
2183
2184 if (memMap->dir == DMA_TO_DEVICE) {
2185 srcPhysAddr = segment->physAddr;
2186 dstPhysAddr = devPhysAddr;
2187 } else {
2188 srcPhysAddr = devPhysAddr;
2189 dstPhysAddr = segment->physAddr;
2190 }
2191
2192 rc =
2193 dma_add_descriptors(&devAttr->ring, dev,
2194 srcPhysAddr, dstPhysAddr,
2195 segment->numBytes);
2196 if (rc < 0) {
2197 printk(KERN_ERR
2198 "%s: dma_add_descriptors failed: %d\n",
2199 __func__, rc);
2200 goto out;
2201 }
2202 }
2203 }
2204
2205 rc = 0;
2206
2207out:
2208
2209 up(&memMap->lock);
2210 return rc;
2211}
2212
2213EXPORT_SYMBOL(dma_map_create_descriptor_ring);
2214
2215/****************************************************************************/
2216/**
2217* Maps in a memory region such that it can be used for performing a DMA.
2218*
2219* @return
2220*/
2221/****************************************************************************/
2222
2223int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
2224 int dirtied /* non-zero if any of the pages were modified */
2225 ) {
2226
2227 int rc = 0;
2228 int regionIdx;
2229 int segmentIdx;
2230 DMA_Region_t *region;
2231 DMA_Segment_t *segment;
2232
2233 down(&memMap->lock);
2234
2235 for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2236 region = &memMap->region[regionIdx];
2237
2238 for (segmentIdx = 0; segmentIdx < region->numSegmentsUsed;
2239 segmentIdx++) {
2240 segment = &region->segment[segmentIdx];
2241
2242 switch (region->memType) {
2243 case DMA_MEM_TYPE_VMALLOC:
2244 {
2245 printk(KERN_ERR
2246 "%s: vmalloc'd pages are not yet supported\n",
2247 __func__);
2248 rc = -EINVAL;
2249 goto out;
2250 }
2251
2252 case DMA_MEM_TYPE_KMALLOC:
2253 {
2254#if ALLOW_MAP_OF_KMALLOC_MEMORY
2255 dma_unmap_single(NULL,
2256 segment->physAddr,
2257 segment->numBytes,
2258 memMap->dir);
2259#endif
2260 break;
2261 }
2262
2263 case DMA_MEM_TYPE_DMA:
2264 {
2265 dma_sync_single_for_cpu(NULL,
2266 segment->
2267 physAddr,
2268 segment->
2269 numBytes,
2270 memMap->dir);
2271 break;
2272 }
2273
2274 case DMA_MEM_TYPE_USER:
2275 {
2276 /* Nothing to do here. */
2277
2278 break;
2279 }
2280
2281 default:
2282 {
2283 printk(KERN_ERR
2284 "%s: Unsupported memory type: %d\n",
2285 __func__, region->memType);
2286 rc = -EINVAL;
2287 goto out;
2288 }
2289 }
2290
2291 segment->virtAddr = NULL;
2292 segment->physAddr = 0;
2293 segment->numBytes = 0;
2294 }
2295
2296 if (region->numLockedPages > 0) {
2297 int pageIdx;
2298
2299 /* Some user pages were locked. We need to go and unlock them now. */
2300
2301 for (pageIdx = 0; pageIdx < region->numLockedPages;
2302 pageIdx++) {
2303 struct page *page =
2304 region->lockedPages[pageIdx];
2305
2306 if (memMap->dir == DMA_FROM_DEVICE) {
2307 SetPageDirty(page);
2308 }
2309 page_cache_release(page);
2310 }
2311 kfree(region->lockedPages);
2312 region->numLockedPages = 0;
2313 region->lockedPages = NULL;
2314 }
2315
2316 region->memType = DMA_MEM_TYPE_NONE;
2317 region->virtAddr = NULL;
2318 region->numBytes = 0;
2319 region->numSegmentsUsed = 0;
2320 }
2321 memMap->userTask = NULL;
2322 memMap->numRegionsUsed = 0;
2323 memMap->inUse = 0;
2324
2325out:
2326 up(&memMap->lock);
2327
2328 return rc;
2329}
2330
2331EXPORT_SYMBOL(dma_unmap);
arch/arm/mach-bcmring/include/mach/dma.h+0−196
@@ -26,15 +26,9 @@ · 25 unmodified lines
26/* ---- Include Files ---------------------------------------------------- */26/* ---- Include Files ---------------------------------------------------- */
27 27
28#include <linux/kernel.h>28#include <linux/kernel.h>
29#include <linux/wait.h>
30#include <linux/semaphore.h>29#include <linux/semaphore.h>
31#include <csp/dmacHw.h>30#include <csp/dmacHw.h>
32#include <mach/timer.h>31#include <mach/timer.h>
33#include <linux/scatterlist.h>
34#include <linux/dma-mapping.h>
35#include <linux/mm.h>
36#include <linux/vmalloc.h>
37#include <linux/pagemap.h>
38 32
39/* ---- Constants and Types ---------------------------------------------- */33/* ---- Constants and Types ---------------------------------------------- */
40 34
@@ -111,78 +105,6 @@ typedef struct { · 70 unmodified lines
111 105
112} DMA_DescriptorRing_t;106} DMA_DescriptorRing_t;
113 107
114/****************************************************************************
115*
116* The DMA_MemType_t and DMA_MemMap_t are helper structures used to setup
117* DMA chains from a variety of memory sources.
118*
119*****************************************************************************/
120
121#define DMA_MEM_MAP_MIN_SIZE 4096 /* Pages less than this size are better */
122 /* off not being DMA'd. */
123
124typedef enum {
125 DMA_MEM_TYPE_NONE, /* Not a valid setting */
126 DMA_MEM_TYPE_VMALLOC, /* Memory came from vmalloc call */
127 DMA_MEM_TYPE_KMALLOC, /* Memory came from kmalloc call */
128 DMA_MEM_TYPE_DMA, /* Memory came from dma_alloc_xxx call */
129 DMA_MEM_TYPE_USER, /* Memory came from user space. */
130
131} DMA_MemType_t;
132
133/* A segment represents a physically and virtually contiguous chunk of memory. */
134/* i.e. each segment can be DMA'd */
135/* A user of the DMA code will add memory regions. Each region may need to be */
136/* represented by one or more segments. */
137
138typedef struct {
139 void *virtAddr; /* Virtual address used for this segment */
140 dma_addr_t physAddr; /* Physical address this segment maps to */
141 size_t numBytes; /* Size of the segment, in bytes */
142
143} DMA_Segment_t;
144
145/* A region represents a virtually contiguous chunk of memory, which may be */
146/* made up of multiple segments. */
147
148typedef struct {
149 DMA_MemType_t memType;
150 void *virtAddr;
151 size_t numBytes;
152
153 /* Each region (virtually contiguous) consists of one or more segments. Each */
154 /* segment is virtually and physically contiguous. */
155
156 int numSegmentsUsed;
157 int numSegmentsAllocated;
158 DMA_Segment_t *segment;
159
160 /* When a region corresponds to user memory, we need to lock all of the pages */
161 /* down before we can figure out the physical addresses. The lockedPage array contains */
162 /* the pages that were locked, and which subsequently need to be unlocked once the */
163 /* memory is unmapped. */
164
165 unsigned numLockedPages;
166 struct page **lockedPages;
167
168} DMA_Region_t;
169
170typedef struct {
171 int inUse; /* Is this mapping currently being used? */
172 struct semaphore lock; /* Acquired when using this structure */
173 enum dma_data_direction dir; /* Direction this transfer is intended for */
174
175 /* In the event that we're mapping user memory, we need to know which task */
176 /* the memory is for, so that we can obtain the correct mm locks. */
177
178 struct task_struct *userTask;
179
180 int numRegionsUsed;
181 int numRegionsAllocated;
182 DMA_Region_t *region;
183
184} DMA_MemMap_t;
185
186/****************************************************************************108/****************************************************************************
187*109*
188* The DMA_DeviceAttribute_t contains information which describes a110* The DMA_DeviceAttribute_t contains information which describes a
@@ -568,124 +490,6 @@ int dma_alloc_double_dst_descriptors(DMA_Handle_t handle, /* DMA Handle */ · 379 unmodified lines
568 size_t numBytes /* Number of bytes in each destination buffer */490 size_t numBytes /* Number of bytes in each destination buffer */
569 );491 );
570 492
571/****************************************************************************/
572/**
573* Initializes a DMA_MemMap_t data structure
574*/
575/****************************************************************************/
576
577int dma_init_mem_map(DMA_MemMap_t *memMap /* Stores state information about the map */
578 );
579
580/****************************************************************************/
581/**
582* Releases any memory currently being held by a memory mapping structure.
583*/
584/****************************************************************************/
585
586int dma_term_mem_map(DMA_MemMap_t *memMap /* Stores state information about the map */
587 );
588
589/****************************************************************************/
590/**
591* Looks at a memory address and categorizes it.
592*
593* @return One of the values from the DMA_MemType_t enumeration.
594*/
595/****************************************************************************/
596
597DMA_MemType_t dma_mem_type(void *addr);
598
599/****************************************************************************/
600/**
601* Sets the process (aka userTask) associated with a mem map. This is
602* required if user-mode segments will be added to the mapping.
603*/
604/****************************************************************************/
605
606static inline void dma_mem_map_set_user_task(DMA_MemMap_t *memMap,
607 struct task_struct *task)
608{
609 memMap->userTask = task;
610}
611
612/****************************************************************************/
613/**
614* Looks at a memory address and determines if we support DMA'ing to/from
615* that type of memory.
616*
617* @return boolean -
618* return value != 0 means dma supported
619* return value == 0 means dma not supported
620*/
621/****************************************************************************/
622
623int dma_mem_supports_dma(void *addr);
624
625/****************************************************************************/
626/**
627* Initializes a memory map for use. Since this function acquires a
628* sempaphore within the memory map, it is VERY important that dma_unmap
629* be called when you're finished using the map.
630*/
631/****************************************************************************/
632
633int dma_map_start(DMA_MemMap_t *memMap, /* Stores state information about the map */
634 enum dma_data_direction dir /* Direction that the mapping will be going */
635 );
636
637/****************************************************************************/
638/**
639* Adds a segment of memory to a memory map.
640*
641* @return 0 on success, error code otherwise.
642*/
643/****************************************************************************/
644
645int dma_map_add_region(DMA_MemMap_t *memMap, /* Stores state information about the map */
646 void *mem, /* Virtual address that we want to get a map of */
647 size_t numBytes /* Number of bytes being mapped */
648 );
649
650/****************************************************************************/
651/**
652* Creates a descriptor ring from a memory mapping.
653*
654* @return 0 on success, error code otherwise.
655*/
656/****************************************************************************/
657
658int dma_map_create_descriptor_ring(DMA_Device_t dev, /* DMA device (where the ring is stored) */
659 DMA_MemMap_t *memMap, /* Memory map that will be used */
660 dma_addr_t devPhysAddr /* Physical address of device */
661 );
662
663/****************************************************************************/
664/**
665* Maps in a memory region such that it can be used for performing a DMA.
666*
667* @return
668*/
669/****************************************************************************/
670
671int dma_map_mem(DMA_MemMap_t *memMap, /* Stores state information about the map */
672 void *addr, /* Virtual address that we want to get a map of */
673 size_t count, /* Number of bytes being mapped */
674 enum dma_data_direction dir /* Direction that the mapping will be going */
675 );
676
677/****************************************************************************/
678/**
679* Maps in a memory region such that it can be used for performing a DMA.
680*
681* @return
682*/
683/****************************************************************************/
684
685int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
686 int dirtied /* non-zero if any of the pages were modified */
687 );
688
689/****************************************************************************/493/****************************************************************************/
690/**494/**
691* Initiates a transfer when the descriptors have already been setup.495* Initiates a transfer when the descriptors have already been setup.
arch/arm/mach-davinci/board-da850-evm.c+1−1
@@ -44,7 +44,7 @@ · 43 unmodified lines
44#include <mach/aemif.h>44#include <mach/aemif.h>
45#include <mach/spi.h>45#include <mach/spi.h>
46 46
47#define DA850_EVM_PHY_ID "0:00"47#define DA850_EVM_PHY_ID "davinci_mdio-0:00"
48#define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8)48#define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8)
49#define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15)49#define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15)
50 50
arch/arm/mach-davinci/board-dm365-evm.c+1−1
@@ -54,7 +54,7 @@ static inline int have_tvp7002(void) · 53 unmodified lines
54 return 0;54 return 0;
55}55}
56 56
57#define DM365_EVM_PHY_ID "0:01"57#define DM365_EVM_PHY_ID "davinci_mdio-0:01"
58/*58/*
59 * A MAX-II CPLD is used for various board control functions.59 * A MAX-II CPLD is used for various board control functions.
60 */60 */
arch/arm/mach-davinci/board-dm644x-evm.c+1−1
@@ -40,7 +40,7 @@ · 39 unmodified lines
40#include <mach/usb.h>40#include <mach/usb.h>
41#include <mach/aemif.h>41#include <mach/aemif.h>
42 42
43#define DM644X_EVM_PHY_ID "0:01"43#define DM644X_EVM_PHY_ID "davinci_mdio-0:01"
44#define LXT971_PHY_ID (0x001378e2)44#define LXT971_PHY_ID (0x001378e2)
45#define LXT971_PHY_MASK (0xfffffff0)45#define LXT971_PHY_MASK (0xfffffff0)
46 46
arch/arm/mach-davinci/board-dm646x-evm.c+1−1
@@ -736,7 +736,7 @@ static struct davinci_uart_config uart_config __initdata = { · 735 unmodified lines
736 .enabled_uarts = (1 << 0),736 .enabled_uarts = (1 << 0),
737};737};
738 738
739#define DM646X_EVM_PHY_ID "0:01"739#define DM646X_EVM_PHY_ID "davinci_mdio-0:01"
740/*740/*
741 * The following EDMA channels/slots are not being used by drivers (for741 * The following EDMA channels/slots are not being used by drivers (for
742 * example: Timer, GPIO, UART events etc) on dm646x, hence they are being742 * example: Timer, GPIO, UART events etc) on dm646x, hence they are being
arch/arm/mach-davinci/board-neuros-osd2.c+1−1
@@ -39,7 +39,7 @@ · 38 unmodified lines
39#include <mach/mmc.h>39#include <mach/mmc.h>
40#include <mach/usb.h>40#include <mach/usb.h>
41 41
42#define NEUROS_OSD2_PHY_ID "0:01"42#define NEUROS_OSD2_PHY_ID "davinci_mdio-0:01"
43#define LXT971_PHY_ID 0x001378e243#define LXT971_PHY_ID 0x001378e2
44#define LXT971_PHY_MASK 0xfffffff044#define LXT971_PHY_MASK 0xfffffff0
45 45
arch/arm/mach-davinci/board-omapl138-hawk.c+1−1
@@ -21,7 +21,7 @@ · 20 unmodified lines
21#include <mach/da8xx.h>21#include <mach/da8xx.h>
22#include <mach/mux.h>22#include <mach/mux.h>
23 23
24#define HAWKBOARD_PHY_ID "0:07"24#define HAWKBOARD_PHY_ID "davinci_mdio-0:07"
25#define DA850_HAWK_MMCSD_CD_PIN GPIO_TO_PIN(3, 12)25#define DA850_HAWK_MMCSD_CD_PIN GPIO_TO_PIN(3, 12)
26#define DA850_HAWK_MMCSD_WP_PIN GPIO_TO_PIN(3, 13)26#define DA850_HAWK_MMCSD_WP_PIN GPIO_TO_PIN(3, 13)
27 27
arch/arm/mach-davinci/board-sffsdr.c+1−1
@@ -42,7 +42,7 @@ · 41 unmodified lines
42#include <mach/mux.h>42#include <mach/mux.h>
43#include <mach/usb.h>43#include <mach/usb.h>
44 44
45#define SFFSDR_PHY_ID "0:01"45#define SFFSDR_PHY_ID "davinci_mdio-0:01"
46static struct mtd_partition davinci_sffsdr_nandflash_partition[] = {46static struct mtd_partition davinci_sffsdr_nandflash_partition[] = {
47 /* U-Boot Environment: Block 047 /* U-Boot Environment: Block 0
48 * UBL: Block 148 * UBL: Block 1
arch/arm/mach-davinci/da850.c+0−32
@@ -153,34 +153,6 @@ static struct clk pll1_sysclk3 = { · 152 unmodified lines
153 .div_reg = PLLDIV3,153 .div_reg = PLLDIV3,
154};154};
155 155
156static struct clk pll1_sysclk4 = {
157 .name = "pll1_sysclk4",
158 .parent = &pll1_clk,
159 .flags = CLK_PLL,
160 .div_reg = PLLDIV4,
161};
162
163static struct clk pll1_sysclk5 = {
164 .name = "pll1_sysclk5",
165 .parent = &pll1_clk,
166 .flags = CLK_PLL,
167 .div_reg = PLLDIV5,
168};
169
170static struct clk pll1_sysclk6 = {
171 .name = "pll0_sysclk6",
172 .parent = &pll0_clk,
173 .flags = CLK_PLL,
174 .div_reg = PLLDIV6,
175};
176
177static struct clk pll1_sysclk7 = {
178 .name = "pll1_sysclk7",
179 .parent = &pll1_clk,
180 .flags = CLK_PLL,
181 .div_reg = PLLDIV7,
182};
183
184static struct clk i2c0_clk = {156static struct clk i2c0_clk = {
185 .name = "i2c0",157 .name = "i2c0",
186 .parent = &pll0_aux_clk,158 .parent = &pll0_aux_clk,
@@ -397,10 +369,6 @@ static struct clk_lookup da850_clks[] = { · 210 unmodified lines
397 CLK(NULL, "pll1_aux", &pll1_aux_clk),369 CLK(NULL, "pll1_aux", &pll1_aux_clk),
398 CLK(NULL, "pll1_sysclk2", &pll1_sysclk2),370 CLK(NULL, "pll1_sysclk2", &pll1_sysclk2),
399 CLK(NULL, "pll1_sysclk3", &pll1_sysclk3),371 CLK(NULL, "pll1_sysclk3", &pll1_sysclk3),
400 CLK(NULL, "pll1_sysclk4", &pll1_sysclk4),
401 CLK(NULL, "pll1_sysclk5", &pll1_sysclk5),
402 CLK(NULL, "pll1_sysclk6", &pll1_sysclk6),
403 CLK(NULL, "pll1_sysclk7", &pll1_sysclk7),
404 CLK("i2c_davinci.1", NULL, &i2c0_clk),372 CLK("i2c_davinci.1", NULL, &i2c0_clk),
405 CLK(NULL, "timer0", &timerp64_0_clk),373 CLK(NULL, "timer0", &timerp64_0_clk),
406 CLK("watchdog", NULL, &timerp64_1_clk),374 CLK("watchdog", NULL, &timerp64_1_clk),
arch/arm/mach-dove/common.c+2−1
@@ -28,6 +28,7 @@ · 27 unmodified lines
28#include <asm/mach/arch.h>28#include <asm/mach/arch.h>
29#include <linux/irq.h>29#include <linux/irq.h>
30#include <plat/time.h>30#include <plat/time.h>
31#include <plat/ehci-orion.h>
31#include <plat/common.h>32#include <plat/common.h>
32#include <plat/addr-map.h>33#include <plat/addr-map.h>
33#include "common.h"34#include "common.h"
@@ -71,7 +72,7 @@ void __init dove_map_io(void) · 37 unmodified lines
71 ****************************************************************************/72 ****************************************************************************/
72void __init dove_ehci0_init(void)73void __init dove_ehci0_init(void)
73{74{
74 orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0);75 orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0, EHCI_PHY_NA);
75}76}
76 77
77/*****************************************************************************78/*****************************************************************************
arch/arm/mach-ep93xx/include/mach/dma.h+3−3
@@ -37,7 +37,7 @@ · 36 unmodified lines
37 */37 */
38struct ep93xx_dma_data {38struct ep93xx_dma_data {
39 int port;39 int port;
40 enum dma_data_direction direction;40 enum dma_transfer_direction direction;
41 const char *name;41 const char *name;
42};42};
43 43
@@ -80,14 +80,14 @@ static inline bool ep93xx_dma_chan_is_m2p(struct dma_chan *chan) · 36 unmodified lines
80 * channel supports given DMA direction. Only M2P channels have such80 * channel supports given DMA direction. Only M2P channels have such
81 * limitation, for M2M channels the direction is configurable.81 * limitation, for M2M channels the direction is configurable.
82 */82 */
83static inline enum dma_data_direction83static inline enum dma_transfer_direction
84ep93xx_dma_chan_direction(struct dma_chan *chan)84ep93xx_dma_chan_direction(struct dma_chan *chan)
85{85{
86 if (!ep93xx_dma_chan_is_m2p(chan))86 if (!ep93xx_dma_chan_is_m2p(chan))
87 return DMA_NONE;87 return DMA_NONE;
88 88
89 /* even channels are for TX, odd for RX */89 /* even channels are for TX, odd for RX */
90 return (chan->chan_id % 2 == 0) ? DMA_TO_DEVICE : DMA_FROM_DEVICE;90 return (chan->chan_id % 2 == 0) ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
91}91}
92 92
93#endif /* __ASM_ARCH_DMA_H */93#endif /* __ASM_ARCH_DMA_H */
arch/arm/mach-ep93xx/vision_ep9307.c+3−1
@@ -32,6 +32,7 @@ · 31 unmodified lines
32#include <mach/hardware.h>32#include <mach/hardware.h>
33#include <mach/fb.h>33#include <mach/fb.h>
34#include <mach/ep93xx_spi.h>34#include <mach/ep93xx_spi.h>
35#include <mach/gpio-ep93xx.h>
35 36
36#include <asm/mach-types.h>37#include <asm/mach-types.h>
37#include <asm/mach/map.h>38#include <asm/mach/map.h>
@@ -153,7 +154,6 @@ static struct i2c_board_info vision_i2c_info[] __initdata = { · 115 unmodified lines
153 }, {154 }, {
154 I2C_BOARD_INFO("pca9539", 0x74),155 I2C_BOARD_INFO("pca9539", 0x74),
155 .platform_data = &pca953x_74_gpio_data,156 .platform_data = &pca953x_74_gpio_data,
156 .irq = gpio_to_irq(EP93XX_GPIO_LINE_F(7)),
157 }, {157 }, {
158 I2C_BOARD_INFO("pca9539", 0x75),158 I2C_BOARD_INFO("pca9539", 0x75),
159 .platform_data = &pca953x_75_gpio_data,159 .platform_data = &pca953x_75_gpio_data,
@@ -348,6 +348,8 @@ static void __init vision_init_machine(void) · 188 unmodified lines
348 "pca9539:74"))348 "pca9539:74"))
349 pr_warn("cannot request interrupt gpio for pca9539:74\n");349 pr_warn("cannot request interrupt gpio for pca9539:74\n");
350 350
351 vision_i2c_info[1].irq = gpio_to_irq(EP93XX_GPIO_LINE_F(7));
352
351 ep93xx_register_i2c(&vision_i2c_gpio_data, vision_i2c_info,353 ep93xx_register_i2c(&vision_i2c_gpio_data, vision_i2c_info,
352 ARRAY_SIZE(vision_i2c_info));354 ARRAY_SIZE(vision_i2c_info));
353 ep93xx_register_spi(&vision_spi_master, vision_spi_board_info,355 ep93xx_register_spi(&vision_spi_master, vision_spi_board_info,
arch/arm/mach-exynos/clock-exynos4210.c+2−0
@@ -32,6 +32,7 @@ · 31 unmodified lines
32 32
33#include "common.h"33#include "common.h"
34 34
35#ifdef CONFIG_PM_SLEEP
35static struct sleep_save exynos4210_clock_save[] = {36static struct sleep_save exynos4210_clock_save[] = {
36 SAVE_ITEM(S5P_CLKSRC_IMAGE),37 SAVE_ITEM(S5P_CLKSRC_IMAGE),
37 SAVE_ITEM(S5P_CLKSRC_LCD1),38 SAVE_ITEM(S5P_CLKSRC_LCD1),
@@ -42,6 +43,7 @@ static struct sleep_save exynos4210_clock_save[] = { · 4 unmodified lines
42 SAVE_ITEM(S5P_CLKGATE_IP_LCD1),43 SAVE_ITEM(S5P_CLKGATE_IP_LCD1),
43 SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210),44 SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210),
44};45};
46#endif
45 47
46static struct clksrc_clk *sysclks[] = {48static struct clksrc_clk *sysclks[] = {
47 /* nothing here yet */49 /* nothing here yet */
arch/arm/mach-exynos/clock-exynos4212.c+2−0
@@ -32,12 +32,14 @@ · 31 unmodified lines
32 32
33#include "common.h"33#include "common.h"
34 34
35#ifdef CONFIG_PM_SLEEP
35static struct sleep_save exynos4212_clock_save[] = {36static struct sleep_save exynos4212_clock_save[] = {
36 SAVE_ITEM(S5P_CLKSRC_IMAGE),37 SAVE_ITEM(S5P_CLKSRC_IMAGE),
37 SAVE_ITEM(S5P_CLKDIV_IMAGE),38 SAVE_ITEM(S5P_CLKDIV_IMAGE),
38 SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212),39 SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212),
39 SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212),40 SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212),
40};41};
42#endif
41 43
42static struct clk *clk_src_mpll_user_list[] = {44static struct clk *clk_src_mpll_user_list[] = {
43 [0] = &clk_fin_mpll,45 [0] = &clk_fin_mpll,
arch/arm/mach-exynos/clock.c+2−0
@@ -30,6 +30,7 @@ · 29 unmodified lines
30 30
31#include "common.h"31#include "common.h"
32 32
33#ifdef CONFIG_PM_SLEEP
33static struct sleep_save exynos4_clock_save[] = {34static struct sleep_save exynos4_clock_save[] = {
34 SAVE_ITEM(S5P_CLKDIV_LEFTBUS),35 SAVE_ITEM(S5P_CLKDIV_LEFTBUS),
35 SAVE_ITEM(S5P_CLKGATE_IP_LEFTBUS),36 SAVE_ITEM(S5P_CLKGATE_IP_LEFTBUS),
@@ -93,6 +94,7 @@ static struct sleep_save exynos4_clock_save[] = { · 57 unmodified lines
93 SAVE_ITEM(S5P_CLKGATE_SCLKCPU),94 SAVE_ITEM(S5P_CLKGATE_SCLKCPU),
94 SAVE_ITEM(S5P_CLKGATE_IP_CPU),95 SAVE_ITEM(S5P_CLKGATE_IP_CPU),
95};96};
97#endif
96 98
97struct clk clk_sclk_hdmi27m = {99struct clk clk_sclk_hdmi27m = {
98 .name = "sclk_hdmi27m",100 .name = "sclk_hdmi27m",
arch/arm/mach-exynos/headsmp.S+2−0
@@ -36,6 +36,8 @@ pen: ldr r7, [r6] · 35 unmodified lines
36 * should now contain the SVC stack for this core36 * should now contain the SVC stack for this core
37 */37 */
38 b secondary_startup38 b secondary_startup
39ENDPROC(exynos4_secondary_startup)
39 40
41 .align 2
401: .long .421: .long .
41 .long pen_release43 .long pen_release
arch/arm/mach-exynos/hotplug.c+1−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
16#include <linux/io.h>16#include <linux/io.h>
17 17
18#include <asm/cacheflush.h>18#include <asm/cacheflush.h>
19#include <asm/smp_plat.h>
19 20
20#include <mach/regs-pmu.h>21#include <mach/regs-pmu.h>
21 22
arch/arm/mach-exynos/mach-exynos4-dt.c+6−2
@@ -15,11 +15,13 @@ · 14 unmodified lines
15#include <linux/serial_core.h>15#include <linux/serial_core.h>
16 16
17#include <asm/mach/arch.h>17#include <asm/mach/arch.h>
18#include <asm/hardware/gic.h>
18#include <mach/map.h>19#include <mach/map.h>
19 20
20#include <plat/cpu.h>21#include <plat/cpu.h>
21#include <plat/regs-serial.h>22#include <plat/regs-serial.h>
22#include <plat/exynos4.h>23
24#include "common.h"
23 25
24/*26/*
25 * The following lookup table is used to override device names when devices27 * The following lookup table is used to override device names when devices
@@ -60,7 +62,7 @@ static const struct of_dev_auxdata exynos4210_auxdata_lookup[] __initconst = { · 34 unmodified lines
60 62
61static void __init exynos4210_dt_map_io(void)63static void __init exynos4210_dt_map_io(void)
62{64{
63 s5p_init_io(NULL, 0, S5P_VA_CHIPID);65 exynos_init_io(NULL, 0);
64 s3c24xx_init_clocks(24000000);66 s3c24xx_init_clocks(24000000);
65}67}
66 68
@@ -79,7 +81,9 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") · 12 unmodified lines
79 /* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */81 /* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */
80 .init_irq = exynos4_init_irq,82 .init_irq = exynos4_init_irq,
81 .map_io = exynos4210_dt_map_io,83 .map_io = exynos4210_dt_map_io,
84 .handle_irq = gic_handle_irq,
82 .init_machine = exynos4210_dt_machine_init,85 .init_machine = exynos4210_dt_machine_init,
83 .timer = &exynos4_timer,86 .timer = &exynos4_timer,
84 .dt_compat = exynos4210_dt_compat,87 .dt_compat = exynos4210_dt_compat,
88 .restart = exynos4_restart,
85MACHINE_END89MACHINE_END
arch/arm/mach-exynos/mach-nuri.c+4−4
@@ -220,14 +220,14 @@ static struct s3c_fb_pd_win nuri_fb_win0 = { · 219 unmodified lines
220 .lower_margin = 1,220 .lower_margin = 1,
221 .hsync_len = 48,221 .hsync_len = 48,
222 .vsync_len = 3,222 .vsync_len = 3,
223 .xres = 1280,223 .xres = 1024,
224 .yres = 800,224 .yres = 600,
225 .refresh = 60,225 .refresh = 60,
226 },226 },
227 .max_bpp = 24,227 .max_bpp = 24,
228 .default_bpp = 16,228 .default_bpp = 16,
229 .virtual_x = 1280,229 .virtual_x = 1024,
230 .virtual_y = 800,230 .virtual_y = 2 * 600,
231};231};
232 232
233static struct s3c_fb_platdata nuri_fb_pdata __initdata = {233static struct s3c_fb_platdata nuri_fb_pdata __initdata = {
arch/arm/mach-exynos/mach-origen.c+2−1
@@ -597,7 +597,8 @@ static struct s3c_fb_pd_win origen_fb_win0 = { · 596 unmodified lines
597static struct s3c_fb_platdata origen_lcd_pdata __initdata = {597static struct s3c_fb_platdata origen_lcd_pdata __initdata = {
598 .win[0] = &origen_fb_win0,598 .win[0] = &origen_fb_win0,
599 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,599 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
600 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,600 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
601 VIDCON1_INV_VCLK,
601 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,602 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
602};603};
603 604
arch/arm/mach-exynos/mach-universal_c210.c+1−1
@@ -910,7 +910,7 @@ static struct s5p_fimc_isp_info universal_camera_sensors[] = { · 909 unmodified lines
910 .bus_type = FIMC_MIPI_CSI2,910 .bus_type = FIMC_MIPI_CSI2,
911 .board_info = &m5mols_board_info,911 .board_info = &m5mols_board_info,
912 .i2c_bus_num = 0,912 .i2c_bus_num = 0,
913 .clk_frequency = 21600000UL,913 .clk_frequency = 24000000UL,
914 .csi_data_align = 32,914 .csi_data_align = 32,
915 },915 },
916};916};
arch/arm/mach-exynos/platsmp.c+3−3
@@ -23,8 +23,8 @@ · 22 unmodified lines
23 23
24#include <asm/cacheflush.h>24#include <asm/cacheflush.h>
25#include <asm/hardware/gic.h>25#include <asm/hardware/gic.h>
26#include <asm/smp_plat.h>
26#include <asm/smp_scu.h>27#include <asm/smp_scu.h>
27#include <asm/unified.h>
28 28
29#include <mach/hardware.h>29#include <mach/hardware.h>
30#include <mach/regs-clock.h>30#include <mach/regs-clock.h>
@@ -137,7 +137,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) · 106 unmodified lines
137 while (time_before(jiffies, timeout)) {137 while (time_before(jiffies, timeout)) {
138 smp_rmb();138 smp_rmb();
139 139
140 __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),140 __raw_writel(virt_to_phys(exynos4_secondary_startup),
141 CPU1_BOOT_REG);141 CPU1_BOOT_REG);
142 gic_raise_softirq(cpumask_of(cpu), 1);142 gic_raise_softirq(cpumask_of(cpu), 1);
143 143
@@ -192,6 +192,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) · 48 unmodified lines
192 * until it receives a soft interrupt, and then the192 * until it receives a soft interrupt, and then the
193 * secondary CPU branches to this address.193 * secondary CPU branches to this address.
194 */194 */
195 __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),195 __raw_writel(virt_to_phys(exynos4_secondary_startup),
196 CPU1_BOOT_REG);196 CPU1_BOOT_REG);
197}197}
arch/arm/mach-exynos/pm.c+3−1
@@ -206,7 +206,7 @@ static void exynos4_pm_prepare(void) · 205 unmodified lines
206 206
207}207}
208 208
209static int exynos4_pm_add(struct device *dev)209static int exynos4_pm_add(struct device *dev, struct subsys_interface *sif)
210{210{
211 pm_cpu_prep = exynos4_pm_prepare;211 pm_cpu_prep = exynos4_pm_prepare;
212 pm_cpu_sleep = exynos4_cpu_suspend;212 pm_cpu_sleep = exynos4_cpu_suspend;
@@ -384,7 +384,9 @@ static void exynos4_pm_resume(void) · 171 unmodified lines
384 384
385 exynos4_restore_pll();385 exynos4_restore_pll();
386 386
387#ifdef CONFIG_SMP
387 scu_enable(S5P_VA_SCU);388 scu_enable(S5P_VA_SCU);
389#endif
388 390
389#ifdef CONFIG_CACHE_L2X0391#ifdef CONFIG_CACHE_L2X0
390 s3c_pm_do_restore_core(exynos4_l2cc_save, ARRAY_SIZE(exynos4_l2cc_save));392 s3c_pm_do_restore_core(exynos4_l2cc_save, ARRAY_SIZE(exynos4_l2cc_save));
arch/arm/mach-highbank/highbank.c+2−4
@@ -25,7 +25,7 @@ · 24 unmodified lines
25#include <linux/smp.h>25#include <linux/smp.h>
26 26
27#include <asm/cacheflush.h>27#include <asm/cacheflush.h>
28#include <asm/unified.h>28#include <asm/smp_plat.h>
29#include <asm/smp_scu.h>29#include <asm/smp_scu.h>
30#include <asm/hardware/arm_timer.h>30#include <asm/hardware/arm_timer.h>
31#include <asm/hardware/timer-sp.h>31#include <asm/hardware/timer-sp.h>
@@ -73,10 +73,8 @@ static void __init highbank_map_io(void) · 41 unmodified lines
73 73
74void highbank_set_cpu_jump(int cpu, void *jump_addr)74void highbank_set_cpu_jump(int cpu, void *jump_addr)
75{75{
76#ifdef CONFIG_SMP
77 cpu = cpu_logical_map(cpu);76 cpu = cpu_logical_map(cpu);
78#endif77 writel(virt_to_phys(jump_addr), HB_JUMP_TABLE_VIRT(cpu));
79 writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
80 __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);78 __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
81 outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),79 outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
82 HB_JUMP_TABLE_PHYS(cpu) + 15);80 HB_JUMP_TABLE_PHYS(cpu) + 15);
arch/arm/mach-imx/Kconfig+238−0
@@ -22,6 +22,18 @@ config ARCH_MX25 · 21 unmodified lines
22config MACH_MX2722config MACH_MX27
23 bool23 bool
24 24
25config ARCH_MX5
26 bool
27
28config ARCH_MX50
29 bool
30
31config ARCH_MX51
32 bool
33
34config ARCH_MX53
35 bool
36
25config SOC_IMX137config SOC_IMX1
26 bool38 bool
27 select ARCH_MX139 select ARCH_MX1
@@ -73,6 +85,31 @@ config SOC_IMX35 · 45 unmodified lines
73 select MXC_AVIC85 select MXC_AVIC
74 select SMP_ON_UP if SMP86 select SMP_ON_UP if SMP
75 87
88config SOC_IMX5
89 select CPU_V7
90 select MXC_TZIC
91 select ARCH_MXC_IOMUX_V3
92 select ARCH_MXC_AUDMUX_V2
93 select ARCH_HAS_CPUFREQ
94 select ARCH_MX5
95 bool
96
97config SOC_IMX50
98 bool
99 select SOC_IMX5
100 select ARCH_MX50
101
102config SOC_IMX51
103 bool
104 select SOC_IMX5
105 select ARCH_MX5
106 select ARCH_MX51
107
108config SOC_IMX53
109 bool
110 select SOC_IMX5
111 select ARCH_MX5
112 select ARCH_MX53
76 113
77if ARCH_IMX_V4_V5114if ARCH_IMX_V4_V5
78 115
@@ -592,6 +629,207 @@ config MACH_VPR200 · 513 unmodified lines
592 Include support for VPR200 platform. This includes specific629 Include support for VPR200 platform. This includes specific
593 configurations for the board and its peripherals.630 configurations for the board and its peripherals.
594 631
632comment "i.MX5 platforms:"
633
634config MACH_MX50_RDP
635 bool "Support MX50 reference design platform"
636 depends on BROKEN
637 select SOC_IMX50
638 select IMX_HAVE_PLATFORM_IMX_I2C
639 select IMX_HAVE_PLATFORM_IMX_UART
640 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
641 select IMX_HAVE_PLATFORM_SPI_IMX
642 help
643 Include support for MX50 reference design platform (RDP) board. This
644 includes specific configurations for the board and its peripherals.
645
646comment "i.MX51 machines:"
647
648config MACH_IMX51_DT
649 bool "Support i.MX51 platforms from device tree"
650 select SOC_IMX51
651 select USE_OF
652 select MACH_MX51_BABBAGE
653 help
654 Include support for Freescale i.MX51 based platforms
655 using the device tree for discovery
656
657config MACH_MX51_BABBAGE
658 bool "Support MX51 BABBAGE platforms"
659 select SOC_IMX51
660 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
661 select IMX_HAVE_PLATFORM_IMX2_WDT
662 select IMX_HAVE_PLATFORM_IMX_I2C
663 select IMX_HAVE_PLATFORM_IMX_UART
664 select IMX_HAVE_PLATFORM_MXC_EHCI
665 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
666 select IMX_HAVE_PLATFORM_SPI_IMX
667 help
668 Include support for MX51 Babbage platform, also known as MX51EVK in
669 u-boot. This includes specific configurations for the board and its
670 peripherals.
671
672config MACH_MX51_3DS
673 bool "Support MX51PDK (3DS)"
674 select SOC_IMX51
675 select IMX_HAVE_PLATFORM_IMX2_WDT
676 select IMX_HAVE_PLATFORM_IMX_KEYPAD
677 select IMX_HAVE_PLATFORM_IMX_UART
678 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
679 select IMX_HAVE_PLATFORM_SPI_IMX
680 select MXC_DEBUG_BOARD
681 help
682 Include support for MX51PDK (3DS) platform. This includes specific
683 configurations for the board and its peripherals.
684
685config MACH_EUKREA_CPUIMX51
686 bool "Support Eukrea CPUIMX51 module"
687 select SOC_IMX51
688 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
689 select IMX_HAVE_PLATFORM_IMX_I2C
690 select IMX_HAVE_PLATFORM_IMX_UART
691 select IMX_HAVE_PLATFORM_MXC_EHCI
692 select IMX_HAVE_PLATFORM_MXC_NAND
693 select IMX_HAVE_PLATFORM_SPI_IMX
694 help
695 Include support for Eukrea CPUIMX51 platform. This includes
696 specific configurations for the module and its peripherals.
697
698choice
699 prompt "Baseboard"
700 depends on MACH_EUKREA_CPUIMX51
701 default MACH_EUKREA_MBIMX51_BASEBOARD
702
703config MACH_EUKREA_MBIMX51_BASEBOARD
704 prompt "Eukrea MBIMX51 development board"
705 bool
706 select IMX_HAVE_PLATFORM_IMX_KEYPAD
707 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
708 select LEDS_GPIO_REGISTER
709 help
710 This adds board specific devices that can be found on Eukrea's
711 MBIMX51 evaluation board.
712
713endchoice
714
715config MACH_EUKREA_CPUIMX51SD
716 bool "Support Eukrea CPUIMX51SD module"
717 select SOC_IMX51
718 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
719 select IMX_HAVE_PLATFORM_IMX_I2C
720 select IMX_HAVE_PLATFORM_IMX_UART
721 select IMX_HAVE_PLATFORM_MXC_EHCI
722 select IMX_HAVE_PLATFORM_MXC_NAND
723 select IMX_HAVE_PLATFORM_SPI_IMX
724 help
725 Include support for Eukrea CPUIMX51SD platform. This includes
726 specific configurations for the module and its peripherals.
727
728choice
729 prompt "Baseboard"
730 depends on MACH_EUKREA_CPUIMX51SD
731 default MACH_EUKREA_MBIMXSD51_BASEBOARD
732
733config MACH_EUKREA_MBIMXSD51_BASEBOARD
734 prompt "Eukrea MBIMXSD development board"
735 bool
736 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
737 select LEDS_GPIO_REGISTER
738 help
739 This adds board specific devices that can be found on Eukrea's
740 MBIMXSD evaluation board.
741
742endchoice
743
744config MX51_EFIKA_COMMON
745 bool
746 select SOC_IMX51
747 select IMX_HAVE_PLATFORM_IMX_UART
748 select IMX_HAVE_PLATFORM_MXC_EHCI
749 select IMX_HAVE_PLATFORM_PATA_IMX
750 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
751 select IMX_HAVE_PLATFORM_SPI_IMX
752 select MXC_ULPI if USB_ULPI
753
754config MACH_MX51_EFIKAMX
755 bool "Support MX51 Genesi Efika MX nettop"
756 select LEDS_GPIO_REGISTER
757 select MX51_EFIKA_COMMON
758 help
759 Include support for Genesi Efika MX nettop. This includes specific
760 configurations for the board and its peripherals.
761
762config MACH_MX51_EFIKASB
763 bool "Support MX51 Genesi Efika Smartbook"
764 select LEDS_GPIO_REGISTER
765 select MX51_EFIKA_COMMON
766 help
767 Include support for Genesi Efika Smartbook. This includes specific
768 configurations for the board and its peripherals.
769
770comment "i.MX53 machines:"
771
772config MACH_IMX53_DT
773 bool "Support i.MX53 platforms from device tree"
774 select SOC_IMX53
775 select USE_OF
776 select MACH_MX53_ARD
777 select MACH_MX53_EVK
778 select MACH_MX53_LOCO
779 select MACH_MX53_SMD
780 help
781 Include support for Freescale i.MX53 based platforms
782 using the device tree for discovery
783
784config MACH_MX53_EVK
785 bool "Support MX53 EVK platforms"
786 select SOC_IMX53
787 select IMX_HAVE_PLATFORM_IMX2_WDT
788 select IMX_HAVE_PLATFORM_IMX_UART
789 select IMX_HAVE_PLATFORM_IMX_I2C
790 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
791 select IMX_HAVE_PLATFORM_SPI_IMX
792 select LEDS_GPIO_REGISTER
793 help
794 Include support for MX53 EVK platform. This includes specific
795 configurations for the board and its peripherals.
796
797config MACH_MX53_SMD
798 bool "Support MX53 SMD platforms"
799 select SOC_IMX53
800 select IMX_HAVE_PLATFORM_IMX2_WDT
801 select IMX_HAVE_PLATFORM_IMX_I2C
802 select IMX_HAVE_PLATFORM_IMX_UART
803 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
804 help
805 Include support for MX53 SMD platform. This includes specific
806 configurations for the board and its peripherals.
807
808config MACH_MX53_LOCO
809 bool "Support MX53 LOCO platforms"
810 select SOC_IMX53
811 select IMX_HAVE_PLATFORM_IMX2_WDT
812 select IMX_HAVE_PLATFORM_IMX_I2C
813 select IMX_HAVE_PLATFORM_IMX_UART
814 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
815 select IMX_HAVE_PLATFORM_GPIO_KEYS
816 select LEDS_GPIO_REGISTER
817 help
818 Include support for MX53 LOCO platform. This includes specific
819 configurations for the board and its peripherals.
820
821config MACH_MX53_ARD
822 bool "Support MX53 ARD platforms"
823 select SOC_IMX53
824 select IMX_HAVE_PLATFORM_IMX2_WDT
825 select IMX_HAVE_PLATFORM_IMX_I2C
826 select IMX_HAVE_PLATFORM_IMX_UART
827 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
828 select IMX_HAVE_PLATFORM_GPIO_KEYS
829 help
830 Include support for MX53 ARD platform. This includes specific
831 configurations for the board and its peripherals.
832
595comment "i.MX6 family:"833comment "i.MX6 family:"
596 834
597config SOC_IMX6Q835config SOC_IMX6Q
arch/arm/mach-imx/Makefile+21−0
@@ -11,6 +11,8 @@ obj-$(CONFIG_SOC_IMX27) += clock-imx27.o mm-imx27.o ehci-imx27.o · 10 unmodified lines
11obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clock-imx31.o iomux-imx31.o ehci-imx31.o11obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clock-imx31.o iomux-imx31.o ehci-imx31.o
12obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clock-imx35.o ehci-imx35.o12obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clock-imx35.o ehci-imx35.o
13 13
14obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clock-mx51-mx53.o ehci-imx5.o pm-imx5.o cpu_op-mx51.o
15
14# Support for CMOS sensor interface16# Support for CMOS sensor interface
15obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o17obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o
16 18
@@ -75,3 +77,22 @@ obj-$(CONFIG_SOC_IMX6Q) += clock-imx6q.o mach-imx6q.o · 58 unmodified lines
75ifeq ($(CONFIG_PM),y)77ifeq ($(CONFIG_PM),y)
76obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o78obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o
77endif79endif
80
81# i.MX5 based machines
82obj-$(CONFIG_MACH_MX51_BABBAGE) += mach-mx51_babbage.o
83obj-$(CONFIG_MACH_MX51_3DS) += mach-mx51_3ds.o
84obj-$(CONFIG_MACH_MX53_EVK) += mach-mx53_evk.o
85obj-$(CONFIG_MACH_MX53_SMD) += mach-mx53_smd.o
86obj-$(CONFIG_MACH_MX53_LOCO) += mach-mx53_loco.o
87obj-$(CONFIG_MACH_MX53_ARD) += mach-mx53_ard.o
88obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += mach-cpuimx51.o
89obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
90obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += mach-cpuimx51sd.o
91obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
92obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
93obj-$(CONFIG_MACH_MX51_EFIKAMX) += mach-mx51_efikamx.o
94obj-$(CONFIG_MACH_MX51_EFIKASB) += mach-mx51_efikasb.o
95obj-$(CONFIG_MACH_MX50_RDP) += mach-mx50_rdp.o
96
97obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
98obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
arch/arm/mach-imx/Makefile.boot+12−0
@@ -22,6 +22,18 @@ zreladdr-$(CONFIG_SOC_IMX35) += 0x80008000 · 21 unmodified lines
22params_phys-$(CONFIG_SOC_IMX35) := 0x8000010022params_phys-$(CONFIG_SOC_IMX35) := 0x80000100
23initrd_phys-$(CONFIG_SOC_IMX35) := 0x8080000023initrd_phys-$(CONFIG_SOC_IMX35) := 0x80800000
24 24
25zreladdr-$(CONFIG_SOC_IMX50) += 0x70008000
26params_phys-$(CONFIG_SOC_IMX50) := 0x70000100
27initrd_phys-$(CONFIG_SOC_IMX50) := 0x70800000
28
29zreladdr-$(CONFIG_SOC_IMX51) += 0x90008000
30params_phys-$(CONFIG_SOC_IMX51) := 0x90000100
31initrd_phys-$(CONFIG_SOC_IMX51) := 0x90800000
32
33zreladdr-$(CONFIG_SOC_IMX53) += 0x70008000
34params_phys-$(CONFIG_SOC_IMX53) := 0x70000100
35initrd_phys-$(CONFIG_SOC_IMX53) := 0x70800000
36
25zreladdr-$(CONFIG_SOC_IMX6Q) += 0x1000800037zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000
26params_phys-$(CONFIG_SOC_IMX6Q) := 0x1000010038params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100
27initrd_phys-$(CONFIG_SOC_IMX6Q) := 0x1080000039initrd_phys-$(CONFIG_SOC_IMX6Q) := 0x10800000
arch/arm/mach-imx/clock-imx6q.c+11−0
@@ -814,6 +814,16 @@ DEF_PFD(pll3_pfd_540m, PFD_480, PFD1, &pll3_usb_otg); · 813 unmodified lines
814DEF_PFD(pll3_pfd_508m, PFD_480, PFD2, &pll3_usb_otg);814DEF_PFD(pll3_pfd_508m, PFD_480, PFD2, &pll3_usb_otg);
815DEF_PFD(pll3_pfd_454m, PFD_480, PFD3, &pll3_usb_otg);815DEF_PFD(pll3_pfd_454m, PFD_480, PFD3, &pll3_usb_otg);
816 816
817static unsigned long twd_clk_get_rate(struct clk *clk)
818{
819 return clk_get_rate(clk->parent) / 2;
820}
821
822static struct clk twd_clk = {
823 .parent = &arm_clk,
824 .get_rate = twd_clk_get_rate,
825};
826
817static unsigned long pll2_200m_get_rate(struct clk *clk)827static unsigned long pll2_200m_get_rate(struct clk *clk)
818{828{
819 return clk_get_rate(clk->parent) / 2;829 return clk_get_rate(clk->parent) / 2;
@@ -1894,6 +1904,7 @@ static struct clk_lookup lookups[] = { · 1074 unmodified lines
1894 _REGISTER_CLOCK("20ec000.sdma", NULL, sdma_clk),1904 _REGISTER_CLOCK("20ec000.sdma", NULL, sdma_clk),
1895 _REGISTER_CLOCK("20bc000.wdog", NULL, dummy_clk),1905 _REGISTER_CLOCK("20bc000.wdog", NULL, dummy_clk),
1896 _REGISTER_CLOCK("20c0000.wdog", NULL, dummy_clk),1906 _REGISTER_CLOCK("20c0000.wdog", NULL, dummy_clk),
1907 _REGISTER_CLOCK("smp_twd", NULL, twd_clk),
1897 _REGISTER_CLOCK(NULL, "ckih", ckih_clk),1908 _REGISTER_CLOCK(NULL, "ckih", ckih_clk),
1898 _REGISTER_CLOCK(NULL, "ckil_clk", ckil_clk),1909 _REGISTER_CLOCK(NULL, "ckil_clk", ckil_clk),
1899 _REGISTER_CLOCK(NULL, "aips_tz1_clk", aips_tz1_clk),1910 _REGISTER_CLOCK(NULL, "aips_tz1_clk", aips_tz1_clk),
arch/arm/mach-imx/clock-mx51-mx53.crenamed from arch/arm/mach-mx5/clock-mx51-mx53.c+1−1
@@ -23,7 +23,7 @@ · 22 unmodified lines
23#include <mach/common.h>23#include <mach/common.h>
24#include <mach/clock.h>24#include <mach/clock.h>
25 25
26#include "crm_regs.h"26#include "crm-regs-imx5.h"
27 27
28/* External clock values passed-in by the board code */28/* External clock values passed-in by the board code */
29static unsigned long external_high_reference, external_low_reference;29static unsigned long external_high_reference, external_low_reference;
arch/arm/mach-imx/cpu-imx5.crenamed from arch/arm/mach-mx5/cpu.c+0−0

File renamed without changes.

arch/arm/mach-imx/cpu_op-mx51.crenamed from arch/arm/mach-mx5/cpu_op-mx51.c+0−0

File renamed without changes.

arch/arm/mach-imx/cpu_op-mx51.hrenamed from arch/arm/mach-mx5/cpu_op-mx51.h+0−0

File renamed without changes.

arch/arm/mach-imx/crm-regs-imx5.hrenamed from arch/arm/mach-mx5/crm_regs.h+0−0

File renamed without changes.

arch/arm/mach-imx/devices-imx50.hrenamed from arch/arm/mach-mx5/devices-imx50.h+0−0

File renamed without changes.

arch/arm/mach-imx/devices-imx51.hrenamed from arch/arm/mach-mx5/devices-imx51.h+0−0

File renamed without changes.

arch/arm/mach-imx/devices-imx53.hrenamed from arch/arm/mach-mx5/devices-imx53.h+0−0

File renamed without changes.

arch/arm/mach-imx/efika.hrenamed from arch/arm/mach-mx5/efika.h+0−0

File renamed without changes.

arch/arm/mach-imx/ehci-imx5.crenamed from arch/arm/mach-mx5/ehci.c+0−0

File renamed without changes.

arch/arm/mach-imx/eukrea_mbimx51-baseboard.crenamed from arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c+0−0

File renamed without changes.

arch/arm/mach-imx/eukrea_mbimxsd-baseboard.crenamed from arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c+0−0

File renamed without changes.

arch/arm/mach-imx/imx51-dt.crenamed from arch/arm/mach-mx5/imx51-dt.c+0−0

File renamed without changes.

arch/arm/mach-imx/imx53-dt.crenamed from arch/arm/mach-mx5/imx53-dt.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-cpuimx51.crenamed from arch/arm/mach-mx5/board-cpuimx51.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-cpuimx51sd.crenamed from arch/arm/mach-mx5/board-cpuimx51sd.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx50_rdp.crenamed from arch/arm/mach-mx5/board-mx50_rdp.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_3ds.crenamed from arch/arm/mach-mx5/board-mx51_3ds.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_babbage.crenamed from arch/arm/mach-mx5/board-mx51_babbage.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_efikamx.crenamed from arch/arm/mach-mx5/board-mx51_efikamx.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_efikasb.crenamed from arch/arm/mach-mx5/board-mx51_efikasb.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx53_ard.crenamed from arch/arm/mach-mx5/board-mx53_ard.c+3−2
@@ -32,7 +32,6 @@ · 31 unmodified lines
32#include <asm/mach/arch.h>32#include <asm/mach/arch.h>
33#include <asm/mach/time.h>33#include <asm/mach/time.h>
34 34
35#include "crm_regs.h"
36#include "devices-imx53.h"35#include "devices-imx53.h"
37 36
38#define ARD_ETHERNET_INT_B IMX_GPIO_NR(2, 31)37#define ARD_ETHERNET_INT_B IMX_GPIO_NR(2, 31)
@@ -189,8 +188,10 @@ static int weim_cs_config(void) · 150 unmodified lines
189 return -ENOMEM;188 return -ENOMEM;
190 189
191 iomuxc_base = ioremap(MX53_IOMUXC_BASE_ADDR, SZ_4K);190 iomuxc_base = ioremap(MX53_IOMUXC_BASE_ADDR, SZ_4K);
192 if (!iomuxc_base)191 if (!iomuxc_base) {
192 iounmap(weim_base);
193 return -ENOMEM;193 return -ENOMEM;
194 }
194 195
195 /* CS1 timings for LAN9220 */196 /* CS1 timings for LAN9220 */
196 writel(0x20001, (weim_base + 0x18));197 writel(0x20001, (weim_base + 0x18));
arch/arm/mach-imx/mach-mx53_evk.crenamed from arch/arm/mach-mx5/board-mx53_evk.c+0−1
@@ -37,7 +37,6 @@ · 36 unmodified lines
37#define EVK_ECSPI1_CS1 IMX_GPIO_NR(3, 19)37#define EVK_ECSPI1_CS1 IMX_GPIO_NR(3, 19)
38#define MX53EVK_LED IMX_GPIO_NR(7, 7)38#define MX53EVK_LED IMX_GPIO_NR(7, 7)
39 39
40#include "crm_regs.h"
41#include "devices-imx53.h"40#include "devices-imx53.h"
42 41
43static iomux_v3_cfg_t mx53_evk_pads[] = {42static iomux_v3_cfg_t mx53_evk_pads[] = {
arch/arm/mach-imx/mach-mx53_loco.crenamed from arch/arm/mach-mx5/board-mx53_loco.c+0−1
@@ -32,7 +32,6 @@ · 31 unmodified lines
32#include <asm/mach/arch.h>32#include <asm/mach/arch.h>
33#include <asm/mach/time.h>33#include <asm/mach/time.h>
34 34
35#include "crm_regs.h"
36#include "devices-imx53.h"35#include "devices-imx53.h"
37 36
38#define MX53_LOCO_POWER IMX_GPIO_NR(1, 8)37#define MX53_LOCO_POWER IMX_GPIO_NR(1, 8)
arch/arm/mach-imx/mach-mx53_smd.crenamed from arch/arm/mach-mx5/board-mx53_smd.c+0−1
@@ -31,7 +31,6 @@ · 30 unmodified lines
31#include <asm/mach/arch.h>31#include <asm/mach/arch.h>
32#include <asm/mach/time.h>32#include <asm/mach/time.h>
33 33
34#include "crm_regs.h"
35#include "devices-imx53.h"34#include "devices-imx53.h"
36 35
37#define SMD_FEC_PHY_RST IMX_GPIO_NR(7, 6)36#define SMD_FEC_PHY_RST IMX_GPIO_NR(7, 6)
arch/arm/mach-imx/mm-imx5.crenamed from arch/arm/mach-mx5/mm.c+0−0

File renamed without changes.

arch/arm/mach-imx/mx51_efika.crenamed from arch/arm/mach-mx5/mx51_efika.c+0−0

File renamed without changes.

arch/arm/mach-imx/pm-imx5.crenamed from arch/arm/mach-mx5/system.c+80−9
@@ -1,8 +1,6 @@
1/*1/*
2 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.2 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3 */3 *
4
5/*
6 * The code contained herein is licensed under the GNU General Public4 * The code contained herein is licensed under the GNU General Public
7 * License. You may obtain a copy of the GNU General Public License5 * License. You may obtain a copy of the GNU General Public License
8 * Version 2 or later at the following locations:6 * Version 2 or later at the following locations:
@@ -10,14 +8,22 @@ · 1 unmodified line
10 * http://www.opensource.org/licenses/gpl-license.html8 * http://www.opensource.org/licenses/gpl-license.html
11 * http://www.gnu.org/copyleft/gpl.html9 * http://www.gnu.org/copyleft/gpl.html
12 */10 */
13#include <linux/platform_device.h>11#include <linux/suspend.h>
12#include <linux/clk.h>
14#include <linux/io.h>13#include <linux/io.h>
15#include <mach/hardware.h>14#include <linux/err.h>
15#include <asm/cacheflush.h>
16#include <asm/tlbflush.h>
16#include <mach/common.h>17#include <mach/common.h>
17#include "crm_regs.h"18#include <mach/hardware.h>
19#include "crm-regs-imx5.h"
20
21static struct clk *gpc_dvfs_clk;
18 22
19/* set cpu low power mode before WFI instruction. This function is called23/*
20 * mx5 because it can be used for mx50, mx51, and mx53.*/24 * set cpu low power mode before WFI instruction. This function is called
25 * mx5 because it can be used for mx50, mx51, and mx53.
26 */
21void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)27void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
22{28{
23 u32 plat_lpc, arm_srpgcr, ccm_clpcr;29 u32 plat_lpc, arm_srpgcr, ccm_clpcr;
@@ -80,3 +86,68 @@ void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode) · 56 unmodified lines
80 __raw_writel(empgc1, MXC_SRPG_EMPGC1_SRPGCR);86 __raw_writel(empgc1, MXC_SRPG_EMPGC1_SRPGCR);
81 }87 }
82}88}
89
90static int mx5_suspend_prepare(void)
91{
92 return clk_enable(gpc_dvfs_clk);
93}
94
95static int mx5_suspend_enter(suspend_state_t state)
96{
97 switch (state) {
98 case PM_SUSPEND_MEM:
99 mx5_cpu_lp_set(STOP_POWER_OFF);
100 break;
101 case PM_SUSPEND_STANDBY:
102 mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
103 break;
104 default:
105 return -EINVAL;
106 }
107
108 if (state == PM_SUSPEND_MEM) {
109 local_flush_tlb_all();
110 flush_cache_all();
111
112 /*clear the EMPGC0/1 bits */
113 __raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
114 __raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
115 }
116 cpu_do_idle();
117 return 0;
118}
119
120static void mx5_suspend_finish(void)
121{
122 clk_disable(gpc_dvfs_clk);
123}
124
125static int mx5_pm_valid(suspend_state_t state)
126{
127 return (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX);
128}
129
130static const struct platform_suspend_ops mx5_suspend_ops = {
131 .valid = mx5_pm_valid,
132 .prepare = mx5_suspend_prepare,
133 .enter = mx5_suspend_enter,
134 .finish = mx5_suspend_finish,
135};
136
137static int __init mx5_pm_init(void)
138{
139 if (!cpu_is_mx51() && !cpu_is_mx53())
140 return 0;
141
142 if (gpc_dvfs_clk == NULL)
143 gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
144
145 if (!IS_ERR(gpc_dvfs_clk)) {
146 if (cpu_is_mx51())
147 suspend_set_ops(&mx5_suspend_ops);
148 } else
149 return -EPERM;
150
151 return 0;
152}
153device_initcall(mx5_pm_init);
arch/arm/mach-imx/src.c+2−6
@@ -15,7 +15,7 @@ · 14 unmodified lines
15#include <linux/of.h>15#include <linux/of.h>
16#include <linux/of_address.h>16#include <linux/of_address.h>
17#include <linux/smp.h>17#include <linux/smp.h>
18#include <asm/unified.h>18#include <asm/smp_plat.h>
19 19
20#define SRC_SCR 0x00020#define SRC_SCR 0x000
21#define SRC_GPR1 0x02021#define SRC_GPR1 0x020
@@ -25,10 +25,6 @@ · 3 unmodified lines
25 25
26static void __iomem *src_base;26static void __iomem *src_base;
27 27
28#ifndef CONFIG_SMP
29#define cpu_logical_map(cpu) 0
30#endif
31
32void imx_enable_cpu(int cpu, bool enable)28void imx_enable_cpu(int cpu, bool enable)
33{29{
34 u32 mask, val;30 u32 mask, val;
@@ -43,7 +39,7 @@ void imx_enable_cpu(int cpu, bool enable) · 8 unmodified lines
43void imx_set_cpu_jump(int cpu, void *jump_addr)39void imx_set_cpu_jump(int cpu, void *jump_addr)
44{40{
45 cpu = cpu_logical_map(cpu);41 cpu = cpu_logical_map(cpu);
46 writel_relaxed(BSYM(virt_to_phys(jump_addr)),42 writel_relaxed(virt_to_phys(jump_addr),
47 src_base + SRC_GPR1 + cpu * 8);43 src_base + SRC_GPR1 + cpu * 8);
48}44}
49 45
arch/arm/mach-kirkwood/common.c+2−1
@@ -27,6 +27,7 @@ · 26 unmodified lines
27#include <plat/cache-feroceon-l2.h>27#include <plat/cache-feroceon-l2.h>
28#include <plat/mvsdio.h>28#include <plat/mvsdio.h>
29#include <plat/orion_nand.h>29#include <plat/orion_nand.h>
30#include <plat/ehci-orion.h>
30#include <plat/common.h>31#include <plat/common.h>
31#include <plat/time.h>32#include <plat/time.h>
32#include <plat/addr-map.h>33#include <plat/addr-map.h>
@@ -73,7 +74,7 @@ unsigned int kirkwood_clk_ctrl = CGC_DUNIT | CGC_RESERVED; · 40 unmodified lines
73void __init kirkwood_ehci_init(void)74void __init kirkwood_ehci_init(void)
74{75{
75 kirkwood_clk_ctrl |= CGC_USB0;76 kirkwood_clk_ctrl |= CGC_USB0;
76 orion_ehci_init(USB_PHYS_BASE, IRQ_KIRKWOOD_USB);77 orion_ehci_init(USB_PHYS_BASE, IRQ_KIRKWOOD_USB, EHCI_PHY_NA);
77}78}
78 79
79 80
arch/arm/mach-kirkwood/mpp.h+160−160
@@ -31,314 +31,314 @@ · 30 unmodified lines
31#define MPP_F6282_MASK MPP( 0, 0x0, 0, 0, 0, 0, 0, 0, 1 )31#define MPP_F6282_MASK MPP( 0, 0x0, 0, 0, 0, 0, 0, 0, 1 )
32 32
33#define MPP0_GPIO MPP( 0, 0x0, 1, 1, 1, 1, 1, 1, 1 )33#define MPP0_GPIO MPP( 0, 0x0, 1, 1, 1, 1, 1, 1, 1 )
34#define MPP0_NF_IO2 MPP( 0, 0x1, 1, 1, 1, 1, 1, 1, 1 )34#define MPP0_NF_IO2 MPP( 0, 0x1, 0, 0, 1, 1, 1, 1, 1 )
35#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 1, 1, 1, 1, 1, 1 )35#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 0, 1, 1, 1, 1, 1 )
36 36
37#define MPP1_GPO MPP( 1, 0x0, 0, 1, 1, 1, 1, 1, 1 )37#define MPP1_GPO MPP( 1, 0x0, 0, 1, 1, 1, 1, 1, 1 )
38#define MPP1_NF_IO3 MPP( 1, 0x1, 1, 1, 1, 1, 1, 1, 1 )38#define MPP1_NF_IO3 MPP( 1, 0x1, 0, 0, 1, 1, 1, 1, 1 )
39#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 1, 1, 1, 1, 1, 1 )39#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 0, 1, 1, 1, 1, 1 )
40 40
41#define MPP2_GPO MPP( 2, 0x0, 0, 1, 1, 1, 1, 1, 1 )41#define MPP2_GPO MPP( 2, 0x0, 0, 1, 1, 1, 1, 1, 1 )
42#define MPP2_NF_IO4 MPP( 2, 0x1, 1, 1, 1, 1, 1, 1, 1 )42#define MPP2_NF_IO4 MPP( 2, 0x1, 0, 0, 1, 1, 1, 1, 1 )
43#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 1, 1, 1, 1, 1, 1 )43#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 0, 1, 1, 1, 1, 1 )
44 44
45#define MPP3_GPO MPP( 3, 0x0, 0, 1, 1, 1, 1, 1, 1 )45#define MPP3_GPO MPP( 3, 0x0, 0, 1, 1, 1, 1, 1, 1 )
46#define MPP3_NF_IO5 MPP( 3, 0x1, 1, 1, 1, 1, 1, 1, 1 )46#define MPP3_NF_IO5 MPP( 3, 0x1, 0, 0, 1, 1, 1, 1, 1 )
47#define MPP3_SPI_MISO MPP( 3, 0x2, 1, 0, 1, 1, 1, 1, 1 )47#define MPP3_SPI_MISO MPP( 3, 0x2, 0, 0, 1, 1, 1, 1, 1 )
48 48
49#define MPP4_GPIO MPP( 4, 0x0, 1, 1, 1, 1, 1, 1, 1 )49#define MPP4_GPIO MPP( 4, 0x0, 1, 1, 1, 1, 1, 1, 1 )
50#define MPP4_NF_IO6 MPP( 4, 0x1, 1, 1, 1, 1, 1, 1, 1 )50#define MPP4_NF_IO6 MPP( 4, 0x1, 0, 0, 1, 1, 1, 1, 1 )
51#define MPP4_UART0_RXD MPP( 4, 0x2, 1, 0, 1, 1, 1, 1, 1 )51#define MPP4_UART0_RXD MPP( 4, 0x2, 0, 0, 1, 1, 1, 1, 1 )
52#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 1, 0, 0, 1, 1, 1 )52#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 0, 0, 0, 1, 1, 1 )
53#define MPP4_LCD_VGA_HSYNC MPP( 4, 0xb, 0, 0, 0, 0, 0, 0, 1 )53#define MPP4_LCD_VGA_HSYNC MPP( 4, 0xb, 0, 0, 0, 0, 0, 0, 1 )
54#define MPP4_PTP_CLK MPP( 4, 0xd, 1, 0, 1, 1, 1, 1, 0 )54#define MPP4_PTP_CLK MPP( 4, 0xd, 0, 0, 1, 1, 1, 1, 0 )
55 55
56#define MPP5_GPO MPP( 5, 0x0, 0, 1, 1, 1, 1, 1, 1 )56#define MPP5_GPO MPP( 5, 0x0, 0, 1, 1, 1, 1, 1, 1 )
57#define MPP5_NF_IO7 MPP( 5, 0x1, 1, 1, 1, 1, 1, 1, 1 )57#define MPP5_NF_IO7 MPP( 5, 0x1, 0, 0, 1, 1, 1, 1, 1 )
58#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 1, 1, 1, 1, 1, 1 )58#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 0, 1, 1, 1, 1, 1 )
59#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 1, 1, 1, 1, 1, 0 )59#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 0, 1, 1, 1, 1, 0 )
60#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 1, 0, 1, 1, 1, 1 )60#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 0, 0, 1, 1, 1, 1 )
61#define MPP5_LCD_VGA_VSYNC MPP( 5, 0xb, 0, 0, 0, 0, 0, 0, 1 )61#define MPP5_LCD_VGA_VSYNC MPP( 5, 0xb, 0, 0, 0, 0, 0, 0, 1 )
62 62
63#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 1, 1, 1, 1, 1, 1 )63#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 0, 1, 1, 1, 1, 1 )
64#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 1, 1, 1, 1, 1, 1 )64#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 0, 1, 1, 1, 1, 1 )
65#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 1, 1, 1, 1, 1, 0 )65#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 0, 1, 1, 1, 1, 0 )
66 66
67#define MPP7_GPO MPP( 7, 0x0, 0, 1, 1, 1, 1, 1, 1 )67#define MPP7_GPO MPP( 7, 0x0, 0, 1, 1, 1, 1, 1, 1 )
68#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 1, 1, 1, 1, 1, 0 )68#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 0, 1, 1, 1, 1, 0 )
69#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 1, 1, 1, 1, 1, 1 )69#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 0, 1, 1, 1, 1, 1 )
70#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 1, 1, 1, 1, 1, 0 )70#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 0, 1, 1, 1, 1, 0 )
71#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 1, 0, 0, 0, 0, 1 )71#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 0, 0, 0, 0, 0, 1 )
72 72
73#define MPP8_GPIO MPP( 8, 0x0, 1, 1, 1, 1, 1, 1, 1 )73#define MPP8_GPIO MPP( 8, 0x0, 1, 1, 1, 1, 1, 1, 1 )
74#define MPP8_TW0_SDA MPP( 8, 0x1, 1, 1, 1, 1, 1, 1, 1 )74#define MPP8_TW0_SDA MPP( 8, 0x1, 0, 0, 1, 1, 1, 1, 1 )
75#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 1, 1, 1, 1, 1, 1 )75#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 0, 1, 1, 1, 1, 1 )
76#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 1, 1, 1, 1, 1, 1 )76#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 0, 1, 1, 1, 1, 1 )
77#define MPP8_MII0_RXERR MPP( 8, 0x4, 1, 0, 0, 1, 1, 1, 1 )77#define MPP8_MII0_RXERR MPP( 8, 0x4, 0, 0, 0, 1, 1, 1, 1 )
78#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 1, 0, 0, 1, 1, 1 )78#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 0, 0, 0, 1, 1, 1 )
79#define MPP8_PTP_CLK MPP( 8, 0xc, 1, 0, 1, 1, 1, 1, 0 )79#define MPP8_PTP_CLK MPP( 8, 0xc, 0, 0, 1, 1, 1, 1, 0 )
80#define MPP8_MII0_COL MPP( 8, 0xd, 1, 0, 1, 1, 1, 1, 1 )80#define MPP8_MII0_COL MPP( 8, 0xd, 0, 0, 1, 1, 1, 1, 1 )
81 81
82#define MPP9_GPIO MPP( 9, 0x0, 1, 1, 1, 1, 1, 1, 1 )82#define MPP9_GPIO MPP( 9, 0x0, 1, 1, 1, 1, 1, 1, 1 )
83#define MPP9_TW0_SCK MPP( 9, 0x1, 1, 1, 1, 1, 1, 1, 1 )83#define MPP9_TW0_SCK MPP( 9, 0x1, 0, 0, 1, 1, 1, 1, 1 )
84#define MPP9_UART0_CTS MPP( 9, 0x2, 1, 0, 1, 1, 1, 1, 1 )84#define MPP9_UART0_CTS MPP( 9, 0x2, 0, 0, 1, 1, 1, 1, 1 )
85#define MPP9_UART1_CTS MPP( 9, 0x3, 1, 0, 1, 1, 1, 1, 1 )85#define MPP9_UART1_CTS MPP( 9, 0x3, 0, 0, 1, 1, 1, 1, 1 )
86#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 1, 0, 1, 1, 1, 1 )86#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 0, 0, 1, 1, 1, 1 )
87#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 1, 0, 1, 1, 1, 1, 0 )87#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 0, 0, 1, 1, 1, 1, 0 )
88#define MPP9_MII0_CRS MPP( 9, 0xd, 1, 0, 1, 1, 1, 1, 1 )88#define MPP9_MII0_CRS MPP( 9, 0xd, 0, 0, 1, 1, 1, 1, 1 )
89 89
90#define MPP10_GPO MPP( 10, 0x0, 0, 1, 1, 1, 1, 1, 1 )90#define MPP10_GPO MPP( 10, 0x0, 0, 1, 1, 1, 1, 1, 1 )
91#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 1, 1, 1, 1, 1, 1 )91#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 0, 1, 1, 1, 1, 1 )
92#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 1, 1, 1, 1, 1, 1 )92#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 0, 1, 1, 1, 1, 1 )
93#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 1, 0, 0, 1, 1, 1 )93#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 0, 0, 0, 1, 1, 1 )
94#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 1, 1, 1, 1, 1, 0 )94#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 0, 1, 1, 1, 1, 0 )
95 95
96#define MPP11_GPIO MPP( 11, 0x0, 1, 1, 1, 1, 1, 1, 1 )96#define MPP11_GPIO MPP( 11, 0x0, 1, 1, 1, 1, 1, 1, 1 )
97#define MPP11_SPI_MISO MPP( 11, 0x2, 1, 0, 1, 1, 1, 1, 1 )97#define MPP11_SPI_MISO MPP( 11, 0x2, 0, 0, 1, 1, 1, 1, 1 )
98#define MPP11_UART0_RXD MPP( 11, 0x3, 1, 0, 1, 1, 1, 1, 1 )98#define MPP11_UART0_RXD MPP( 11, 0x3, 0, 0, 1, 1, 1, 1, 1 )
99#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 1, 0, 1, 1, 1, 1, 0 )99#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 0, 0, 1, 1, 1, 1, 0 )
100#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 1, 1, 1, 1, 1, 0 )100#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 0, 1, 1, 1, 1, 0 )
101#define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1, 0 )101#define MPP11_PTP_CLK MPP( 11, 0xd, 0, 0, 1, 1, 1, 1, 0 )
102#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1, 1 )102#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 0, 0, 1, 1, 1, 1 )
103 103
104#define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1, 1 )104#define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1, 1 )
105#define MPP12_GPIO MPP( 12, 0x0, 1, 1, 0, 0, 0, 1, 0 )105#define MPP12_GPIO MPP( 12, 0x0, 1, 1, 0, 0, 0, 1, 0 )
106#define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1, 1 )106#define MPP12_SD_CLK MPP( 12, 0x1, 0, 0, 1, 1, 1, 1, 1 )
107#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 1, 0, 0, 0, 0, 1 )107#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 0, 0, 0, 0, 0, 1 )
108#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 1, 0, 0, 0, 0, 1 )108#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 0, 0, 0, 0, 0, 1 )
109#define MPP12_TW1_SDA MPP( 12, 0xd, 1, 0, 0, 0, 0, 0, 1 )109#define MPP12_TW1_SDA MPP( 12, 0xd, 0, 0, 0, 0, 0, 0, 1 )
110 110
111#define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1, 1 )111#define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1, 1 )
112#define MPP13_SD_CMD MPP( 13, 0x1, 1, 1, 1, 1, 1, 1, 1 )112#define MPP13_SD_CMD MPP( 13, 0x1, 0, 0, 1, 1, 1, 1, 1 )
113#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 1, 1, 1, 1, 1, 1 )113#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 0, 1, 1, 1, 1, 1 )
114#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 1, 0, 0, 0, 0, 1 )114#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 0, 0, 0, 0, 0, 1 )
115#define MPP13_LCDPWM MPP( 13, 0xb, 0, 1, 0, 0, 0, 0, 1 )115#define MPP13_LCDPWM MPP( 13, 0xb, 0, 0, 0, 0, 0, 0, 1 )
116 116
117#define MPP14_GPIO MPP( 14, 0x0, 1, 1, 1, 1, 1, 1, 1 )117#define MPP14_GPIO MPP( 14, 0x0, 1, 1, 1, 1, 1, 1, 1 )
118#define MPP14_SD_D0 MPP( 14, 0x1, 1, 1, 1, 1, 1, 1, 1 )118#define MPP14_SD_D0 MPP( 14, 0x1, 0, 0, 1, 1, 1, 1, 1 )
119#define MPP14_UART1_RXD MPP( 14, 0x3, 1, 0, 1, 1, 1, 1, 1 )119#define MPP14_UART1_RXD MPP( 14, 0x3, 0, 0, 1, 1, 1, 1, 1 )
120#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 1, 0, 0, 1, 1, 1 )120#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 0, 0, 0, 1, 1, 1 )
121#define MPP14_AU_SPDIFI MPP( 14, 0xa, 1, 0, 0, 0, 0, 0, 1 )121#define MPP14_AU_SPDIFI MPP( 14, 0xa, 0, 0, 0, 0, 0, 0, 1 )
122#define MPP14_AU_I2SDI MPP( 14, 0xb, 1, 0, 0, 0, 0, 0, 1 )122#define MPP14_AU_I2SDI MPP( 14, 0xb, 0, 0, 0, 0, 0, 0, 1 )
123#define MPP14_MII0_COL MPP( 14, 0xd, 1, 0, 1, 1, 1, 1, 1 )123#define MPP14_MII0_COL MPP( 14, 0xd, 0, 0, 1, 1, 1, 1, 1 )
124 124
125#define MPP15_GPIO MPP( 15, 0x0, 1, 1, 1, 1, 1, 1, 1 )125#define MPP15_GPIO MPP( 15, 0x0, 1, 1, 1, 1, 1, 1, 1 )
126#define MPP15_SD_D1 MPP( 15, 0x1, 1, 1, 1, 1, 1, 1, 1 )126#define MPP15_SD_D1 MPP( 15, 0x1, 0, 0, 1, 1, 1, 1, 1 )
127#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 1, 1, 1, 1, 1, 1 )127#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 0, 1, 1, 1, 1, 1 )
128#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 1, 1, 1, 1, 1, 1 )128#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 0, 1, 1, 1, 1, 1 )
129#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 1, 0, 1, 1, 1, 1 )129#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 0, 0, 1, 1, 1, 1 )
130#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 1, 0, 0, 0, 0, 1 )130#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 0, 0, 0, 0, 0, 1 )
131 131
132#define MPP16_GPIO MPP( 16, 0x0, 1, 1, 1, 1, 1, 1, 1 )132#define MPP16_GPIO MPP( 16, 0x0, 1, 1, 1, 1, 1, 1, 1 )
133#define MPP16_SD_D2 MPP( 16, 0x1, 1, 1, 1, 1, 1, 1, 1 )133#define MPP16_SD_D2 MPP( 16, 0x1, 0, 0, 1, 1, 1, 1, 1 )
134#define MPP16_UART0_CTS MPP( 16, 0x2, 1, 0, 1, 1, 1, 1, 1 )134#define MPP16_UART0_CTS MPP( 16, 0x2, 0, 0, 1, 1, 1, 1, 1 )
135#define MPP16_UART1_RXD MPP( 16, 0x3, 1, 0, 1, 1, 1, 1, 1 )135#define MPP16_UART1_RXD MPP( 16, 0x3, 0, 0, 1, 1, 1, 1, 1 )
136#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 1, 0, 0, 1, 1, 1 )136#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 0, 0, 0, 1, 1, 1 )
137#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 1, 0, 0, 0, 0, 0, 1 )137#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 0, 0, 0, 0, 0, 0, 1 )
138#define MPP16_MII0_CRS MPP( 16, 0xd, 1, 0, 1, 1, 1, 1, 1 )138#define MPP16_MII0_CRS MPP( 16, 0xd, 0, 0, 1, 1, 1, 1, 1 )
139 139
140#define MPP17_GPIO MPP( 17, 0x0, 1, 1, 1, 1, 1, 1, 1 )140#define MPP17_GPIO MPP( 17, 0x0, 1, 1, 1, 1, 1, 1, 1 )
141#define MPP17_SD_D3 MPP( 17, 0x1, 1, 1, 1, 1, 1, 1, 1 )141#define MPP17_SD_D3 MPP( 17, 0x1, 0, 0, 1, 1, 1, 1, 1 )
142#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 1, 0, 1, 1, 1, 1 )142#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 0, 0, 1, 1, 1, 1 )
143#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 1, 0, 0, 0, 0, 1 )143#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 0, 0, 0, 0, 0, 1 )
144#define MPP17_TW1_SCK MPP( 17, 0xd, 1, 1, 0, 0, 0, 0, 1 )144#define MPP17_TW1_SCK MPP( 17, 0xd, 0, 0, 0, 0, 0, 0, 1 )
145 145
146#define MPP18_GPO MPP( 18, 0x0, 0, 1, 1, 1, 1, 1, 1 )146#define MPP18_GPO MPP( 18, 0x0, 0, 1, 1, 1, 1, 1, 1 )
147#define MPP18_NF_IO0 MPP( 18, 0x1, 1, 1, 1, 1, 1, 1, 1 )147#define MPP18_NF_IO0 MPP( 18, 0x1, 0, 0, 1, 1, 1, 1, 1 )
148#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 1, 0, 0, 0, 0, 1 )148#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 0, 0, 0, 0, 0, 1 )
149 149
150#define MPP19_GPO MPP( 19, 0x0, 0, 1, 1, 1, 1, 1, 1 )150#define MPP19_GPO MPP( 19, 0x0, 0, 1, 1, 1, 1, 1, 1 )
151#define MPP19_NF_IO1 MPP( 19, 0x1, 1, 1, 1, 1, 1, 1, 1 )151#define MPP19_NF_IO1 MPP( 19, 0x1, 0, 0, 1, 1, 1, 1, 1 )
152 152
153#define MPP20_GPIO MPP( 20, 0x0, 1, 1, 0, 1, 1, 1, 1 )153#define MPP20_GPIO MPP( 20, 0x0, 1, 1, 0, 1, 1, 1, 1 )
154#define MPP20_TSMP0 MPP( 20, 0x1, 1, 1, 0, 0, 1, 1, 1 )154#define MPP20_TSMP0 MPP( 20, 0x1, 0, 0, 0, 0, 1, 1, 1 )
155#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 1, 0, 0, 1, 1, 1 )155#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 0, 0, 0, 1, 1, 1 )
156#define MPP20_GE1_TXD0 MPP( 20, 0x3, 0, 0, 0, 1, 1, 1, 1 )156#define MPP20_GE1_TXD0 MPP( 20, 0x3, 0, 0, 0, 1, 1, 1, 1 )
157#define MPP20_AU_SPDIFI MPP( 20, 0x4, 1, 0, 0, 0, 1, 1, 1 )157#define MPP20_AU_SPDIFI MPP( 20, 0x4, 0, 0, 0, 0, 1, 1, 1 )
158#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 1, 0, 0, 1, 1, 1 )158#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 0, 0, 0, 1, 1, 1 )
159#define MPP20_LCD_D0 MPP( 20, 0xb, 0, 0, 0, 0, 0, 0, 1 )159#define MPP20_LCD_D0 MPP( 20, 0xb, 0, 0, 0, 0, 0, 0, 1 )
160 160
161#define MPP21_GPIO MPP( 21, 0x0, 1, 1, 0, 1, 1, 1, 1 )161#define MPP21_GPIO MPP( 21, 0x0, 1, 1, 0, 1, 1, 1, 1 )
162#define MPP21_TSMP1 MPP( 21, 0x1, 1, 1, 0, 0, 1, 1, 1 )162#define MPP21_TSMP1 MPP( 21, 0x1, 0, 0, 0, 0, 1, 1, 1 )
163#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 1, 0, 0, 1, 1, 1 )163#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 0, 0, 0, 1, 1, 1 )
164#define MPP21_GE1_TXD1 MPP( 21, 0x3, 0, 0, 0, 1, 1, 1, 1 )164#define MPP21_GE1_TXD1 MPP( 21, 0x3, 0, 0, 0, 1, 1, 1, 1 )
165#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 1, 0, 0, 1, 1, 1 )165#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 0, 0, 0, 1, 1, 1 )
166#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 1, 0, 1, 1, 1, 1 )166#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 0, 0, 1, 1, 1, 1 )
167#define MPP21_LCD_D1 MPP( 21, 0xb, 0, 0, 0, 0, 0, 0, 1 )167#define MPP21_LCD_D1 MPP( 21, 0xb, 0, 0, 0, 0, 0, 0, 1 )
168 168
169#define MPP22_GPIO MPP( 22, 0x0, 1, 1, 0, 1, 1, 1, 1 )169#define MPP22_GPIO MPP( 22, 0x0, 1, 1, 0, 1, 1, 1, 1 )
170#define MPP22_TSMP2 MPP( 22, 0x1, 1, 1, 0, 0, 1, 1, 1 )170#define MPP22_TSMP2 MPP( 22, 0x1, 0, 0, 0, 0, 1, 1, 1 )
171#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 1, 0, 0, 1, 1, 1 )171#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 0, 0, 0, 1, 1, 1 )
172#define MPP22_GE1_TXD2 MPP( 22, 0x3, 0, 0, 0, 1, 1, 1, 1 )172#define MPP22_GE1_TXD2 MPP( 22, 0x3, 0, 0, 0, 1, 1, 1, 1 )
173#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 1, 0, 0, 1, 1, 1 )173#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 0, 0, 0, 1, 1, 1 )
174#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 1, 0, 0, 1, 1, 1 )174#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 0, 0, 0, 1, 1, 1 )
175#define MPP22_LCD_D2 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )175#define MPP22_LCD_D2 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
176 176
177#define MPP23_GPIO MPP( 23, 0x0, 1, 1, 0, 1, 1, 1, 1 )177#define MPP23_GPIO MPP( 23, 0x0, 1, 1, 0, 1, 1, 1, 1 )
178#define MPP23_TSMP3 MPP( 23, 0x1, 1, 1, 0, 0, 1, 1, 1 )178#define MPP23_TSMP3 MPP( 23, 0x1, 0, 0, 0, 0, 1, 1, 1 )
179#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 1, 0, 0, 0, 1, 1, 1 )179#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 0, 0, 0, 0, 1, 1, 1 )
180#define MPP23_GE1_TXD3 MPP( 23, 0x3, 0, 0, 0, 1, 1, 1, 1 )180#define MPP23_GE1_TXD3 MPP( 23, 0x3, 0, 0, 0, 1, 1, 1, 1 )
181#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 1, 0, 0, 1, 1, 1 )181#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 0, 0, 0, 1, 1, 1 )
182#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 1, 0, 1, 1, 1, 1 )182#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 0, 0, 1, 1, 1, 1 )
183#define MPP23_LCD_D3 MPP( 23, 0xb, 0, 0, 0, 0, 0, 0, 1 )183#define MPP23_LCD_D3 MPP( 23, 0xb, 0, 0, 0, 0, 0, 0, 1 )
184 184
185#define MPP24_GPIO MPP( 24, 0x0, 1, 1, 0, 1, 1, 1, 1 )185#define MPP24_GPIO MPP( 24, 0x0, 1, 1, 0, 1, 1, 1, 1 )
186#define MPP24_TSMP4 MPP( 24, 0x1, 1, 1, 0, 0, 1, 1, 1 )186#define MPP24_TSMP4 MPP( 24, 0x1, 0, 0, 0, 0, 1, 1, 1 )
187#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 1, 0, 0, 1, 1, 1 )187#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 0, 0, 0, 1, 1, 1 )
188#define MPP24_GE1_RXD0 MPP( 24, 0x3, 0, 0, 0, 1, 1, 1, 1 )188#define MPP24_GE1_RXD0 MPP( 24, 0x3, 0, 0, 0, 1, 1, 1, 1 )
189#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 1, 0, 0, 1, 1, 1 )189#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 0, 0, 0, 1, 1, 1 )
190#define MPP24_LCD_D4 MPP( 24, 0xb, 0, 0, 0, 0, 0, 0, 1 )190#define MPP24_LCD_D4 MPP( 24, 0xb, 0, 0, 0, 0, 0, 0, 1 )
191 191
192#define MPP25_GPIO MPP( 25, 0x0, 1, 1, 0, 1, 1, 1, 1 )192#define MPP25_GPIO MPP( 25, 0x0, 1, 1, 0, 1, 1, 1, 1 )
193#define MPP25_TSMP5 MPP( 25, 0x1, 1, 1, 0, 0, 1, 1, 1 )193#define MPP25_TSMP5 MPP( 25, 0x1, 0, 0, 0, 0, 1, 1, 1 )
194#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 1, 0, 0, 1, 1, 1 )194#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 0, 0, 0, 1, 1, 1 )
195#define MPP25_GE1_RXD1 MPP( 25, 0x3, 0, 0, 0, 1, 1, 1, 1 )195#define MPP25_GE1_RXD1 MPP( 25, 0x3, 0, 0, 0, 1, 1, 1, 1 )
196#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 1, 0, 0, 1, 1, 1 )196#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 0, 0, 0, 1, 1, 1 )
197#define MPP25_LCD_D5 MPP( 25, 0xb, 0, 0, 0, 0, 0, 0, 1 )197#define MPP25_LCD_D5 MPP( 25, 0xb, 0, 0, 0, 0, 0, 0, 1 )
198 198
199#define MPP26_GPIO MPP( 26, 0x0, 1, 1, 0, 1, 1, 1, 1 )199#define MPP26_GPIO MPP( 26, 0x0, 1, 1, 0, 1, 1, 1, 1 )
200#define MPP26_TSMP6 MPP( 26, 0x1, 1, 1, 0, 0, 1, 1, 1 )200#define MPP26_TSMP6 MPP( 26, 0x1, 0, 0, 0, 0, 1, 1, 1 )
201#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 1, 0, 0, 0, 1, 1, 1 )201#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 0, 0, 0, 0, 1, 1, 1 )
202#define MPP26_GE1_RXD2 MPP( 26, 0x3, 0, 0, 0, 1, 1, 1, 1 )202#define MPP26_GE1_RXD2 MPP( 26, 0x3, 0, 0, 0, 1, 1, 1, 1 )
203#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 1, 0, 0, 1, 1, 1 )203#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 0, 0, 0, 1, 1, 1 )
204#define MPP26_LCD_D6 MPP( 26, 0xb, 0, 0, 0, 0, 0, 0, 1 )204#define MPP26_LCD_D6 MPP( 26, 0xb, 0, 0, 0, 0, 0, 0, 1 )
205 205
206#define MPP27_GPIO MPP( 27, 0x0, 1, 1, 0, 1, 1, 1, 1 )206#define MPP27_GPIO MPP( 27, 0x0, 1, 1, 0, 1, 1, 1, 1 )
207#define MPP27_TSMP7 MPP( 27, 0x1, 1, 1, 0, 0, 1, 1, 1 )207#define MPP27_TSMP7 MPP( 27, 0x1, 0, 0, 0, 0, 1, 1, 1 )
208#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 1, 0, 0, 1, 1, 1 )208#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 0, 0, 0, 1, 1, 1 )
209#define MPP27_GE1_RXD3 MPP( 27, 0x3, 0, 0, 0, 1, 1, 1, 1 )209#define MPP27_GE1_RXD3 MPP( 27, 0x3, 0, 0, 0, 1, 1, 1, 1 )
210#define MPP27_AU_I2SDI MPP( 27, 0x4, 1, 0, 0, 0, 1, 1, 1 )210#define MPP27_AU_I2SDI MPP( 27, 0x4, 0, 0, 0, 0, 1, 1, 1 )
211#define MPP27_LCD_D7 MPP( 27, 0xb, 0, 0, 0, 0, 0, 0, 1 )211#define MPP27_LCD_D7 MPP( 27, 0xb, 0, 0, 0, 0, 0, 0, 1 )
212 212
213#define MPP28_GPIO MPP( 28, 0x0, 1, 1, 0, 1, 1, 1, 1 )213#define MPP28_GPIO MPP( 28, 0x0, 1, 1, 0, 1, 1, 1, 1 )
214#define MPP28_TSMP8 MPP( 28, 0x1, 1, 1, 0, 0, 1, 1, 1 )214#define MPP28_TSMP8 MPP( 28, 0x1, 0, 0, 0, 0, 1, 1, 1 )
215#define MPP28_TDM_CODEC_INTn MPP( 28, 0x2, 0, 0, 0, 0, 1, 1, 1 )215#define MPP28_TDM_CODEC_INTn MPP( 28, 0x2, 0, 0, 0, 0, 1, 1, 1 )
216#define MPP28_GE1_COL MPP( 28, 0x3, 0, 0, 0, 1, 1, 1, 1 )216#define MPP28_GE1_COL MPP( 28, 0x3, 0, 0, 0, 1, 1, 1, 1 )
217#define MPP28_AU_EXTCLK MPP( 28, 0x4, 1, 0, 0, 0, 1, 1, 1 )217#define MPP28_AU_EXTCLK MPP( 28, 0x4, 0, 0, 0, 0, 1, 1, 1 )
218#define MPP28_LCD_D8 MPP( 28, 0xb, 0, 0, 0, 0, 0, 0, 1 )218#define MPP28_LCD_D8 MPP( 28, 0xb, 0, 0, 0, 0, 0, 0, 1 )
219 219
220#define MPP29_GPIO MPP( 29, 0x0, 1, 1, 0, 1, 1, 1, 1 )220#define MPP29_GPIO MPP( 29, 0x0, 1, 1, 0, 1, 1, 1, 1 )
221#define MPP29_TSMP9 MPP( 29, 0x1, 1, 1, 0, 0, 1, 1, 1 )221#define MPP29_TSMP9 MPP( 29, 0x1, 0, 0, 0, 0, 1, 1, 1 )
222#define MPP29_TDM_CODEC_RSTn MPP( 29, 0x2, 0, 0, 0, 0, 1, 1, 1 )222#define MPP29_TDM_CODEC_RSTn MPP( 29, 0x2, 0, 0, 0, 0, 1, 1, 1 )
223#define MPP29_GE1_TCLK MPP( 29, 0x3, 0, 0, 0, 1, 1, 1, 1 )223#define MPP29_GE1_TCLK MPP( 29, 0x3, 0, 0, 0, 1, 1, 1, 1 )
224#define MPP29_LCD_D9 MPP( 29, 0xb, 0, 0, 0, 0, 0, 0, 1 )224#define MPP29_LCD_D9 MPP( 29, 0xb, 0, 0, 0, 0, 0, 0, 1 )
225 225
226#define MPP30_GPIO MPP( 30, 0x0, 1, 1, 0, 1, 1, 1, 1 )226#define MPP30_GPIO MPP( 30, 0x0, 1, 1, 0, 1, 1, 1, 1 )
227#define MPP30_TSMP10 MPP( 30, 0x1, 1, 1, 0, 0, 1, 1, 1 )227#define MPP30_TSMP10 MPP( 30, 0x1, 0, 0, 0, 0, 1, 1, 1 )
228#define MPP30_TDM_PCLK MPP( 30, 0x2, 1, 1, 0, 0, 1, 1, 1 )228#define MPP30_TDM_PCLK MPP( 30, 0x2, 0, 0, 0, 0, 1, 1, 1 )
229#define MPP30_GE1_RXCTL MPP( 30, 0x3, 0, 0, 0, 1, 1, 1, 1 )229#define MPP30_GE1_RXCTL MPP( 30, 0x3, 0, 0, 0, 1, 1, 1, 1 )
230#define MPP30_LCD_D10 MPP( 30, 0xb, 0, 0, 0, 0, 0, 0, 1 )230#define MPP30_LCD_D10 MPP( 30, 0xb, 0, 0, 0, 0, 0, 0, 1 )
231 231
232#define MPP31_GPIO MPP( 31, 0x0, 1, 1, 0, 1, 1, 1, 1 )232#define MPP31_GPIO MPP( 31, 0x0, 1, 1, 0, 1, 1, 1, 1 )
233#define MPP31_TSMP11 MPP( 31, 0x1, 1, 1, 0, 0, 1, 1, 1 )233#define MPP31_TSMP11 MPP( 31, 0x1, 0, 0, 0, 0, 1, 1, 1 )
234#define MPP31_TDM_FS MPP( 31, 0x2, 1, 1, 0, 0, 1, 1, 1 )234#define MPP31_TDM_FS MPP( 31, 0x2, 0, 0, 0, 0, 1, 1, 1 )
235#define MPP31_GE1_RXCLK MPP( 31, 0x3, 0, 0, 0, 1, 1, 1, 1 )235#define MPP31_GE1_RXCLK MPP( 31, 0x3, 0, 0, 0, 1, 1, 1, 1 )
236#define MPP31_LCD_D11 MPP( 31, 0xb, 0, 0, 0, 0, 0, 0, 1 )236#define MPP31_LCD_D11 MPP( 31, 0xb, 0, 0, 0, 0, 0, 0, 1 )
237 237
238#define MPP32_GPIO MPP( 32, 0x0, 1, 1, 0, 1, 1, 1, 1 )238#define MPP32_GPIO MPP( 32, 0x0, 1, 1, 0, 1, 1, 1, 1 )
239#define MPP32_TSMP12 MPP( 32, 0x1, 1, 1, 0, 0, 1, 1, 1 )239#define MPP32_TSMP12 MPP( 32, 0x1, 0, 0, 0, 0, 1, 1, 1 )
240#define MPP32_TDM_DRX MPP( 32, 0x2, 1, 0, 0, 0, 1, 1, 1 )240#define MPP32_TDM_DRX MPP( 32, 0x2, 0, 0, 0, 0, 1, 1, 1 )
241#define MPP32_GE1_TCLKOUT MPP( 32, 0x3, 0, 0, 0, 1, 1, 1, 1 )241#define MPP32_GE1_TCLKOUT MPP( 32, 0x3, 0, 0, 0, 1, 1, 1, 1 )
242#define MPP32_LCD_D12 MPP( 32, 0xb, 0, 0, 0, 0, 0, 0, 1 )242#define MPP32_LCD_D12 MPP( 32, 0xb, 0, 0, 0, 0, 0, 0, 1 )
243 243
244#define MPP33_GPO MPP( 33, 0x0, 0, 1, 0, 1, 1, 1, 1 )244#define MPP33_GPO MPP( 33, 0x0, 0, 1, 0, 1, 1, 1, 1 )
245#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 1, 0, 0, 1, 1, 1 )245#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 0, 0, 0, 1, 1, 1 )
246#define MPP33_GE1_TXCTL MPP( 33, 0x3, 0, 0, 0, 1, 1, 1, 1 )246#define MPP33_GE1_TXCTL MPP( 33, 0x3, 0, 0, 0, 1, 1, 1, 1 )
247#define MPP33_LCD_D13 MPP( 33, 0xb, 0, 0, 0, 0, 0, 0, 1 )247#define MPP33_LCD_D13 MPP( 33, 0xb, 0, 0, 0, 0, 0, 0, 1 )
248 248
249#define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1, 1 )249#define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1, 1 )
250#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 1, 0, 0, 1, 1, 1 )250#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 0, 0, 0, 1, 1, 1 )
251#define MPP34_GE1_TXEN MPP( 34, 0x3, 0, 0, 0, 1, 1, 1, 1 )251#define MPP34_GE1_TXEN MPP( 34, 0x3, 0, 0, 0, 1, 1, 1, 1 )
252#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 1, 0, 0, 0, 1, 1 )252#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 0, 0, 0, 0, 1, 1 )
253#define MPP34_LCD_D14 MPP( 34, 0xb, 0, 0, 0, 0, 0, 0, 1 )253#define MPP34_LCD_D14 MPP( 34, 0xb, 0, 0, 0, 0, 0, 0, 1 )
254 254
255#define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1, 1 )255#define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1, 1 )
256#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 1, 0, 0, 1, 1, 1 )256#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 0, 0, 0, 1, 1, 1 )
257#define MPP35_GE1_RXERR MPP( 35, 0x3, 0, 0, 0, 1, 1, 1, 1 )257#define MPP35_GE1_RXERR MPP( 35, 0x3, 0, 0, 0, 1, 1, 1, 1 )
258#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 1, 0, 1, 1, 1, 1 )258#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 0, 0, 1, 1, 1, 1 )
259#define MPP35_LCD_D15 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )259#define MPP35_LCD_D15 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
260#define MPP35_MII0_RXERR MPP( 35, 0xc, 1, 0, 1, 1, 1, 1, 1 )260#define MPP35_MII0_RXERR MPP( 35, 0xc, 0, 0, 1, 1, 1, 1, 1 )
261 261
262#define MPP36_GPIO MPP( 36, 0x0, 1, 1, 1, 0, 0, 1, 1 )262#define MPP36_GPIO MPP( 36, 0x0, 1, 1, 1, 0, 0, 1, 1 )
263#define MPP36_TSMP0 MPP( 36, 0x1, 1, 1, 0, 0, 0, 1, 1 )263#define MPP36_TSMP0 MPP( 36, 0x1, 0, 0, 0, 0, 0, 1, 1 )
264#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 1, 0, 0, 0, 1, 1 )264#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 0, 0, 0, 0, 1, 1 )
265#define MPP36_AU_SPDIFI MPP( 36, 0x4, 1, 0, 1, 0, 0, 1, 1 )265#define MPP36_AU_SPDIFI MPP( 36, 0x4, 0, 0, 1, 0, 0, 1, 1 )
266#define MPP36_TW1_SDA MPP( 36, 0xb, 1, 1, 0, 0, 0, 0, 1 )266#define MPP36_TW1_SDA MPP( 36, 0xb, 0, 0, 0, 0, 0, 0, 1 )
267 267
268#define MPP37_GPIO MPP( 37, 0x0, 1, 1, 1, 0, 0, 1, 1 )268#define MPP37_GPIO MPP( 37, 0x0, 1, 1, 1, 0, 0, 1, 1 )
269#define MPP37_TSMP1 MPP( 37, 0x1, 1, 1, 0, 0, 0, 1, 1 )269#define MPP37_TSMP1 MPP( 37, 0x1, 0, 0, 0, 0, 0, 1, 1 )
270#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 1, 0, 0, 0, 1, 1 )270#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 0, 0, 0, 0, 1, 1 )
271#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 1, 1, 0, 0, 1, 1 )271#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 0, 1, 0, 0, 1, 1 )
272#define MPP37_TW1_SCK MPP( 37, 0xb, 1, 1, 0, 0, 0, 0, 1 )272#define MPP37_TW1_SCK MPP( 37, 0xb, 0, 0, 0, 0, 0, 0, 1 )
273 273
274#define MPP38_GPIO MPP( 38, 0x0, 1, 1, 1, 0, 0, 1, 1 )274#define MPP38_GPIO MPP( 38, 0x0, 1, 1, 1, 0, 0, 1, 1 )
275#define MPP38_TSMP2 MPP( 38, 0x1, 1, 1, 0, 0, 0, 1, 1 )275#define MPP38_TSMP2 MPP( 38, 0x1, 0, 0, 0, 0, 0, 1, 1 )
276#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 1, 0, 0, 0, 1, 1 )276#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 0, 0, 0, 0, 1, 1 )
277#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 1, 1, 0, 0, 1, 1 )277#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 0, 1, 0, 0, 1, 1 )
278#define MPP38_LCD_D18 MPP( 38, 0xb, 0, 0, 0, 0, 0, 0, 1 )278#define MPP38_LCD_D18 MPP( 38, 0xb, 0, 0, 0, 0, 0, 0, 1 )
279 279
280#define MPP39_GPIO MPP( 39, 0x0, 1, 1, 1, 0, 0, 1, 1 )280#define MPP39_GPIO MPP( 39, 0x0, 1, 1, 1, 0, 0, 1, 1 )
281#define MPP39_TSMP3 MPP( 39, 0x1, 1, 1, 0, 0, 0, 1, 1 )281#define MPP39_TSMP3 MPP( 39, 0x1, 0, 0, 0, 0, 0, 1, 1 )
282#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 1, 0, 0, 0, 1, 1 )282#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 0, 0, 0, 0, 1, 1 )
283#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 1, 1, 0, 0, 1, 1 )283#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 0, 1, 0, 0, 1, 1 )
284#define MPP39_LCD_D19 MPP( 39, 0xb, 0, 0, 0, 0, 0, 0, 1 )284#define MPP39_LCD_D19 MPP( 39, 0xb, 0, 0, 0, 0, 0, 0, 1 )
285 285
286#define MPP40_GPIO MPP( 40, 0x0, 1, 1, 1, 0, 0, 1, 1 )286#define MPP40_GPIO MPP( 40, 0x0, 1, 1, 1, 0, 0, 1, 1 )
287#define MPP40_TSMP4 MPP( 40, 0x1, 1, 1, 0, 0, 0, 1, 1 )287#define MPP40_TSMP4 MPP( 40, 0x1, 0, 0, 0, 0, 0, 1, 1 )
288#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 1, 0, 0, 0, 1, 1 )288#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 0, 0, 0, 0, 1, 1 )
289#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 1, 1, 0, 0, 1, 1 )289#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 0, 1, 0, 0, 1, 1 )
290#define MPP40_LCD_D20 MPP( 40, 0xb, 0, 0, 0, 0, 0, 0, 1 )290#define MPP40_LCD_D20 MPP( 40, 0xb, 0, 0, 0, 0, 0, 0, 1 )
291 291
292#define MPP41_GPIO MPP( 41, 0x0, 1, 1, 1, 0, 0, 1, 1 )292#define MPP41_GPIO MPP( 41, 0x0, 1, 1, 1, 0, 0, 1, 1 )
293#define MPP41_TSMP5 MPP( 41, 0x1, 1, 1, 0, 0, 0, 1, 1 )293#define MPP41_TSMP5 MPP( 41, 0x1, 0, 0, 0, 0, 0, 1, 1 )
294#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 1, 0, 0, 0, 0, 1, 1 )294#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 0, 0, 0, 0, 0, 1, 1 )
295#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 1, 1, 0, 0, 1, 1 )295#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 0, 1, 0, 0, 1, 1 )
296#define MPP41_LCD_D21 MPP( 41, 0xb, 0, 0, 0, 0, 0, 0, 1 )296#define MPP41_LCD_D21 MPP( 41, 0xb, 0, 0, 0, 0, 0, 0, 1 )
297 297
298#define MPP42_GPIO MPP( 42, 0x0, 1, 1, 1, 0, 0, 1, 1 )298#define MPP42_GPIO MPP( 42, 0x0, 1, 1, 1, 0, 0, 1, 1 )
299#define MPP42_TSMP6 MPP( 42, 0x1, 1, 1, 0, 0, 0, 1, 1 )299#define MPP42_TSMP6 MPP( 42, 0x1, 0, 0, 0, 0, 0, 1, 1 )
300#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 1, 0, 0, 0, 1, 1 )300#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 0, 0, 0, 0, 1, 1 )
301#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 1, 1, 0, 0, 1, 1 )301#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 0, 1, 0, 0, 1, 1 )
302#define MPP42_LCD_D22 MPP( 42, 0xb, 0, 0, 0, 0, 0, 0, 1 )302#define MPP42_LCD_D22 MPP( 42, 0xb, 0, 0, 0, 0, 0, 0, 1 )
303 303
304#define MPP43_GPIO MPP( 43, 0x0, 1, 1, 1, 0, 0, 1, 1 )304#define MPP43_GPIO MPP( 43, 0x0, 1, 1, 1, 0, 0, 1, 1 )
305#define MPP43_TSMP7 MPP( 43, 0x1, 1, 1, 0, 0, 0, 1, 1 )305#define MPP43_TSMP7 MPP( 43, 0x1, 0, 0, 0, 0, 0, 1, 1 )
306#define MPP43_TDM_CODEC_INTn MPP( 43, 0x2, 0, 0, 0, 0, 0, 1, 1 )306#define MPP43_TDM_CODEC_INTn MPP( 43, 0x2, 0, 0, 0, 0, 0, 1, 1 )
307#define MPP43_AU_I2SDI MPP( 43, 0x4, 1, 0, 1, 0, 0, 1, 1 )307#define MPP43_AU_I2SDI MPP( 43, 0x4, 0, 0, 1, 0, 0, 1, 1 )
308#define MPP43_LCD_D23 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )308#define MPP43_LCD_D23 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
309 309
310#define MPP44_GPIO MPP( 44, 0x0, 1, 1, 1, 0, 0, 1, 1 )310#define MPP44_GPIO MPP( 44, 0x0, 1, 1, 1, 0, 0, 1, 1 )
311#define MPP44_TSMP8 MPP( 44, 0x1, 1, 1, 0, 0, 0, 1, 1 )311#define MPP44_TSMP8 MPP( 44, 0x1, 0, 0, 0, 0, 0, 1, 1 )
312#define MPP44_TDM_CODEC_RSTn MPP( 44, 0x2, 0, 0, 0, 0, 0, 1, 1 )312#define MPP44_TDM_CODEC_RSTn MPP( 44, 0x2, 0, 0, 0, 0, 0, 1, 1 )
313#define MPP44_AU_EXTCLK MPP( 44, 0x4, 1, 0, 1, 0, 0, 1, 1 )313#define MPP44_AU_EXTCLK MPP( 44, 0x4, 0, 0, 1, 0, 0, 1, 1 )
314#define MPP44_LCD_CLK MPP( 44, 0xb, 0, 0, 0, 0, 0, 0, 1 )314#define MPP44_LCD_CLK MPP( 44, 0xb, 0, 0, 0, 0, 0, 0, 1 )
315 315
316#define MPP45_GPIO MPP( 45, 0x0, 1, 1, 0, 0, 0, 1, 1 )316#define MPP45_GPIO MPP( 45, 0x0, 1, 1, 0, 0, 0, 1, 1 )
317#define MPP45_TSMP9 MPP( 45, 0x1, 1, 1, 0, 0, 0, 1, 1 )317#define MPP45_TSMP9 MPP( 45, 0x1, 0, 0, 0, 0, 0, 1, 1 )
318#define MPP45_TDM_PCLK MPP( 45, 0x2, 1, 1, 0, 0, 0, 1, 1 )318#define MPP45_TDM_PCLK MPP( 45, 0x2, 0, 0, 0, 0, 0, 1, 1 )
319#define MPP245_LCD_E MPP( 45, 0xb, 0, 0, 0, 0, 0, 0, 1 )319#define MPP245_LCD_E MPP( 45, 0xb, 0, 0, 0, 0, 0, 0, 1 )
320 320
321#define MPP46_GPIO MPP( 46, 0x0, 1, 1, 0, 0, 0, 1, 1 )321#define MPP46_GPIO MPP( 46, 0x0, 1, 1, 0, 0, 0, 1, 1 )
322#define MPP46_TSMP10 MPP( 46, 0x1, 1, 1, 0, 0, 0, 1, 1 )322#define MPP46_TSMP10 MPP( 46, 0x1, 0, 0, 0, 0, 0, 1, 1 )
323#define MPP46_TDM_FS MPP( 46, 0x2, 1, 1, 0, 0, 0, 1, 1 )323#define MPP46_TDM_FS MPP( 46, 0x2, 0, 0, 0, 0, 0, 1, 1 )
324#define MPP46_LCD_HSYNC MPP( 46, 0xb, 0, 0, 0, 0, 0, 0, 1 )324#define MPP46_LCD_HSYNC MPP( 46, 0xb, 0, 0, 0, 0, 0, 0, 1 )
325 325
326#define MPP47_GPIO MPP( 47, 0x0, 1, 1, 0, 0, 0, 1, 1 )326#define MPP47_GPIO MPP( 47, 0x0, 1, 1, 0, 0, 0, 1, 1 )
327#define MPP47_TSMP11 MPP( 47, 0x1, 1, 1, 0, 0, 0, 1, 1 )327#define MPP47_TSMP11 MPP( 47, 0x1, 0, 0, 0, 0, 0, 1, 1 )
328#define MPP47_TDM_DRX MPP( 47, 0x2, 1, 0, 0, 0, 0, 1, 1 )328#define MPP47_TDM_DRX MPP( 47, 0x2, 0, 0, 0, 0, 0, 1, 1 )
329#define MPP47_LCD_VSYNC MPP( 47, 0xb, 0, 0, 0, 0, 0, 0, 1 )329#define MPP47_LCD_VSYNC MPP( 47, 0xb, 0, 0, 0, 0, 0, 0, 1 )
330 330
331#define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1, 1 )331#define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1, 1 )
332#define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1, 1 )332#define MPP48_TSMP12 MPP( 48, 0x1, 0, 0, 0, 0, 0, 1, 1 )
333#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 1, 0, 0, 0, 1, 1 )333#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 0, 0, 0, 0, 1, 1 )
334#define MPP48_LCD_D16 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )334#define MPP48_LCD_D16 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
335 335
336#define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1, 0 )336#define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1, 0 )
337#define MPP49_GPO MPP( 49, 0x0, 0, 1, 0, 0, 0, 0, 1 )337#define MPP49_GPO MPP( 49, 0x0, 0, 1, 0, 0, 0, 0, 1 )
338#define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1, 0 )338#define MPP49_TSMP9 MPP( 49, 0x1, 0, 0, 0, 0, 0, 1, 0 )
339#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 1, 0, 0, 0, 1, 1 )339#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 0, 0, 0, 0, 1, 1 )
340#define MPP49_PTP_CLK MPP( 49, 0x5, 1, 0, 0, 0, 0, 1, 0 )340#define MPP49_PTP_CLK MPP( 49, 0x5, 0, 0, 0, 0, 0, 1, 0 )
341#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 1, 0, 0, 0, 0, 1 )341#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 0, 0, 0, 0, 0, 1 )
342#define MPP49_LCD_D17 MPP( 49, 0xb, 0, 0, 0, 0, 0, 0, 1 )342#define MPP49_LCD_D17 MPP( 49, 0xb, 0, 0, 0, 0, 0, 0, 1 )
343 343
344#define MPP_MAX 49344#define MPP_MAX 49
arch/arm/mach-msm/headsmp.S+1−0
@@ -34,6 +34,7 @@ pen: ldr r7, [r6] · 33 unmodified lines
34 * should now contain the SVC stack for this core34 * should now contain the SVC stack for this core
35 */35 */
36 b secondary_startup36 b secondary_startup
37ENDPROC(msm_secondary_startup)
37 38
38 .align39 .align
391: .long .401: .long .
arch/arm/mach-msm/hotplug.c+1−0
@@ -11,6 +11,7 @@ · 10 unmodified lines
11#include <linux/smp.h>11#include <linux/smp.h>
12 12
13#include <asm/cacheflush.h>13#include <asm/cacheflush.h>
14#include <asm/smp_plat.h>
14 15
15extern volatile int pen_release;16extern volatile int pen_release;
16 17
arch/arm/mach-msm/platsmp.c+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
20#include <asm/cacheflush.h>20#include <asm/cacheflush.h>
21#include <asm/cputype.h>21#include <asm/cputype.h>
22#include <asm/mach-types.h>22#include <asm/mach-types.h>
23#include <asm/smp_plat.h>
23 24
24#include <mach/msm_iomap.h>25#include <mach/msm_iomap.h>
25 26
arch/arm/mach-msm/vreg.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
19#include <linux/device.h>19#include <linux/device.h>
20#include <linux/init.h>20#include <linux/init.h>
21#include <linux/debugfs.h>21#include <linux/debugfs.h>
22#include <linux/module.h>
22#include <linux/string.h>23#include <linux/string.h>
23#include <mach/vreg.h>24#include <mach/vreg.h>
24 25
arch/arm/mach-mv78xx0/common.c+2−1
@@ -19,6 +19,7 @@ · 18 unmodified lines
19#include <mach/mv78xx0.h>19#include <mach/mv78xx0.h>
20#include <mach/bridge-regs.h>20#include <mach/bridge-regs.h>
21#include <plat/cache-feroceon-l2.h>21#include <plat/cache-feroceon-l2.h>
22#include <plat/ehci-orion.h>
22#include <plat/orion_nand.h>23#include <plat/orion_nand.h>
23#include <plat/time.h>24#include <plat/time.h>
24#include <plat/common.h>25#include <plat/common.h>
@@ -169,7 +170,7 @@ void __init mv78xx0_map_io(void) · 144 unmodified lines
169 ****************************************************************************/170 ****************************************************************************/
170void __init mv78xx0_ehci0_init(void)171void __init mv78xx0_ehci0_init(void)
171{172{
172 orion_ehci_init(USB0_PHYS_BASE, IRQ_MV78XX0_USB_0);173 orion_ehci_init(USB0_PHYS_BASE, IRQ_MV78XX0_USB_0, EHCI_PHY_NA);
173}174}
174 175
175 176
arch/arm/mach-mv78xx0/mpp.h+113−113
@@ -24,296 +24,296 @@ · 23 unmodified lines
24#define MPP_78100_A0_MASK MPP(0, 0x0, 0, 0, 1)24#define MPP_78100_A0_MASK MPP(0, 0x0, 0, 0, 1)
25 25
26#define MPP0_GPIO MPP(0, 0x0, 1, 1, 1)26#define MPP0_GPIO MPP(0, 0x0, 1, 1, 1)
27#define MPP0_GE0_COL MPP(0, 0x1, 1, 0, 1)27#define MPP0_GE0_COL MPP(0, 0x1, 0, 0, 1)
28#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 1, 1)28#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 0, 1)
29#define MPP0_UNUSED MPP(0, 0x3, 0, 0, 1)29#define MPP0_UNUSED MPP(0, 0x3, 0, 0, 1)
30 30
31#define MPP1_GPIO MPP(1, 0x0, 1, 1, 1)31#define MPP1_GPIO MPP(1, 0x0, 1, 1, 1)
32#define MPP1_GE0_RXERR MPP(1, 0x1, 1, 0, 1)32#define MPP1_GE0_RXERR MPP(1, 0x1, 0, 0, 1)
33#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 1, 1)33#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 0, 1)
34#define MPP1_UNUSED MPP(1, 0x3, 0, 0, 1)34#define MPP1_UNUSED MPP(1, 0x3, 0, 0, 1)
35 35
36#define MPP2_GPIO MPP(2, 0x0, 1, 1, 1)36#define MPP2_GPIO MPP(2, 0x0, 1, 1, 1)
37#define MPP2_GE0_CRS MPP(2, 0x1, 1, 0, 1)37#define MPP2_GE0_CRS MPP(2, 0x1, 0, 0, 1)
38#define MPP2_GE1_RXCTL MPP(2, 0x2, 1, 0, 1)38#define MPP2_GE1_RXCTL MPP(2, 0x2, 0, 0, 1)
39#define MPP2_UNUSED MPP(2, 0x3, 0, 0, 1)39#define MPP2_UNUSED MPP(2, 0x3, 0, 0, 1)
40 40
41#define MPP3_GPIO MPP(3, 0x0, 1, 1, 1)41#define MPP3_GPIO MPP(3, 0x0, 1, 1, 1)
42#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 1, 1)42#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 0, 1)
43#define MPP3_GE1_RXCLK MPP(3, 0x2, 1, 0, 1)43#define MPP3_GE1_RXCLK MPP(3, 0x2, 0, 0, 1)
44#define MPP3_UNUSED MPP(3, 0x3, 0, 0, 1)44#define MPP3_UNUSED MPP(3, 0x3, 0, 0, 1)
45 45
46#define MPP4_GPIO MPP(4, 0x0, 1, 1, 1)46#define MPP4_GPIO MPP(4, 0x0, 1, 1, 1)
47#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 1, 1)47#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 0, 1)
48#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 1, 1)48#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 0, 1)
49#define MPP4_UNUSED MPP(4, 0x3, 0, 0, 1)49#define MPP4_UNUSED MPP(4, 0x3, 0, 0, 1)
50 50
51#define MPP5_GPIO MPP(5, 0x0, 1, 1, 1)51#define MPP5_GPIO MPP(5, 0x0, 1, 1, 1)
52#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 1, 1)52#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 0, 1)
53#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 1, 1)53#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 0, 1)
54#define MPP5_UNUSED MPP(5, 0x3, 0, 0, 1)54#define MPP5_UNUSED MPP(5, 0x3, 0, 0, 1)
55 55
56#define MPP6_GPIO MPP(6, 0x0, 1, 1, 1)56#define MPP6_GPIO MPP(6, 0x0, 1, 1, 1)
57#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 1, 1)57#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 0, 1)
58#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 1, 1)58#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 0, 1)
59#define MPP6_UNUSED MPP(6, 0x3, 0, 0, 1)59#define MPP6_UNUSED MPP(6, 0x3, 0, 0, 1)
60 60
61#define MPP7_GPIO MPP(7, 0x0, 1, 1, 1)61#define MPP7_GPIO MPP(7, 0x0, 1, 1, 1)
62#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 1, 1)62#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 0, 1)
63#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 1, 1)63#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 0, 1)
64#define MPP7_UNUSED MPP(7, 0x3, 0, 0, 1)64#define MPP7_UNUSED MPP(7, 0x3, 0, 0, 1)
65 65
66#define MPP8_GPIO MPP(8, 0x0, 1, 1, 1)66#define MPP8_GPIO MPP(8, 0x0, 1, 1, 1)
67#define MPP8_GE0_RXD4 MPP(8, 0x1, 1, 0, 1)67#define MPP8_GE0_RXD4 MPP(8, 0x1, 0, 0, 1)
68#define MPP8_GE1_RXD0 MPP(8, 0x2, 1, 0, 1)68#define MPP8_GE1_RXD0 MPP(8, 0x2, 0, 0, 1)
69#define MPP8_UNUSED MPP(8, 0x3, 0, 0, 1)69#define MPP8_UNUSED MPP(8, 0x3, 0, 0, 1)
70 70
71#define MPP9_GPIO MPP(9, 0x0, 1, 1, 1)71#define MPP9_GPIO MPP(9, 0x0, 1, 1, 1)
72#define MPP9_GE0_RXD5 MPP(9, 0x1, 1, 0, 1)72#define MPP9_GE0_RXD5 MPP(9, 0x1, 0, 0, 1)
73#define MPP9_GE1_RXD1 MPP(9, 0x2, 1, 0, 1)73#define MPP9_GE1_RXD1 MPP(9, 0x2, 0, 0, 1)
74#define MPP9_UNUSED MPP(9, 0x3, 0, 0, 1)74#define MPP9_UNUSED MPP(9, 0x3, 0, 0, 1)
75 75
76#define MPP10_GPIO MPP(10, 0x0, 1, 1, 1)76#define MPP10_GPIO MPP(10, 0x0, 1, 1, 1)
77#define MPP10_GE0_RXD6 MPP(10, 0x1, 1, 0, 1)77#define MPP10_GE0_RXD6 MPP(10, 0x1, 0, 0, 1)
78#define MPP10_GE1_RXD2 MPP(10, 0x2, 1, 0, 1)78#define MPP10_GE1_RXD2 MPP(10, 0x2, 0, 0, 1)
79#define MPP10_UNUSED MPP(10, 0x3, 0, 0, 1)79#define MPP10_UNUSED MPP(10, 0x3, 0, 0, 1)
80 80
81#define MPP11_GPIO MPP(11, 0x0, 1, 1, 1)81#define MPP11_GPIO MPP(11, 0x0, 1, 1, 1)
82#define MPP11_GE0_RXD7 MPP(11, 0x1, 1, 0, 1)82#define MPP11_GE0_RXD7 MPP(11, 0x1, 0, 0, 1)
83#define MPP11_GE1_RXD3 MPP(11, 0x2, 1, 0, 1)83#define MPP11_GE1_RXD3 MPP(11, 0x2, 0, 0, 1)
84#define MPP11_UNUSED MPP(11, 0x3, 0, 0, 1)84#define MPP11_UNUSED MPP(11, 0x3, 0, 0, 1)
85 85
86#define MPP12_GPIO MPP(12, 0x0, 1, 1, 1)86#define MPP12_GPIO MPP(12, 0x0, 1, 1, 1)
87#define MPP12_M_BB MPP(12, 0x3, 1, 0, 1)87#define MPP12_M_BB MPP(12, 0x3, 0, 0, 1)
88#define MPP12_UA0_CTSn MPP(12, 0x4, 1, 0, 1)88#define MPP12_UA0_CTSn MPP(12, 0x4, 0, 0, 1)
89#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 1, 1)89#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 0, 1)
90#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 1, 1)90#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 0, 1)
91#define MPP12_UNUSED MPP(12, 0x1, 0, 0, 1)91#define MPP12_UNUSED MPP(12, 0x1, 0, 0, 1)
92 92
93#define MPP13_GPIO MPP(13, 0x0, 1, 1, 1)93#define MPP13_GPIO MPP(13, 0x0, 1, 1, 1)
94#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 1, 1)94#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 0, 1)
95#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 1, 1)95#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 0, 1)
96#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 1, 1)96#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 0, 1)
97#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 1, 1)97#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 0, 1)
98#define MPP13_UNUSED MPP(13, 0x1, 0, 0, 1)98#define MPP13_UNUSED MPP(13, 0x1, 0, 0, 1)
99 99
100#define MPP14_GPIO MPP(14, 0x0, 1, 1, 1)100#define MPP14_GPIO MPP(14, 0x0, 1, 1, 1)
101#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 1, 1)101#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 0, 1)
102#define MPP14_UA1_CTSn MPP(14, 0x4, 1, 0, 1)102#define MPP14_UA1_CTSn MPP(14, 0x4, 0, 0, 1)
103#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 1, 1)103#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 0, 1)
104#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 1, 1)104#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 0, 1)
105#define MPP14_UNUSED MPP(14, 0x1, 0, 0, 1)105#define MPP14_UNUSED MPP(14, 0x1, 0, 0, 1)
106 106
107#define MPP15_GPIO MPP(15, 0x0, 1, 1, 1)107#define MPP15_GPIO MPP(15, 0x0, 1, 1, 1)
108#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 1, 1)108#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 0, 1)
109#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 1, 1)109#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 0, 1)
110#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 1, 1)110#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 0, 1)
111#define MPP15_TDM_SMISO MPP(15, 0x6, 1, 0, 1)111#define MPP15_TDM_SMISO MPP(15, 0x6, 0, 0, 1)
112#define MPP15_UNUSED MPP(15, 0x1, 0, 0, 1)112#define MPP15_UNUSED MPP(15, 0x1, 0, 0, 1)
113 113
114#define MPP16_GPIO MPP(16, 0x0, 1, 1, 1)114#define MPP16_GPIO MPP(16, 0x0, 1, 1, 1)
115#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 1, 1)115#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 0, 1)
116#define MPP16_UA2_TXD MPP(16, 0x4, 0, 1, 1)116#define MPP16_UA2_TXD MPP(16, 0x4, 0, 0, 1)
117#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 1, 1)117#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 0, 1)
118#define MPP16_TDM_INTn MPP(16, 0x6, 1, 0, 1)118#define MPP16_TDM_INTn MPP(16, 0x6, 0, 0, 1)
119#define MPP16_UNUSED MPP(16, 0x1, 0, 0, 1)119#define MPP16_UNUSED MPP(16, 0x1, 0, 0, 1)
120 120
121 121
122#define MPP17_GPIO MPP(17, 0x0, 1, 1, 1)122#define MPP17_GPIO MPP(17, 0x0, 1, 1, 1)
123#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 1, 1)123#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 0, 1)
124#define MPP17_UA2_RXD MPP(17, 0x4, 1, 0, 1)124#define MPP17_UA2_RXD MPP(17, 0x4, 0, 0, 1)
125#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 1, 1)125#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 0, 1)
126#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 1, 1)126#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 0, 1)
127#define MPP17_UNUSED MPP(17, 0x1, 0, 0, 1)127#define MPP17_UNUSED MPP(17, 0x1, 0, 0, 1)
128 128
129 129
130#define MPP18_GPIO MPP(18, 0x0, 1, 1, 1)130#define MPP18_GPIO MPP(18, 0x0, 1, 1, 1)
131#define MPP18_UA0_CTSn MPP(18, 0x4, 1, 0, 1)131#define MPP18_UA0_CTSn MPP(18, 0x4, 0, 0, 1)
132#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 1, 1)132#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 0, 1)
133#define MPP18_UNUSED MPP(18, 0x1, 0, 0, 1)133#define MPP18_UNUSED MPP(18, 0x1, 0, 0, 1)
134 134
135 135
136 136
137#define MPP19_GPIO MPP(19, 0x0, 1, 1, 1)137#define MPP19_GPIO MPP(19, 0x0, 1, 1, 1)
138#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 1, 1)138#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 0, 1)
139#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 1, 1)139#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 0, 1)
140#define MPP19_UNUSED MPP(19, 0x1, 0, 0, 1)140#define MPP19_UNUSED MPP(19, 0x1, 0, 0, 1)
141 141
142 142
143#define MPP20_GPIO MPP(20, 0x0, 1, 1, 1)143#define MPP20_GPIO MPP(20, 0x0, 1, 1, 1)
144#define MPP20_UA1_CTSs MPP(20, 0x4, 1, 0, 1)144#define MPP20_UA1_CTSs MPP(20, 0x4, 0, 0, 1)
145#define MPP20_TDM_PCLK MPP(20, 0x6, 1, 1, 0)145#define MPP20_TDM_PCLK MPP(20, 0x6, 0, 0, 0)
146#define MPP20_UNUSED MPP(20, 0x1, 0, 0, 1)146#define MPP20_UNUSED MPP(20, 0x1, 0, 0, 1)
147 147
148 148
149 149
150#define MPP21_GPIO MPP(21, 0x0, 1, 1, 1)150#define MPP21_GPIO MPP(21, 0x0, 1, 1, 1)
151#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 1, 1)151#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 0, 1)
152#define MPP21_TDM_FSYNC MPP(21, 0x6, 1, 1, 0)152#define MPP21_TDM_FSYNC MPP(21, 0x6, 0, 0, 0)
153#define MPP21_UNUSED MPP(21, 0x1, 0, 0, 1)153#define MPP21_UNUSED MPP(21, 0x1, 0, 0, 1)
154 154
155 155
156 156
157#define MPP22_GPIO MPP(22, 0x0, 1, 1, 1)157#define MPP22_GPIO MPP(22, 0x0, 1, 1, 1)
158#define MPP22_UA3_TDX MPP(22, 0x4, 0, 1, 1)158#define MPP22_UA3_TDX MPP(22, 0x4, 0, 0, 1)
159#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 1, 1)159#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 0, 1)
160#define MPP22_TDM_DRX MPP(22, 0x6, 1, 0, 1)160#define MPP22_TDM_DRX MPP(22, 0x6, 0, 0, 1)
161#define MPP22_UNUSED MPP(22, 0x1, 0, 0, 1)161#define MPP22_UNUSED MPP(22, 0x1, 0, 0, 1)
162 162
163 163
164 164
165#define MPP23_GPIO MPP(23, 0x0, 1, 1, 1)165#define MPP23_GPIO MPP(23, 0x0, 1, 1, 1)
166#define MPP23_UA3_RDX MPP(23, 0x4, 1, 0, 1)166#define MPP23_UA3_RDX MPP(23, 0x4, 0, 0, 1)
167#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 1, 1)167#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 0, 1)
168#define MPP23_TDM_DTX MPP(23, 0x6, 0, 1, 1)168#define MPP23_TDM_DTX MPP(23, 0x6, 0, 0, 1)
169#define MPP23_UNUSED MPP(23, 0x1, 0, 0, 1)169#define MPP23_UNUSED MPP(23, 0x1, 0, 0, 1)
170 170
171 171
172#define MPP24_GPIO MPP(24, 0x0, 1, 1, 1)172#define MPP24_GPIO MPP(24, 0x0, 1, 1, 1)
173#define MPP24_UA2_TXD MPP(24, 0x4, 0, 1, 1)173#define MPP24_UA2_TXD MPP(24, 0x4, 0, 0, 1)
174#define MPP24_TDM_INTn MPP(24, 0x6, 1, 0, 1)174#define MPP24_TDM_INTn MPP(24, 0x6, 0, 0, 1)
175#define MPP24_UNUSED MPP(24, 0x1, 0, 0, 1)175#define MPP24_UNUSED MPP(24, 0x1, 0, 0, 1)
176 176
177 177
178#define MPP25_GPIO MPP(25, 0x0, 1, 1, 1)178#define MPP25_GPIO MPP(25, 0x0, 1, 1, 1)
179#define MPP25_UA2_RXD MPP(25, 0x4, 1, 0, 1)179#define MPP25_UA2_RXD MPP(25, 0x4, 0, 0, 1)
180#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 1, 1)180#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 0, 1)
181#define MPP25_UNUSED MPP(25, 0x1, 0, 0, 1)181#define MPP25_UNUSED MPP(25, 0x1, 0, 0, 1)
182 182
183 183
184#define MPP26_GPIO MPP(26, 0x0, 1, 1, 1)184#define MPP26_GPIO MPP(26, 0x0, 1, 1, 1)
185#define MPP26_UA2_CTSn MPP(26, 0x4, 1, 0, 1)185#define MPP26_UA2_CTSn MPP(26, 0x4, 0, 0, 1)
186#define MPP26_TDM_PCLK MPP(26, 0x6, 1, 1, 1)186#define MPP26_TDM_PCLK MPP(26, 0x6, 0, 0, 1)
187#define MPP26_UNUSED MPP(26, 0x1, 0, 0, 1)187#define MPP26_UNUSED MPP(26, 0x1, 0, 0, 1)
188 188
189 189
190#define MPP27_GPIO MPP(27, 0x0, 1, 1, 1)190#define MPP27_GPIO MPP(27, 0x0, 1, 1, 1)
191#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 1, 1)191#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 0, 1)
192#define MPP27_TDM_FSYNC MPP(27, 0x6, 1, 1, 1)192#define MPP27_TDM_FSYNC MPP(27, 0x6, 0, 0, 1)
193#define MPP27_UNUSED MPP(27, 0x1, 0, 0, 1)193#define MPP27_UNUSED MPP(27, 0x1, 0, 0, 1)
194 194
195 195
196#define MPP28_GPIO MPP(28, 0x0, 1, 1, 1)196#define MPP28_GPIO MPP(28, 0x0, 1, 1, 1)
197#define MPP28_UA3_TXD MPP(28, 0x4, 0, 1, 1)197#define MPP28_UA3_TXD MPP(28, 0x4, 0, 0, 1)
198#define MPP28_TDM_DRX MPP(28, 0x6, 1, 0, 1)198#define MPP28_TDM_DRX MPP(28, 0x6, 0, 0, 1)
199#define MPP28_UNUSED MPP(28, 0x1, 0, 0, 1)199#define MPP28_UNUSED MPP(28, 0x1, 0, 0, 1)
200 200
201#define MPP29_GPIO MPP(29, 0x0, 1, 1, 1)201#define MPP29_GPIO MPP(29, 0x0, 1, 1, 1)
202#define MPP29_UA3_RXD MPP(29, 0x4, 1, 0, 1)202#define MPP29_UA3_RXD MPP(29, 0x4, 0, 0, 1)
203#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 1, 1)203#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 0, 1)
204#define MPP29_TDM_DTX MPP(29, 0x6, 0, 1, 1)204#define MPP29_TDM_DTX MPP(29, 0x6, 0, 0, 1)
205#define MPP29_UNUSED MPP(29, 0x1, 0, 0, 1)205#define MPP29_UNUSED MPP(29, 0x1, 0, 0, 1)
206 206
207#define MPP30_GPIO MPP(30, 0x0, 1, 1, 1)207#define MPP30_GPIO MPP(30, 0x0, 1, 1, 1)
208#define MPP30_UA3_CTSn MPP(30, 0x4, 1, 0, 1)208#define MPP30_UA3_CTSn MPP(30, 0x4, 0, 0, 1)
209#define MPP30_UNUSED MPP(30, 0x1, 0, 0, 1)209#define MPP30_UNUSED MPP(30, 0x1, 0, 0, 1)
210 210
211#define MPP31_GPIO MPP(31, 0x0, 1, 1, 1)211#define MPP31_GPIO MPP(31, 0x0, 1, 1, 1)
212#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 1, 1)212#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 0, 1)
213#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 1, 1)213#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 0, 1)
214#define MPP31_UNUSED MPP(31, 0x1, 0, 0, 1)214#define MPP31_UNUSED MPP(31, 0x1, 0, 0, 1)
215 215
216 216
217#define MPP32_GPIO MPP(32, 0x1, 1, 1, 1)217#define MPP32_GPIO MPP(32, 0x1, 1, 1, 1)
218#define MPP32_UA3_TDX MPP(32, 0x4, 0, 1, 1)218#define MPP32_UA3_TDX MPP(32, 0x4, 0, 0, 1)
219#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 1, 1)219#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 0, 1)
220#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 1, 1)220#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 0, 1)
221#define MPP32_UNUSED MPP(32, 0x3, 0, 0, 1)221#define MPP32_UNUSED MPP(32, 0x3, 0, 0, 1)
222 222
223 223
224#define MPP33_GPIO MPP(33, 0x1, 1, 1, 1)224#define MPP33_GPIO MPP(33, 0x1, 1, 1, 1)
225#define MPP33_UA3_RDX MPP(33, 0x4, 1, 0, 1)225#define MPP33_UA3_RDX MPP(33, 0x4, 0, 0, 1)
226#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 1, 1)226#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 0, 1)
227#define MPP33_UNUSED MPP(33, 0x3, 0, 0, 1)227#define MPP33_UNUSED MPP(33, 0x3, 0, 0, 1)
228 228
229 229
230 230
231#define MPP34_GPIO MPP(34, 0x1, 1, 1, 1)231#define MPP34_GPIO MPP(34, 0x1, 1, 1, 1)
232#define MPP34_UA2_TDX MPP(34, 0x4, 0, 1, 1)232#define MPP34_UA2_TDX MPP(34, 0x4, 0, 0, 1)
233#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 1, 1)233#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 0, 1)
234#define MPP34_UNUSED MPP(34, 0x3, 0, 0, 1)234#define MPP34_UNUSED MPP(34, 0x3, 0, 0, 1)
235 235
236 236
237 237
238#define MPP35_GPIO MPP(35, 0x1, 1, 1, 1)238#define MPP35_GPIO MPP(35, 0x1, 1, 1, 1)
239#define MPP35_UA2_RDX MPP(35, 0x4, 1, 0, 1)239#define MPP35_UA2_RDX MPP(35, 0x4, 0, 0, 1)
240#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 1, 1)240#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 0, 1)
241#define MPP35_UNUSED MPP(35, 0x3, 0, 0, 1)241#define MPP35_UNUSED MPP(35, 0x3, 0, 0, 1)
242 242
243#define MPP36_GPIO MPP(36, 0x1, 1, 1, 1)243#define MPP36_GPIO MPP(36, 0x1, 1, 1, 1)
244#define MPP36_UA0_CTSn MPP(36, 0x2, 1, 0, 1)244#define MPP36_UA0_CTSn MPP(36, 0x2, 0, 0, 1)
245#define MPP36_UA2_TDX MPP(36, 0x4, 0, 1, 1)245#define MPP36_UA2_TDX MPP(36, 0x4, 0, 0, 1)
246#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 1, 1)246#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 0, 1)
247#define MPP36_UNUSED MPP(36, 0x3, 0, 0, 1)247#define MPP36_UNUSED MPP(36, 0x3, 0, 0, 1)
248 248
249 249
250#define MPP37_GPIO MPP(37, 0x1, 1, 1, 1)250#define MPP37_GPIO MPP(37, 0x1, 1, 1, 1)
251#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 1, 1)251#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 0, 1)
252#define MPP37_UA2_RXD MPP(37, 0x4, 1, 0, 1)252#define MPP37_UA2_RXD MPP(37, 0x4, 0, 0, 1)
253#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 1, 1)253#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 0, 1)
254#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 1, 1)254#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 0, 1)
255#define MPP37_UNUSED MPP(37, 0x3, 0, 0, 1)255#define MPP37_UNUSED MPP(37, 0x3, 0, 0, 1)
256 256
257 257
258 258
259 259
260#define MPP38_GPIO MPP(38, 0x1, 1, 1, 1)260#define MPP38_GPIO MPP(38, 0x1, 1, 1, 1)
261#define MPP38_UA1_CTSn MPP(38, 0x2, 1, 0, 1)261#define MPP38_UA1_CTSn MPP(38, 0x2, 0, 0, 1)
262#define MPP38_UA3_TXD MPP(38, 0x4, 0, 1, 1)262#define MPP38_UA3_TXD MPP(38, 0x4, 0, 0, 1)
263#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 1, 1)263#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 0, 1)
264#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 1, 1)264#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 0, 1)
265#define MPP38_UNUSED MPP(38, 0x3, 0, 0, 1)265#define MPP38_UNUSED MPP(38, 0x3, 0, 0, 1)
266 266
267 267
268 268
269 269
270#define MPP39_GPIO MPP(39, 0x1, 1, 1, 1)270#define MPP39_GPIO MPP(39, 0x1, 1, 1, 1)
271#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 1, 1)271#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 0, 1)
272#define MPP39_UA3_RXD MPP(39, 0x4, 1, 0, 1)272#define MPP39_UA3_RXD MPP(39, 0x4, 0, 0, 1)
273#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 1, 1)273#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 0, 1)
274#define MPP39_TDM_SMISO MPP(39, 0x6, 1, 0, 1)274#define MPP39_TDM_SMISO MPP(39, 0x6, 0, 0, 1)
275#define MPP39_UNUSED MPP(39, 0x3, 0, 0, 1)275#define MPP39_UNUSED MPP(39, 0x3, 0, 0, 1)
276 276
277 277
278 278
279#define MPP40_GPIO MPP(40, 0x1, 1, 1, 1)279#define MPP40_GPIO MPP(40, 0x1, 1, 1, 1)
280#define MPP40_TDM_INTn MPP(40, 0x6, 1, 0, 1)280#define MPP40_TDM_INTn MPP(40, 0x6, 0, 0, 1)
281#define MPP40_UNUSED MPP(40, 0x0, 0, 0, 1)281#define MPP40_UNUSED MPP(40, 0x0, 0, 0, 1)
282 282
283 283
284 284
285#define MPP41_GPIO MPP(41, 0x1, 1, 1, 1)285#define MPP41_GPIO MPP(41, 0x1, 1, 1, 1)
286#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 1, 1)286#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 0, 1)
287#define MPP41_UNUSED MPP(41, 0x0, 0, 0, 1)287#define MPP41_UNUSED MPP(41, 0x0, 0, 0, 1)
288 288
289 289
290 290
291#define MPP42_GPIO MPP(42, 0x1, 1, 1, 1)291#define MPP42_GPIO MPP(42, 0x1, 1, 1, 1)
292#define MPP42_TDM_PCLK MPP(42, 0x6, 1, 1, 1)292#define MPP42_TDM_PCLK MPP(42, 0x6, 0, 0, 1)
293#define MPP42_UNUSED MPP(42, 0x0, 0, 0, 1)293#define MPP42_UNUSED MPP(42, 0x0, 0, 0, 1)
294 294
295 295
296 296
297#define MPP43_GPIO MPP(43, 0x1, 1, 1, 1)297#define MPP43_GPIO MPP(43, 0x1, 1, 1, 1)
298#define MPP43_TDM_FSYNC MPP(43, 0x6, 1, 1, 1)298#define MPP43_TDM_FSYNC MPP(43, 0x6, 0, 0, 1)
299#define MPP43_UNUSED MPP(43, 0x0, 0, 0, 1)299#define MPP43_UNUSED MPP(43, 0x0, 0, 0, 1)
300 300
301 301
302 302
303#define MPP44_GPIO MPP(44, 0x1, 1, 1, 1)303#define MPP44_GPIO MPP(44, 0x1, 1, 1, 1)
304#define MPP44_TDM_DRX MPP(44, 0x6, 1, 0, 1)304#define MPP44_TDM_DRX MPP(44, 0x6, 0, 0, 1)
305#define MPP44_UNUSED MPP(44, 0x0, 0, 0, 1)305#define MPP44_UNUSED MPP(44, 0x0, 0, 0, 1)
306 306
307 307
308 308
309#define MPP45_GPIO MPP(45, 0x1, 1, 1, 1)309#define MPP45_GPIO MPP(45, 0x1, 1, 1, 1)
310#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 1, 1)310#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 0, 1)
311#define MPP45_TDM_DRX MPP(45, 0x6, 0, 1, 1)311#define MPP45_TDM_DRX MPP(45, 0x6, 0, 0, 1)
312#define MPP45_UNUSED MPP(45, 0x0, 0, 0, 1)312#define MPP45_UNUSED MPP(45, 0x0, 0, 0, 1)
313 313
314 314
315#define MPP46_GPIO MPP(46, 0x1, 1, 1, 1)315#define MPP46_GPIO MPP(46, 0x1, 1, 1, 1)
316#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 1, 1)316#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 0, 1)
317#define MPP46_UNUSED MPP(46, 0x0, 0, 0, 1)317#define MPP46_UNUSED MPP(46, 0x0, 0, 0, 1)
318 318
319 319
@@ -323,14 +323,14 @@ · 3 unmodified lines
323 323
324 324
325#define MPP48_GPIO MPP(48, 0x1, 1, 1, 1)325#define MPP48_GPIO MPP(48, 0x1, 1, 1, 1)
326#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 1, 1)326#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 0, 1)
327#define MPP48_UNUSED MPP(48, 0x2, 0, 0, 1)327#define MPP48_UNUSED MPP(48, 0x2, 0, 0, 1)
328 328
329 329
330 330
331#define MPP49_GPIO MPP(49, 0x1, 1, 1, 1)331#define MPP49_GPIO MPP(49, 0x1, 1, 1, 1)
332#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 1, 1)332#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 0, 1)
333#define MPP49_M_BB MPP(49, 0x4, 1, 0, 1)333#define MPP49_M_BB MPP(49, 0x4, 0, 0, 1)
334#define MPP49_UNUSED MPP(49, 0x2, 0, 0, 1)334#define MPP49_UNUSED MPP(49, 0x2, 0, 0, 1)
335 335
336 336
arch/arm/mach-mx5/Kconfig+0−244
@@ -1,244 +0,0 @@
1if ARCH_MX5
2
3# ARCH_MX5/50/53 are left to mark places where prevent multi-soc in single
4# image. So for most time, SOC_IMX50/51/53 should be used.
5
6config ARCH_MX51
7 bool
8
9config ARCH_MX50
10 bool
11
12config ARCH_MX53
13 bool
14
15config SOC_IMX50
16 bool
17 select CPU_V7
18 select ARM_L1_CACHE_SHIFT_6
19 select MXC_TZIC
20 select ARCH_MXC_IOMUX_V3
21 select ARCH_MXC_AUDMUX_V2
22 select ARCH_HAS_CPUFREQ
23 select ARCH_MX50
24
25config SOC_IMX51
26 bool
27 select CPU_V7
28 select ARM_L1_CACHE_SHIFT_6
29 select MXC_TZIC
30 select ARCH_MXC_IOMUX_V3
31 select ARCH_MXC_AUDMUX_V2
32 select ARCH_HAS_CPUFREQ
33 select ARCH_MX51
34
35config SOC_IMX53
36 bool
37 select CPU_V7
38 select ARM_L1_CACHE_SHIFT_6
39 select MXC_TZIC
40 select ARCH_MXC_IOMUX_V3
41 select ARCH_MX53
42
43#comment "i.MX50 machines:"
44
45config MACH_MX50_RDP
46 bool "Support MX50 reference design platform"
47 depends on BROKEN
48 select SOC_IMX50
49 select IMX_HAVE_PLATFORM_IMX_I2C
50 select IMX_HAVE_PLATFORM_IMX_UART
51 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
52 select IMX_HAVE_PLATFORM_SPI_IMX
53 help
54 Include support for MX50 reference design platform (RDP) board. This
55 includes specific configurations for the board and its peripherals.
56
57comment "i.MX51 machines:"
58
59config MACH_IMX51_DT
60 bool "Support i.MX51 platforms from device tree"
61 select SOC_IMX51
62 select USE_OF
63 select MACH_MX51_BABBAGE
64 help
65 Include support for Freescale i.MX51 based platforms
66 using the device tree for discovery
67
68config MACH_MX51_BABBAGE
69 bool "Support MX51 BABBAGE platforms"
70 select SOC_IMX51
71 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
72 select IMX_HAVE_PLATFORM_IMX2_WDT
73 select IMX_HAVE_PLATFORM_IMX_I2C
74 select IMX_HAVE_PLATFORM_IMX_UART
75 select IMX_HAVE_PLATFORM_MXC_EHCI
76 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
77 select IMX_HAVE_PLATFORM_SPI_IMX
78 help
79 Include support for MX51 Babbage platform, also known as MX51EVK in
80 u-boot. This includes specific configurations for the board and its
81 peripherals.
82
83config MACH_MX51_3DS
84 bool "Support MX51PDK (3DS)"
85 select SOC_IMX51
86 select IMX_HAVE_PLATFORM_IMX2_WDT
87 select IMX_HAVE_PLATFORM_IMX_KEYPAD
88 select IMX_HAVE_PLATFORM_IMX_UART
89 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
90 select IMX_HAVE_PLATFORM_SPI_IMX
91 select MXC_DEBUG_BOARD
92 help
93 Include support for MX51PDK (3DS) platform. This includes specific
94 configurations for the board and its peripherals.
95
96config MACH_EUKREA_CPUIMX51
97 bool "Support Eukrea CPUIMX51 module"
98 select SOC_IMX51
99 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
100 select IMX_HAVE_PLATFORM_IMX_I2C
101 select IMX_HAVE_PLATFORM_IMX_UART
102 select IMX_HAVE_PLATFORM_MXC_EHCI
103 select IMX_HAVE_PLATFORM_MXC_NAND
104 select IMX_HAVE_PLATFORM_SPI_IMX
105 help
106 Include support for Eukrea CPUIMX51 platform. This includes
107 specific configurations for the module and its peripherals.
108
109choice
110 prompt "Baseboard"
111 depends on MACH_EUKREA_CPUIMX51
112 default MACH_EUKREA_MBIMX51_BASEBOARD
113
114config MACH_EUKREA_MBIMX51_BASEBOARD
115 prompt "Eukrea MBIMX51 development board"
116 bool
117 select IMX_HAVE_PLATFORM_IMX_KEYPAD
118 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
119 select LEDS_GPIO_REGISTER
120 help
121 This adds board specific devices that can be found on Eukrea's
122 MBIMX51 evaluation board.
123
124endchoice
125
126config MACH_EUKREA_CPUIMX51SD
127 bool "Support Eukrea CPUIMX51SD module"
128 select SOC_IMX51
129 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
130 select IMX_HAVE_PLATFORM_IMX_I2C
131 select IMX_HAVE_PLATFORM_IMX_UART
132 select IMX_HAVE_PLATFORM_MXC_EHCI
133 select IMX_HAVE_PLATFORM_MXC_NAND
134 select IMX_HAVE_PLATFORM_SPI_IMX
135 help
136 Include support for Eukrea CPUIMX51SD platform. This includes
137 specific configurations for the module and its peripherals.
138
139choice
140 prompt "Baseboard"
141 depends on MACH_EUKREA_CPUIMX51SD
142 default MACH_EUKREA_MBIMXSD51_BASEBOARD
143
144config MACH_EUKREA_MBIMXSD51_BASEBOARD
145 prompt "Eukrea MBIMXSD development board"
146 bool
147 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
148 select LEDS_GPIO_REGISTER
149 help
150 This adds board specific devices that can be found on Eukrea's
151 MBIMXSD evaluation board.
152
153endchoice
154
155config MX51_EFIKA_COMMON
156 bool
157 select SOC_IMX51
158 select IMX_HAVE_PLATFORM_IMX_UART
159 select IMX_HAVE_PLATFORM_MXC_EHCI
160 select IMX_HAVE_PLATFORM_PATA_IMX
161 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
162 select IMX_HAVE_PLATFORM_SPI_IMX
163 select MXC_ULPI if USB_ULPI
164
165config MACH_MX51_EFIKAMX
166 bool "Support MX51 Genesi Efika MX nettop"
167 select LEDS_GPIO_REGISTER
168 select MX51_EFIKA_COMMON
169 help
170 Include support for Genesi Efika MX nettop. This includes specific
171 configurations for the board and its peripherals.
172
173config MACH_MX51_EFIKASB
174 bool "Support MX51 Genesi Efika Smartbook"
175 select LEDS_GPIO_REGISTER
176 select MX51_EFIKA_COMMON
177 help
178 Include support for Genesi Efika Smartbook. This includes specific
179 configurations for the board and its peripherals.
180
181comment "i.MX53 machines:"
182
183config MACH_IMX53_DT
184 bool "Support i.MX53 platforms from device tree"
185 select SOC_IMX53
186 select USE_OF
187 select MACH_MX53_ARD
188 select MACH_MX53_EVK
189 select MACH_MX53_LOCO
190 select MACH_MX53_SMD
191 help
192 Include support for Freescale i.MX53 based platforms
193 using the device tree for discovery
194
195config MACH_MX53_EVK
196 bool "Support MX53 EVK platforms"
197 select SOC_IMX53
198 select IMX_HAVE_PLATFORM_IMX2_WDT
199 select IMX_HAVE_PLATFORM_IMX_UART
200 select IMX_HAVE_PLATFORM_IMX_I2C
201 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
202 select IMX_HAVE_PLATFORM_SPI_IMX
203 select LEDS_GPIO_REGISTER
204 help
205 Include support for MX53 EVK platform. This includes specific
206 configurations for the board and its peripherals.
207
208config MACH_MX53_SMD
209 bool "Support MX53 SMD platforms"
210 select SOC_IMX53
211 select IMX_HAVE_PLATFORM_IMX2_WDT
212 select IMX_HAVE_PLATFORM_IMX_I2C
213 select IMX_HAVE_PLATFORM_IMX_UART
214 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
215 help
216 Include support for MX53 SMD platform. This includes specific
217 configurations for the board and its peripherals.
218
219config MACH_MX53_LOCO
220 bool "Support MX53 LOCO platforms"
221 select SOC_IMX53
222 select IMX_HAVE_PLATFORM_IMX2_WDT
223 select IMX_HAVE_PLATFORM_IMX_I2C
224 select IMX_HAVE_PLATFORM_IMX_UART
225 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
226 select IMX_HAVE_PLATFORM_GPIO_KEYS
227 select LEDS_GPIO_REGISTER
228 help
229 Include support for MX53 LOCO platform. This includes specific
230 configurations for the board and its peripherals.
231
232config MACH_MX53_ARD
233 bool "Support MX53 ARD platforms"
234 select SOC_IMX53
235 select IMX_HAVE_PLATFORM_IMX2_WDT
236 select IMX_HAVE_PLATFORM_IMX_I2C
237 select IMX_HAVE_PLATFORM_IMX_UART
238 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
239 select IMX_HAVE_PLATFORM_GPIO_KEYS
240 help
241 Include support for MX53 ARD platform. This includes specific
242 configurations for the board and its peripherals.
243
244endif
arch/arm/mach-mx5/Makefile+0−26
@@ -1,26 +0,0 @@
1#
2# Makefile for the linux kernel.
3#
4
5# Object file lists.
6obj-y := cpu.o mm.o clock-mx51-mx53.o ehci.o system.o
7
8obj-$(CONFIG_PM) += pm-imx5.o
9obj-$(CONFIG_CPU_FREQ_IMX) += cpu_op-mx51.o
10obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
11obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
12obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
13obj-$(CONFIG_MACH_MX53_SMD) += board-mx53_smd.o
14obj-$(CONFIG_MACH_MX53_LOCO) += board-mx53_loco.o
15obj-$(CONFIG_MACH_MX53_ARD) += board-mx53_ard.o
16obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
17obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
18obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
19obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
20obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
21obj-$(CONFIG_MACH_MX51_EFIKAMX) += board-mx51_efikamx.o
22obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o
23obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o
24
25obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
26obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
arch/arm/mach-mx5/Makefile.boot+0−9
@@ -1,9 +0,0 @@
1 zreladdr-$(CONFIG_ARCH_MX50) += 0x70008000
2params_phys-$(CONFIG_ARCH_MX50) := 0x70000100
3initrd_phys-$(CONFIG_ARCH_MX50) := 0x70800000
4 zreladdr-$(CONFIG_ARCH_MX51) += 0x90008000
5params_phys-$(CONFIG_ARCH_MX51) := 0x90000100
6initrd_phys-$(CONFIG_ARCH_MX51) := 0x90800000
7 zreladdr-$(CONFIG_ARCH_MX53) += 0x70008000
8params_phys-$(CONFIG_ARCH_MX53) := 0x70000100
9initrd_phys-$(CONFIG_ARCH_MX53) := 0x70800000
arch/arm/mach-mx5/pm-imx5.c+0−83
@@ -1,83 +0,0 @@
1/*
2 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11#include <linux/suspend.h>
12#include <linux/clk.h>
13#include <linux/io.h>
14#include <linux/err.h>
15#include <asm/cacheflush.h>
16#include <asm/tlbflush.h>
17#include <mach/common.h>
18#include <mach/hardware.h>
19#include "crm_regs.h"
20
21static struct clk *gpc_dvfs_clk;
22
23static int mx5_suspend_prepare(void)
24{
25 return clk_enable(gpc_dvfs_clk);
26}
27
28static int mx5_suspend_enter(suspend_state_t state)
29{
30 switch (state) {
31 case PM_SUSPEND_MEM:
32 mx5_cpu_lp_set(STOP_POWER_OFF);
33 break;
34 case PM_SUSPEND_STANDBY:
35 mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
36 break;
37 default:
38 return -EINVAL;
39 }
40
41 if (state == PM_SUSPEND_MEM) {
42 local_flush_tlb_all();
43 flush_cache_all();
44
45 /*clear the EMPGC0/1 bits */
46 __raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
47 __raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
48 }
49 cpu_do_idle();
50 return 0;
51}
52
53static void mx5_suspend_finish(void)
54{
55 clk_disable(gpc_dvfs_clk);
56}
57
58static int mx5_pm_valid(suspend_state_t state)
59{
60 return (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX);
61}
62
63static const struct platform_suspend_ops mx5_suspend_ops = {
64 .valid = mx5_pm_valid,
65 .prepare = mx5_suspend_prepare,
66 .enter = mx5_suspend_enter,
67 .finish = mx5_suspend_finish,
68};
69
70static int __init mx5_pm_init(void)
71{
72 if (gpc_dvfs_clk == NULL)
73 gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
74
75 if (!IS_ERR(gpc_dvfs_clk)) {
76 if (cpu_is_mx51())
77 suspend_set_ops(&mx5_suspend_ops);
78 } else
79 return -EPERM;
80
81 return 0;
82}
83device_initcall(mx5_pm_init);
arch/arm/mach-omap2/Kconfig+5−7
@@ -33,7 +33,6 @@ config ARCH_OMAP3 · 32 unmodified lines
33 default y33 default y
34 select CPU_V734 select CPU_V7
35 select USB_ARCH_HAS_EHCI35 select USB_ARCH_HAS_EHCI
36 select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4
37 select ARCH_HAS_OPP36 select ARCH_HAS_OPP
38 select PM_OPP if PM37 select PM_OPP if PM
39 select ARM_CPU_SUSPEND if PM38 select ARM_CPU_SUSPEND if PM
@@ -214,13 +213,12 @@ config MACH_OMAP3_PANDORA · 174 unmodified lines
214 depends on ARCH_OMAP3213 depends on ARCH_OMAP3
215 default y214 default y
216 select OMAP_PACKAGE_CBB215 select OMAP_PACKAGE_CBB
217 select REGULATOR_FIXED_VOLTAGE216 select REGULATOR_FIXED_VOLTAGE if REGULATOR
218 217
219config MACH_OMAP3_TOUCHBOOK218config MACH_OMAP3_TOUCHBOOK
220 bool "OMAP3 Touch Book"219 bool "OMAP3 Touch Book"
221 depends on ARCH_OMAP3220 depends on ARCH_OMAP3
222 default y221 default y
223 select BACKLIGHT_CLASS_DEVICE
224 222
225config MACH_OMAP_3430SDP223config MACH_OMAP_3430SDP
226 bool "OMAP 3430 SDP board"224 bool "OMAP 3430 SDP board"
@@ -266,7 +264,7 @@ config MACH_OMAP_ZOOM2 · 39 unmodified lines
266 select SERIAL_8250264 select SERIAL_8250
267 select SERIAL_CORE_CONSOLE265 select SERIAL_CORE_CONSOLE
268 select SERIAL_8250_CONSOLE266 select SERIAL_8250_CONSOLE
269 select REGULATOR_FIXED_VOLTAGE267 select REGULATOR_FIXED_VOLTAGE if REGULATOR
270 268
271config MACH_OMAP_ZOOM3269config MACH_OMAP_ZOOM3
272 bool "OMAP3630 Zoom3 board"270 bool "OMAP3630 Zoom3 board"
@@ -276,7 +274,7 @@ config MACH_OMAP_ZOOM3 · 3 unmodified lines
276 select SERIAL_8250274 select SERIAL_8250
277 select SERIAL_CORE_CONSOLE275 select SERIAL_CORE_CONSOLE
278 select SERIAL_8250_CONSOLE276 select SERIAL_8250_CONSOLE
279 select REGULATOR_FIXED_VOLTAGE277 select REGULATOR_FIXED_VOLTAGE if REGULATOR
280 278
281config MACH_CM_T35279config MACH_CM_T35
282 bool "CompuLab CM-T35/CM-T3730 modules"280 bool "CompuLab CM-T35/CM-T3730 modules"
@@ -335,7 +333,7 @@ config MACH_OMAP_4430SDP · 52 unmodified lines
335 depends on ARCH_OMAP4333 depends on ARCH_OMAP4
336 select OMAP_PACKAGE_CBL334 select OMAP_PACKAGE_CBL
337 select OMAP_PACKAGE_CBS335 select OMAP_PACKAGE_CBS
338 select REGULATOR_FIXED_VOLTAGE336 select REGULATOR_FIXED_VOLTAGE if REGULATOR
339 337
340config MACH_OMAP4_PANDA338config MACH_OMAP4_PANDA
341 bool "OMAP4 Panda Board"339 bool "OMAP4 Panda Board"
@@ -343,7 +341,7 @@ config MACH_OMAP4_PANDA · 1 unmodified line
343 depends on ARCH_OMAP4341 depends on ARCH_OMAP4
344 select OMAP_PACKAGE_CBL342 select OMAP_PACKAGE_CBL
345 select OMAP_PACKAGE_CBS343 select OMAP_PACKAGE_CBS
346 select REGULATOR_FIXED_VOLTAGE344 select REGULATOR_FIXED_VOLTAGE if REGULATOR
347 345
348config OMAP3_EMU346config OMAP3_EMU
349 bool "OMAP3 debugging peripherals"347 bool "OMAP3 debugging peripherals"
arch/arm/mach-omap2/Makefile+2−2
@@ -11,9 +11,9 @@ hwmod-common = omap_hwmod.o \ · 10 unmodified lines
11 omap_hwmod_common_data.o11 omap_hwmod_common_data.o
12clock-common = clock.o clock_common_data.o \12clock-common = clock.o clock_common_data.o \
13 clkt_dpll.o clkt_clksel.o13 clkt_dpll.o clkt_clksel.o
14secure-common = omap-smc.o omap-secure.o14secure-common = omap-smc.o omap-secure.o
15 15
16obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common) $(secure-common)16obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common)
17obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)17obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
18obj-$(CONFIG_ARCH_OMAP4) += prm44xx.o $(hwmod-common) $(secure-common)18obj-$(CONFIG_ARCH_OMAP4) += prm44xx.o $(hwmod-common) $(secure-common)
19 19
arch/arm/mach-omap2/board-4430sdp.c+25−10
@@ -52,8 +52,9 @@ · 51 unmodified lines
52#define ETH_KS8851_QUART 13852#define ETH_KS8851_QUART 138
53#define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 18453#define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184
54#define OMAP4_SFH7741_ENABLE_GPIO 18854#define OMAP4_SFH7741_ENABLE_GPIO 188
55#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */55#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
56#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */56#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
57#define HDMI_GPIO_HPD 63 /* Hotplug detect */
57#define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */58#define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */
58#define DLP_POWER_ON_GPIO 4059#define DLP_POWER_ON_GPIO 40
59 60
@@ -603,8 +604,9 @@ static void __init omap_sfh7741prox_init(void) · 543 unmodified lines
603}604}
604 605
605static struct gpio sdp4430_hdmi_gpios[] = {606static struct gpio sdp4430_hdmi_gpios[] = {
606 { HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },607 { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
607 { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },608 { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
609 { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
608};610};
609 611
610static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)612static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
@@ -621,8 +623,7 @@ static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev) · 10 unmodified lines
621 623
622static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)624static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)
623{625{
624 gpio_free(HDMI_GPIO_LS_OE);626 gpio_free_array(sdp4430_hdmi_gpios, ARRAY_SIZE(sdp4430_hdmi_gpios));
625 gpio_free(HDMI_GPIO_HPD);
626}627}
627 628
628static struct nokia_dsi_panel_data dsi1_panel = {629static struct nokia_dsi_panel_data dsi1_panel = {
@@ -738,6 +739,10 @@ static void sdp4430_lcd_init(void) · 109 unmodified lines
738 pr_err("%s: Could not get lcd2_reset_gpio\n", __func__);739 pr_err("%s: Could not get lcd2_reset_gpio\n", __func__);
739}740}
740 741
742static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
743 .hpd_gpio = HDMI_GPIO_HPD,
744};
745
741static struct omap_dss_device sdp4430_hdmi_device = {746static struct omap_dss_device sdp4430_hdmi_device = {
742 .name = "hdmi",747 .name = "hdmi",
743 .driver_name = "hdmi_panel",748 .driver_name = "hdmi_panel",
@@ -745,6 +750,7 @@ static struct omap_dss_device sdp4430_hdmi_device = { · 1 unmodified line
745 .platform_enable = sdp4430_panel_enable_hdmi,750 .platform_enable = sdp4430_panel_enable_hdmi,
746 .platform_disable = sdp4430_panel_disable_hdmi,751 .platform_disable = sdp4430_panel_disable_hdmi,
747 .channel = OMAP_DSS_CHANNEL_DIGIT,752 .channel = OMAP_DSS_CHANNEL_DIGIT,
753 .data = &sdp4430_hdmi_data,
748};754};
749 755
750static struct picodlp_panel_data sdp4430_picodlp_pdata = {756static struct picodlp_panel_data sdp4430_picodlp_pdata = {
@@ -808,7 +814,7 @@ static struct omap_dss_board_info sdp4430_dss_data = { · 57 unmodified lines
808 .default_device = &sdp4430_lcd_device,814 .default_device = &sdp4430_lcd_device,
809};815};
810 816
811static void omap_4430sdp_display_init(void)817static void __init omap_4430sdp_display_init(void)
812{818{
813 int r;819 int r;
814 820
@@ -829,6 +835,10 @@ static void omap_4430sdp_display_init(void) · 14 unmodified lines
829 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);835 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
830 else836 else
831 omap_hdmi_init(0);837 omap_hdmi_init(0);
838
839 omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
840 omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
841 omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
832}842}
833 843
834#ifdef CONFIG_OMAP_MUX844#ifdef CONFIG_OMAP_MUX
@@ -841,7 +851,7 @@ static struct omap_board_mux board_mux[] __initdata = { · 6 unmodified lines
841#define board_mux NULL851#define board_mux NULL
842 #endif852 #endif
843 853
844static void omap4_sdp4430_wifi_mux_init(void)854static void __init omap4_sdp4430_wifi_mux_init(void)
845{855{
846 omap_mux_init_gpio(GPIO_WIFI_IRQ, OMAP_PIN_INPUT |856 omap_mux_init_gpio(GPIO_WIFI_IRQ, OMAP_PIN_INPUT |
847 OMAP_PIN_OFF_WAKEUPENABLE);857 OMAP_PIN_OFF_WAKEUPENABLE);
@@ -868,12 +878,17 @@ static struct wl12xx_platform_data omap4_sdp4430_wlan_data __initdata = { · 20 unmodified lines
868 .board_tcxo_clock = WL12XX_TCXOCLOCK_26,878 .board_tcxo_clock = WL12XX_TCXOCLOCK_26,
869};879};
870 880
871static void omap4_sdp4430_wifi_init(void)881static void __init omap4_sdp4430_wifi_init(void)
872{882{
883 int ret;
884
873 omap4_sdp4430_wifi_mux_init();885 omap4_sdp4430_wifi_mux_init();
874 if (wl12xx_set_platform_data(&omap4_sdp4430_wlan_data))886 ret = wl12xx_set_platform_data(&omap4_sdp4430_wlan_data);
875 pr_err("Error setting wl12xx data\n");887 if (ret)
876 platform_device_register(&omap_vwlan_device);888 pr_err("Error setting wl12xx data: %d\n", ret);
889 ret = platform_device_register(&omap_vwlan_device);
890 if (ret)
891 pr_err("Error registering wl12xx device: %d\n", ret);
877}892}
878 893
879static void __init omap_4430sdp_init(void)894static void __init omap_4430sdp_init(void)
arch/arm/mach-omap2/board-cm-t35.c+1−1
@@ -437,7 +437,7 @@ static struct usbhs_omap_board_data usbhs_bdata __initdata = { · 436 unmodified lines
437 .reset_gpio_port[2] = -EINVAL437 .reset_gpio_port[2] = -EINVAL
438};438};
439 439
440static void cm_t35_init_usbh(void)440static void __init cm_t35_init_usbh(void)
441{441{
442 int err;442 int err;
443 443
arch/arm/mach-omap2/board-generic.c+4−0
@@ -17,6 +17,7 @@ · 16 unmodified lines
17#include <linux/i2c/twl.h>17#include <linux/i2c/twl.h>
18 18
19#include <mach/hardware.h>19#include <mach/hardware.h>
20#include <asm/hardware/gic.h>
20#include <asm/mach/arch.h>21#include <asm/mach/arch.h>
21 22
22#include <plat/board.h>23#include <plat/board.h>
@@ -102,6 +103,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") · 79 unmodified lines
102 .map_io = omap242x_map_io,103 .map_io = omap242x_map_io,
103 .init_early = omap2420_init_early,104 .init_early = omap2420_init_early,
104 .init_irq = omap2_init_irq,105 .init_irq = omap2_init_irq,
106 .handle_irq = omap2_intc_handle_irq,
105 .init_machine = omap_generic_init,107 .init_machine = omap_generic_init,
106 .timer = &omap2_timer,108 .timer = &omap2_timer,
107 .dt_compat = omap242x_boards_compat,109 .dt_compat = omap242x_boards_compat,
@@ -141,6 +143,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") · 33 unmodified lines
141 .map_io = omap3_map_io,143 .map_io = omap3_map_io,
142 .init_early = omap3430_init_early,144 .init_early = omap3430_init_early,
143 .init_irq = omap3_init_irq,145 .init_irq = omap3_init_irq,
146 .handle_irq = omap3_intc_handle_irq,
144 .init_machine = omap3_init,147 .init_machine = omap3_init,
145 .timer = &omap3_timer,148 .timer = &omap3_timer,
146 .dt_compat = omap3_boards_compat,149 .dt_compat = omap3_boards_compat,
@@ -160,6 +163,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") · 13 unmodified lines
160 .map_io = omap4_map_io,163 .map_io = omap4_map_io,
161 .init_early = omap4430_init_early,164 .init_early = omap4430_init_early,
162 .init_irq = gic_init_irq,165 .init_irq = gic_init_irq,
166 .handle_irq = gic_handle_irq,
163 .init_machine = omap4_init,167 .init_machine = omap4_init,
164 .timer = &omap4_timer,168 .timer = &omap4_timer,
165 .dt_compat = omap4_boards_compat,169 .dt_compat = omap4_boards_compat,
arch/arm/mach-omap2/board-omap3evm.c+16−7
@@ -617,6 +617,21 @@ static struct gpio omap3_evm_ehci_gpios[] __initdata = { · 616 unmodified lines
617 { OMAP3_EVM_EHCI_SELECT, GPIOF_OUT_INIT_LOW, "select EHCI port" },617 { OMAP3_EVM_EHCI_SELECT, GPIOF_OUT_INIT_LOW, "select EHCI port" },
618};618};
619 619
620static void __init omap3_evm_wl12xx_init(void)
621{
622#ifdef CONFIG_WL12XX_PLATFORM_DATA
623 int ret;
624
625 /* WL12xx WLAN Init */
626 ret = wl12xx_set_platform_data(&omap3evm_wlan_data);
627 if (ret)
628 pr_err("error setting wl12xx data: %d\n", ret);
629 ret = platform_device_register(&omap3evm_wlan_regulator);
630 if (ret)
631 pr_err("error registering wl12xx device: %d\n", ret);
632#endif
633}
634
620static void __init omap3_evm_init(void)635static void __init omap3_evm_init(void)
621{636{
622 omap3_evm_get_revision();637 omap3_evm_get_revision();
@@ -665,13 +680,7 @@ static void __init omap3_evm_init(void) · 42 unmodified lines
665 omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);680 omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);
666 omap3evm_init_smsc911x();681 omap3evm_init_smsc911x();
667 omap3_evm_display_init();682 omap3_evm_display_init();
668 683 omap3_evm_wl12xx_init();
669#ifdef CONFIG_WL12XX_PLATFORM_DATA
670 /* WL12xx WLAN Init */
671 if (wl12xx_set_platform_data(&omap3evm_wlan_data))
672 pr_err("error setting wl12xx data\n");
673 platform_device_register(&omap3evm_wlan_regulator);
674#endif
675}684}
676 685
677MACHINE_START(OMAP3EVM, "OMAP3 EVM")686MACHINE_START(OMAP3EVM, "OMAP3 EVM")
arch/arm/mach-omap2/board-omap4panda.c+18−6
@@ -51,8 +51,9 @@ · 50 unmodified lines
51#define GPIO_HUB_NRESET 6251#define GPIO_HUB_NRESET 62
52#define GPIO_WIFI_PMENA 4352#define GPIO_WIFI_PMENA 43
53#define GPIO_WIFI_IRQ 5353#define GPIO_WIFI_IRQ 53
54#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */54#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
55#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */55#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
56#define HDMI_GPIO_HPD 63 /* Hotplug detect */
56 57
57/* wl127x BT, FM, GPS connectivity chip */58/* wl127x BT, FM, GPS connectivity chip */
58static int wl1271_gpios[] = {46, -1, -1};59static int wl1271_gpios[] = {46, -1, -1};
@@ -413,8 +414,9 @@ int __init omap4_panda_dvi_init(void) · 354 unmodified lines
413}414}
414 415
415static struct gpio panda_hdmi_gpios[] = {416static struct gpio panda_hdmi_gpios[] = {
416 { HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },417 { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
417 { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },418 { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
419 { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
418};420};
419 421
420static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)422static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
@@ -431,10 +433,13 @@ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev) · 10 unmodified lines
431 433
432static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)434static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)
433{435{
434 gpio_free(HDMI_GPIO_LS_OE);436 gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios));
435 gpio_free(HDMI_GPIO_HPD);
436}437}
437 438
439static struct omap_dss_hdmi_data omap4_panda_hdmi_data = {
440 .hpd_gpio = HDMI_GPIO_HPD,
441};
442
438static struct omap_dss_device omap4_panda_hdmi_device = {443static struct omap_dss_device omap4_panda_hdmi_device = {
439 .name = "hdmi",444 .name = "hdmi",
440 .driver_name = "hdmi_panel",445 .driver_name = "hdmi_panel",
@@ -442,6 +447,7 @@ static struct omap_dss_device omap4_panda_hdmi_device = { · 1 unmodified line
442 .platform_enable = omap4_panda_panel_enable_hdmi,447 .platform_enable = omap4_panda_panel_enable_hdmi,
443 .platform_disable = omap4_panda_panel_disable_hdmi,448 .platform_disable = omap4_panda_panel_disable_hdmi,
444 .channel = OMAP_DSS_CHANNEL_DIGIT,449 .channel = OMAP_DSS_CHANNEL_DIGIT,
450 .data = &omap4_panda_hdmi_data,
445};451};
446 452
447static struct omap_dss_device *omap4_panda_dss_devices[] = {453static struct omap_dss_device *omap4_panda_dss_devices[] = {
@@ -473,18 +479,24 @@ void omap4_panda_display_init(void) · 25 unmodified lines
473 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);479 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
474 else480 else
475 omap_hdmi_init(0);481 omap_hdmi_init(0);
482
483 omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
484 omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
485 omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
476}486}
477 487
478static void __init omap4_panda_init(void)488static void __init omap4_panda_init(void)
479{489{
480 int package = OMAP_PACKAGE_CBS;490 int package = OMAP_PACKAGE_CBS;
491 int ret;
481 492
482 if (omap_rev() == OMAP4430_REV_ES1_0)493 if (omap_rev() == OMAP4430_REV_ES1_0)
483 package = OMAP_PACKAGE_CBL;494 package = OMAP_PACKAGE_CBL;
484 omap4_mux_init(board_mux, NULL, package);495 omap4_mux_init(board_mux, NULL, package);
485 496
486 if (wl12xx_set_platform_data(&omap_panda_wlan_data))497 ret = wl12xx_set_platform_data(&omap_panda_wlan_data);
487 pr_err("error setting wl12xx data\n");498 if (ret)
499 pr_err("error setting wl12xx data: %d\n", ret);
488 500
489 omap4_panda_i2c_init();501 omap4_panda_i2c_init();
490 platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));502 platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));
arch/arm/mach-omap2/board-zoom-peripherals.c+4−2
@@ -296,8 +296,10 @@ static void enable_board_wakeup_source(void) · 295 unmodified lines
296 296
297void __init zoom_peripherals_init(void)297void __init zoom_peripherals_init(void)
298{298{
299 if (wl12xx_set_platform_data(&omap_zoom_wlan_data))299 int ret = wl12xx_set_platform_data(&omap_zoom_wlan_data);
300 pr_err("error setting wl12xx data\n");300
301 if (ret)
302 pr_err("error setting wl12xx data: %d\n", ret);
301 303
302 omap_i2c_init();304 omap_i2c_init();
303 platform_device_register(&omap_vwlan_device);305 platform_device_register(&omap_vwlan_device);
arch/arm/mach-omap2/devices.c+1−0
@@ -405,6 +405,7 @@ static int omap_mcspi_init(struct omap_hwmod *oh, void *unused) · 404 unmodified lines
405 break;405 break;
406 default:406 default:
407 pr_err("Invalid McSPI Revision value\n");407 pr_err("Invalid McSPI Revision value\n");
408 kfree(pdata);
408 return -EINVAL;409 return -EINVAL;
409 }410 }
410 411
arch/arm/mach-omap2/display.c+0−4
@@ -103,12 +103,8 @@ static void omap4_hdmi_mux_pads(enum omap_hdmi_flags flags) · 102 unmodified lines
103 u32 reg;103 u32 reg;
104 u16 control_i2c_1;104 u16 control_i2c_1;
105 105
106 /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
107 omap_mux_init_signal("hdmi_hpd",
108 OMAP_PIN_INPUT_PULLUP);
109 omap_mux_init_signal("hdmi_cec",106 omap_mux_init_signal("hdmi_cec",
110 OMAP_PIN_INPUT_PULLUP);107 OMAP_PIN_INPUT_PULLUP);
111 /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
112 omap_mux_init_signal("hdmi_ddc_scl",108 omap_mux_init_signal("hdmi_ddc_scl",
113 OMAP_PIN_INPUT_PULLUP);109 OMAP_PIN_INPUT_PULLUP);
114 omap_mux_init_signal("hdmi_ddc_sda",110 omap_mux_init_signal("hdmi_ddc_sda",
arch/arm/mach-omap2/gpmc.c+6−0
@@ -528,7 +528,13 @@ int gpmc_cs_configure(int cs, int cmd, int wval) · 527 unmodified lines
528 528
529 case GPMC_CONFIG_DEV_SIZE:529 case GPMC_CONFIG_DEV_SIZE:
530 regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);530 regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
531
532 /* clear 2 target bits */
533 regval &= ~GPMC_CONFIG1_DEVICESIZE(3);
534
535 /* set the proper value */
531 regval |= GPMC_CONFIG1_DEVICESIZE(wval);536 regval |= GPMC_CONFIG1_DEVICESIZE(wval);
537
532 gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);538 gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
533 break;539 break;
534 540
arch/arm/mach-omap2/hsmmc.c+12−12
@@ -175,14 +175,15 @@ static void hsmmc2_select_input_clk_src(struct omap_mmc_platform_data *mmc) · 174 unmodified lines
175{175{
176 u32 reg;176 u32 reg;
177 177
178 if (mmc->slots[0].internal_clock) {178 reg = omap_ctrl_readl(control_devconf1_offset);
179 reg = omap_ctrl_readl(control_devconf1_offset);179 if (mmc->slots[0].internal_clock)
180 reg |= OMAP2_MMCSDIO2ADPCLKISEL;180 reg |= OMAP2_MMCSDIO2ADPCLKISEL;
181 omap_ctrl_writel(reg, control_devconf1_offset);181 else
182 }182 reg &= ~OMAP2_MMCSDIO2ADPCLKISEL;
183 omap_ctrl_writel(reg, control_devconf1_offset);
183}184}
184 185
185static void hsmmc23_before_set_reg(struct device *dev, int slot,186static void hsmmc2_before_set_reg(struct device *dev, int slot,
186 int power_on, int vdd)187 int power_on, int vdd)
187{188{
188 struct omap_mmc_platform_data *mmc = dev->platform_data;189 struct omap_mmc_platform_data *mmc = dev->platform_data;
@@ -292,8 +293,8 @@ static inline void omap_hsmmc_mux(struct omap_mmc_platform_data *mmc_controller, · 103 unmodified lines
292 }293 }
293}294}
294 295
295static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,296static int omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
296 struct omap_mmc_platform_data *mmc)297 struct omap_mmc_platform_data *mmc)
297{298{
298 char *hc_name;299 char *hc_name;
299 300
@@ -407,14 +408,13 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, · 107 unmodified lines
407 c->caps &= ~MMC_CAP_8_BIT_DATA;408 c->caps &= ~MMC_CAP_8_BIT_DATA;
408 c->caps |= MMC_CAP_4_BIT_DATA;409 c->caps |= MMC_CAP_4_BIT_DATA;
409 }410 }
410 /* FALLTHROUGH */
411 case 3:
412 if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {411 if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
413 /* off-chip level shifting, or none */412 /* off-chip level shifting, or none */
414 mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;413 mmc->slots[0].before_set_reg = hsmmc2_before_set_reg;
415 mmc->slots[0].after_set_reg = NULL;414 mmc->slots[0].after_set_reg = NULL;
416 }415 }
417 break;416 break;
417 case 3:
418 case 4:418 case 4:
419 case 5:419 case 5:
420 mmc->slots[0].before_set_reg = NULL;420 mmc->slots[0].before_set_reg = NULL;
@@ -430,7 +430,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, · 9 unmodified lines
430 430
431#define MAX_OMAP_MMC_HWMOD_NAME_LEN 16431#define MAX_OMAP_MMC_HWMOD_NAME_LEN 16
432 432
433void __init omap_init_hsmmc(struct omap2_hsmmc_info *hsmmcinfo, int ctrl_nr)433void omap_init_hsmmc(struct omap2_hsmmc_info *hsmmcinfo, int ctrl_nr)
434{434{
435 struct omap_hwmod *oh;435 struct omap_hwmod *oh;
436 struct platform_device *pdev;436 struct platform_device *pdev;
@@ -487,7 +487,7 @@ done: · 50 unmodified lines
487 kfree(mmc_data);487 kfree(mmc_data);
488}488}
489 489
490void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)490void omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
491{491{
492 u32 reg;492 u32 reg;
493 493
arch/arm/mach-omap2/io.c+3−1
@@ -388,7 +388,7 @@ static void __init omap_hwmod_init_postsetup(void) · 387 unmodified lines
388 omap_pm_if_early_init();388 omap_pm_if_early_init();
389}389}
390 390
391#ifdef CONFIG_ARCH_OMAP2391#ifdef CONFIG_SOC_OMAP2420
392void __init omap2420_init_early(void)392void __init omap2420_init_early(void)
393{393{
394 omap2_set_globals_242x();394 omap2_set_globals_242x();
@@ -400,7 +400,9 @@ void __init omap2420_init_early(void) · 5 unmodified lines
400 omap_hwmod_init_postsetup();400 omap_hwmod_init_postsetup();
401 omap2420_clk_init();401 omap2420_clk_init();
402}402}
403#endif
403 404
405#ifdef CONFIG_SOC_OMAP2430
404void __init omap2430_init_early(void)406void __init omap2430_init_early(void)
405{407{
406 omap2_set_globals_243x();408 omap2_set_globals_243x();
arch/arm/mach-omap2/mux.c+11−11
@@ -100,8 +100,8 @@ void omap_mux_write_array(struct omap_mux_partition *partition, · 99 unmodified lines
100 100
101static char *omap_mux_options;101static char *omap_mux_options;
102 102
103static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition,103static int _omap_mux_init_gpio(struct omap_mux_partition *partition,
104 int gpio, int val)104 int gpio, int val)
105{105{
106 struct omap_mux_entry *e;106 struct omap_mux_entry *e;
107 struct omap_mux *gpio_mux = NULL;107 struct omap_mux *gpio_mux = NULL;
@@ -145,7 +145,7 @@ static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition, · 37 unmodified lines
145 return 0;145 return 0;
146}146}
147 147
148int __init omap_mux_init_gpio(int gpio, int val)148int omap_mux_init_gpio(int gpio, int val)
149{149{
150 struct omap_mux_partition *partition;150 struct omap_mux_partition *partition;
151 int ret;151 int ret;
@@ -159,9 +159,9 @@ int __init omap_mux_init_gpio(int gpio, int val) · 7 unmodified lines
159 return -ENODEV;159 return -ENODEV;
160}160}
161 161
162static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition,162static int _omap_mux_get_by_name(struct omap_mux_partition *partition,
163 const char *muxname,163 const char *muxname,
164 struct omap_mux **found_mux)164 struct omap_mux **found_mux)
165{165{
166 struct omap_mux *mux = NULL;166 struct omap_mux *mux = NULL;
167 struct omap_mux_entry *e;167 struct omap_mux_entry *e;
@@ -240,7 +240,7 @@ omap_mux_get_by_name(const char *muxname, · 72 unmodified lines
240 return -ENODEV;240 return -ENODEV;
241}241}
242 242
243int __init omap_mux_init_signal(const char *muxname, int val)243int omap_mux_init_signal(const char *muxname, int val)
244{244{
245 struct omap_mux_partition *partition = NULL;245 struct omap_mux_partition *partition = NULL;
246 struct omap_mux *mux = NULL;246 struct omap_mux *mux = NULL;
@@ -1094,8 +1094,8 @@ static void omap_mux_init_package(struct omap_mux *superset, · 847 unmodified lines
1094 omap_mux_package_init_balls(package_balls, superset);1094 omap_mux_package_init_balls(package_balls, superset);
1095}1095}
1096 1096
1097static void omap_mux_init_signals(struct omap_mux_partition *partition,1097static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
1098 struct omap_board_mux *board_mux)1098 struct omap_board_mux *board_mux)
1099{1099{
1100 omap_mux_set_cmdline_signals();1100 omap_mux_set_cmdline_signals();
1101 omap_mux_write_array(partition, board_mux);1101 omap_mux_write_array(partition, board_mux);
@@ -1109,8 +1109,8 @@ static void omap_mux_init_package(struct omap_mux *superset, · 7 unmodified lines
1109{1109{
1110}1110}
1111 1111
1112static void omap_mux_init_signals(struct omap_mux_partition *partition,1112static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
1113 struct omap_board_mux *board_mux)1113 struct omap_board_mux *board_mux)
1114{1114{
1115}1115}
1116 1116
arch/arm/mach-omap2/omap-headsmp.S+1−0
@@ -18,6 +18,7 @@ · 17 unmodified lines
18#include <linux/linkage.h>18#include <linux/linkage.h>
19#include <linux/init.h>19#include <linux/init.h>
20 20
21 __CPUINIT
21/*22/*
22 * OMAP4 specific entry point for secondary CPU to jump from ROM23 * OMAP4 specific entry point for secondary CPU to jump from ROM
23 * code. This routine also provides a holding flag into which24 * code. This routine also provides a holding flag into which
arch/arm/mach-omap2/omap_hwmod.c+8−8
@@ -1517,8 +1517,8 @@ static int _enable(struct omap_hwmod *oh) · 1516 unmodified lines
1517 if (oh->_state != _HWMOD_STATE_INITIALIZED &&1517 if (oh->_state != _HWMOD_STATE_INITIALIZED &&
1518 oh->_state != _HWMOD_STATE_IDLE &&1518 oh->_state != _HWMOD_STATE_IDLE &&
1519 oh->_state != _HWMOD_STATE_DISABLED) {1519 oh->_state != _HWMOD_STATE_DISABLED) {
1520 WARN(1, "omap_hwmod: %s: enabled state can only be entered "1520 WARN(1, "omap_hwmod: %s: enabled state can only be entered from initialized, idle, or disabled state\n",
1521 "from initialized, idle, or disabled state\n", oh->name);1521 oh->name);
1522 return -EINVAL;1522 return -EINVAL;
1523 }1523 }
1524 1524
@@ -1600,8 +1600,8 @@ static int _idle(struct omap_hwmod *oh) · 75 unmodified lines
1600 pr_debug("omap_hwmod: %s: idling\n", oh->name);1600 pr_debug("omap_hwmod: %s: idling\n", oh->name);
1601 1601
1602 if (oh->_state != _HWMOD_STATE_ENABLED) {1602 if (oh->_state != _HWMOD_STATE_ENABLED) {
1603 WARN(1, "omap_hwmod: %s: idle state can only be entered from "1603 WARN(1, "omap_hwmod: %s: idle state can only be entered from enabled state\n",
1604 "enabled state\n", oh->name);1604 oh->name);
1605 return -EINVAL;1605 return -EINVAL;
1606 }1606 }
1607 1607
@@ -1682,8 +1682,8 @@ static int _shutdown(struct omap_hwmod *oh) · 74 unmodified lines
1682 1682
1683 if (oh->_state != _HWMOD_STATE_IDLE &&1683 if (oh->_state != _HWMOD_STATE_IDLE &&
1684 oh->_state != _HWMOD_STATE_ENABLED) {1684 oh->_state != _HWMOD_STATE_ENABLED) {
1685 WARN(1, "omap_hwmod: %s: disabled state can only be entered "1685 WARN(1, "omap_hwmod: %s: disabled state can only be entered from idle, or enabled state\n",
1686 "from idle, or enabled state\n", oh->name);1686 oh->name);
1687 return -EINVAL;1687 return -EINVAL;
1688 }1688 }
1689 1689
@@ -2240,8 +2240,8 @@ void omap_hwmod_ocp_barrier(struct omap_hwmod *oh) · 550 unmodified lines
2240 BUG_ON(!oh);2240 BUG_ON(!oh);
2241 2241
2242 if (!oh->class->sysc || !oh->class->sysc->sysc_flags) {2242 if (!oh->class->sysc || !oh->class->sysc->sysc_flags) {
2243 WARN(1, "omap_device: %s: OCP barrier impossible due to "2243 WARN(1, "omap_device: %s: OCP barrier impossible due to device configuration\n",
2244 "device configuration\n", oh->name);2244 oh->name);
2245 return;2245 return;
2246 }2246 }
2247 2247
arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c+0−21
@@ -55,27 +55,6 @@ struct omap_hwmod_class omap2_dss_hwmod_class = { · 54 unmodified lines
55 .reset = omap_dss_reset,55 .reset = omap_dss_reset,
56};56};
57 57
58/*
59 * 'dispc' class
60 * display controller
61 */
62
63static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
64 .rev_offs = 0x0000,
65 .sysc_offs = 0x0010,
66 .syss_offs = 0x0014,
67 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
68 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
69 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
70 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
71 .sysc_fields = &omap_hwmod_sysc_type1,
72};
73
74struct omap_hwmod_class omap2_dispc_hwmod_class = {
75 .name = "dispc",
76 .sysc = &omap2_dispc_sysc,
77};
78
79/*58/*
80 * 'rfbi' class59 * 'rfbi' class
81 * remote frame buffer interface60 * remote frame buffer interface
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c+22−0
@@ -28,6 +28,28 @@ struct omap_hwmod_dma_info omap2xxx_dss_sdma_chs[] = { · 27 unmodified lines
28 { .name = "dispc", .dma_req = 5 },28 { .name = "dispc", .dma_req = 5 },
29 { .dma_req = -1 }29 { .dma_req = -1 }
30};30};
31
32/*
33 * 'dispc' class
34 * display controller
35 */
36
37static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
38 .rev_offs = 0x0000,
39 .sysc_offs = 0x0010,
40 .syss_offs = 0x0014,
41 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
42 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
43 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
44 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
45 .sysc_fields = &omap_hwmod_sysc_type1,
46};
47
48struct omap_hwmod_class omap2_dispc_hwmod_class = {
49 .name = "dispc",
50 .sysc = &omap2_dispc_sysc,
51};
52
31/* OMAP2xxx Timer Common */53/* OMAP2xxx Timer Common */
32static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {54static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
33 .rev_offs = 0x0000,55 .rev_offs = 0x0000,
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c+47−7
@@ -1480,6 +1480,28 @@ static struct omap_hwmod omap3xxx_dss_core_hwmod = { · 1479 unmodified lines
1480 .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),1480 .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
1481};1481};
1482 1482
1483/*
1484 * 'dispc' class
1485 * display controller
1486 */
1487
1488static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
1489 .rev_offs = 0x0000,
1490 .sysc_offs = 0x0010,
1491 .syss_offs = 0x0014,
1492 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
1493 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
1494 SYSC_HAS_ENAWAKEUP),
1495 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1496 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1497 .sysc_fields = &omap_hwmod_sysc_type1,
1498};
1499
1500static struct omap_hwmod_class omap3_dispc_hwmod_class = {
1501 .name = "dispc",
1502 .sysc = &omap3_dispc_sysc,
1503};
1504
1483/* l4_core -> dss_dispc */1505/* l4_core -> dss_dispc */
1484static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {1506static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
1485 .master = &omap3xxx_l4_core_hwmod,1507 .master = &omap3xxx_l4_core_hwmod,
@@ -1503,7 +1525,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = { · 17 unmodified lines
1503 1525
1504static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {1526static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
1505 .name = "dss_dispc",1527 .name = "dss_dispc",
1506 .class = &omap2_dispc_hwmod_class,1528 .class = &omap3_dispc_hwmod_class,
1507 .mpu_irqs = omap2_dispc_irqs,1529 .mpu_irqs = omap2_dispc_irqs,
1508 .main_clk = "dss1_alwon_fck",1530 .main_clk = "dss1_alwon_fck",
1509 .prcm = {1531 .prcm = {
@@ -3523,12 +3545,6 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = { · 2013 unmodified lines
3523 &omap3xxx_uart2_hwmod,3545 &omap3xxx_uart2_hwmod,
3524 &omap3xxx_uart3_hwmod,3546 &omap3xxx_uart3_hwmod,
3525 3547
3526 /* dss class */
3527 &omap3xxx_dss_dispc_hwmod,
3528 &omap3xxx_dss_dsi1_hwmod,
3529 &omap3xxx_dss_rfbi_hwmod,
3530 &omap3xxx_dss_venc_hwmod,
3531
3532 /* i2c class */3548 /* i2c class */
3533 &omap3xxx_i2c1_hwmod,3549 &omap3xxx_i2c1_hwmod,
3534 &omap3xxx_i2c2_hwmod,3550 &omap3xxx_i2c2_hwmod,
@@ -3635,6 +3651,15 @@ static __initdata struct omap_hwmod *am35xx_hwmods[] = { · 100 unmodified lines
3635 NULL3651 NULL
3636};3652};
3637 3653
3654static __initdata struct omap_hwmod *omap3xxx_dss_hwmods[] = {
3655 /* dss class */
3656 &omap3xxx_dss_dispc_hwmod,
3657 &omap3xxx_dss_dsi1_hwmod,
3658 &omap3xxx_dss_rfbi_hwmod,
3659 &omap3xxx_dss_venc_hwmod,
3660 NULL
3661};
3662
3638int __init omap3xxx_hwmod_init(void)3663int __init omap3xxx_hwmod_init(void)
3639{3664{
3640 int r;3665 int r;
@@ -3708,6 +3733,21 @@ int __init omap3xxx_hwmod_init(void) · 67 unmodified lines
3708 3733
3709 if (h)3734 if (h)
3710 r = omap_hwmod_register(h);3735 r = omap_hwmod_register(h);
3736 if (r < 0)
3737 return r;
3738
3739 /*
3740 * DSS code presumes that dss_core hwmod is handled first,
3741 * _before_ any other DSS related hwmods so register common
3742 * DSS hwmods last to ensure that dss_core is already registered.
3743 * Otherwise some change things may happen, for ex. if dispc
3744 * is handled before dss_core and DSS is enabled in bootloader
3745 * DIPSC will be reset with outputs enabled which sometimes leads
3746 * to unrecoverable L3 error.
3747 * XXX The long-term fix to this is to ensure modules are set up
3748 * in dependency order in the hwmod core code.
3749 */
3750 r = omap_hwmod_register(omap3xxx_dss_hwmods);
3711 3751
3712 return r;3752 return r;
3713}3753}
arch/arm/mach-omap2/omap_hwmod_44xx_data.c+2−0
@@ -1031,6 +1031,7 @@ static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = { · 1030 unmodified lines
1031 1031
1032static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {1032static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
1033 {1033 {
1034 .name = "mpu",
1034 .pa_start = 0x4012e000,1035 .pa_start = 0x4012e000,
1035 .pa_end = 0x4012e07f,1036 .pa_end = 0x4012e07f,
1036 .flags = ADDR_TYPE_RT1037 .flags = ADDR_TYPE_RT
@@ -1049,6 +1050,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = { · 12 unmodified lines
1049 1050
1050static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {1051static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
1051 {1052 {
1053 .name = "dma",
1052 .pa_start = 0x4902e000,1054 .pa_start = 0x4902e000,
1053 .pa_end = 0x4902e07f,1055 .pa_end = 0x4902e07f,
1054 .flags = ADDR_TYPE_RT1056 .flags = ADDR_TYPE_RT
arch/arm/mach-omap2/pm24xx.c+1−7
@@ -82,13 +82,7 @@ static int omap2_fclks_active(void) · 81 unmodified lines
82 f1 = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);82 f1 = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
83 f2 = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);83 f2 = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
84 84
85 /* Ignore UART clocks. These are handled by UART core (serial.c) */85 return (f1 | f2) ? 1 : 0;
86 f1 &= ~(OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_UART2_MASK);
87 f2 &= ~OMAP24XX_EN_UART3_MASK;
88
89 if (f1 | f2)
90 return 1;
91 return 0;
92}86}
93 87
94static void omap2_enter_full_retention(void)88static void omap2_enter_full_retention(void)
arch/arm/mach-omap2/prm2xxx_3xxx.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
19#include "common.h"19#include "common.h"
20#include <plat/cpu.h>20#include <plat/cpu.h>
21#include <plat/prcm.h>21#include <plat/prcm.h>
22#include <plat/irqs.h>
22 23
23#include "vp.h"24#include "vp.h"
24 25
arch/arm/mach-omap2/prm44xx.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
19 19
20#include "common.h"20#include "common.h"
21#include <plat/cpu.h>21#include <plat/cpu.h>
22#include <plat/irqs.h>
22#include <plat/prcm.h>23#include <plat/prcm.h>
23 24
24#include "vp.h"25#include "vp.h"
arch/arm/mach-omap2/serial.c+4−4
@@ -107,18 +107,18 @@ static void omap_uart_set_noidle(struct platform_device *pdev) · 106 unmodified lines
107 omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO);107 omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO);
108}108}
109 109
110static void omap_uart_set_forceidle(struct platform_device *pdev)110static void omap_uart_set_smartidle(struct platform_device *pdev)
111{111{
112 struct omap_device *od = to_omap_device(pdev);112 struct omap_device *od = to_omap_device(pdev);
113 113
114 omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_FORCE);114 omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_SMART);
115}115}
116 116
117#else117#else
118static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable)118static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable)
119{}119{}
120static void omap_uart_set_noidle(struct platform_device *pdev) {}120static void omap_uart_set_noidle(struct platform_device *pdev) {}
121static void omap_uart_set_forceidle(struct platform_device *pdev) {}121static void omap_uart_set_smartidle(struct platform_device *pdev) {}
122#endif /* CONFIG_PM */122#endif /* CONFIG_PM */
123 123
124#ifdef CONFIG_OMAP_MUX124#ifdef CONFIG_OMAP_MUX
@@ -349,7 +349,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata, · 224 unmodified lines
349 omap_up.uartclk = OMAP24XX_BASE_BAUD * 16;349 omap_up.uartclk = OMAP24XX_BASE_BAUD * 16;
350 omap_up.flags = UPF_BOOT_AUTOCONF;350 omap_up.flags = UPF_BOOT_AUTOCONF;
351 omap_up.get_context_loss_count = omap_pm_get_dev_context_loss_count;351 omap_up.get_context_loss_count = omap_pm_get_dev_context_loss_count;
352 omap_up.set_forceidle = omap_uart_set_forceidle;352 omap_up.set_forceidle = omap_uart_set_smartidle;
353 omap_up.set_noidle = omap_uart_set_noidle;353 omap_up.set_noidle = omap_uart_set_noidle;
354 omap_up.enable_wakeup = omap_uart_enable_wakeup;354 omap_up.enable_wakeup = omap_uart_enable_wakeup;
355 omap_up.dma_rx_buf_size = info->dma_rx_buf_size;355 omap_up.dma_rx_buf_size = info->dma_rx_buf_size;
arch/arm/mach-omap2/smartreflex.c+1−1
@@ -897,7 +897,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) · 896 unmodified lines
897 ret = sr_late_init(sr_info);897 ret = sr_late_init(sr_info);
898 if (ret) {898 if (ret) {
899 pr_warning("%s: Error in SR late init\n", __func__);899 pr_warning("%s: Error in SR late init\n", __func__);
900 return ret;900 goto err_iounmap;
901 }901 }
902 }902 }
903 903
arch/arm/mach-omap2/timer.c+1−1
@@ -270,7 +270,7 @@ static struct clocksource clocksource_gpt = { · 269 unmodified lines
270static u32 notrace dmtimer_read_sched_clock(void)270static u32 notrace dmtimer_read_sched_clock(void)
271{271{
272 if (clksrc.reserved)272 if (clksrc.reserved)
273 return __omap_dm_timer_read_counter(clksrc.io_base, 1);273 return __omap_dm_timer_read_counter(&clksrc, 1);
274 274
275 return 0;275 return 0;
276}276}
arch/arm/mach-omap2/vc.c+4−6
@@ -247,7 +247,7 @@ static void __init omap4_vc_init_channel(struct voltagedomain *voltdm) · 246 unmodified lines
247 * omap_vc_i2c_init - initialize I2C interface to PMIC247 * omap_vc_i2c_init - initialize I2C interface to PMIC
248 * @voltdm: voltage domain containing VC data248 * @voltdm: voltage domain containing VC data
249 *249 *
250 * Use PMIC supplied seetings for I2C high-speed mode and250 * Use PMIC supplied settings for I2C high-speed mode and
251 * master code (if set) and program the VC I2C configuration251 * master code (if set) and program the VC I2C configuration
252 * register.252 * register.
253 *253 *
@@ -265,8 +265,8 @@ static void __init omap_vc_i2c_init(struct voltagedomain *voltdm) · 11 unmodified lines
265 265
266 if (initialized) {266 if (initialized) {
267 if (voltdm->pmic->i2c_high_speed != i2c_high_speed)267 if (voltdm->pmic->i2c_high_speed != i2c_high_speed)
268 pr_warn("%s: I2C config for all channels must match.",268 pr_warn("%s: I2C config for vdd_%s does not match other channels (%u).",
269 __func__);269 __func__, voltdm->name, i2c_high_speed);
270 return;270 return;
271 }271 }
272 272
@@ -292,9 +292,7 @@ void __init omap_vc_init_channel(struct voltagedomain *voltdm) · 19 unmodified lines
292 u32 val;292 u32 val;
293 293
294 if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) {294 if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) {
295 pr_err("%s: PMIC info requried to configure vc for"295 pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name);
296 "vdd_%s not populated.Hence cannot initialize vc\n",
297 __func__, voltdm->name);
298 return;296 return;
299 }297 }
300 298
arch/arm/mach-omap2/voltagedomains3xxx_data.c+2−0
@@ -108,6 +108,7 @@ void __init omap3xxx_voltagedomains_init(void) · 107 unmodified lines
108 * XXX Will depend on the process, validation, and binning108 * XXX Will depend on the process, validation, and binning
109 * for the currently-running IC109 * for the currently-running IC
110 */110 */
111#ifdef CONFIG_PM_OPP
111 if (cpu_is_omap3630()) {112 if (cpu_is_omap3630()) {
112 omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data;113 omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data;
113 omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data;114 omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data;
@@ -115,6 +116,7 @@ void __init omap3xxx_voltagedomains_init(void) · 1 unmodified line
115 omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data;116 omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data;
116 omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data;117 omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data;
117 }118 }
119#endif
118 120
119 if (cpu_is_omap3517() || cpu_is_omap3505())121 if (cpu_is_omap3517() || cpu_is_omap3505())
120 voltdms = voltagedomains_am35xx;122 voltdms = voltagedomains_am35xx;
arch/arm/mach-omap2/voltagedomains44xx_data.c+2−0
@@ -100,9 +100,11 @@ void __init omap44xx_voltagedomains_init(void) · 99 unmodified lines
100 * XXX Will depend on the process, validation, and binning100 * XXX Will depend on the process, validation, and binning
101 * for the currently-running IC101 * for the currently-running IC
102 */102 */
103#ifdef CONFIG_PM_OPP
103 omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data;104 omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data;
104 omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data;105 omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data;
105 omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data;106 omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data;
107#endif
106 108
107 for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++)109 for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++)
108 voltdm->sys_clk.name = sys_clk_name;110 voltdm->sys_clk.name = sys_clk_name;
arch/arm/mach-omap2/vp.c+5−0
@@ -41,6 +41,11 @@ void __init omap_vp_init(struct voltagedomain *voltdm) · 40 unmodified lines
41 u32 val, sys_clk_rate, timeout, waittime;41 u32 val, sys_clk_rate, timeout, waittime;
42 u32 vddmin, vddmax, vstepmin, vstepmax;42 u32 vddmin, vddmax, vstepmin, vstepmax;
43 43
44 if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) {
45 pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name);
46 return;
47 }
48
44 if (!voltdm->read || !voltdm->write) {49 if (!voltdm->read || !voltdm->write) {
45 pr_err("%s: No read/write API for accessing vdd_%s regs\n",50 pr_err("%s: No read/write API for accessing vdd_%s regs\n",
46 __func__, voltdm->name);51 __func__, voltdm->name);
arch/arm/mach-orion5x/common.c+3−1
@@ -29,6 +29,7 @@ · 28 unmodified lines
29#include <mach/hardware.h>29#include <mach/hardware.h>
30#include <mach/orion5x.h>30#include <mach/orion5x.h>
31#include <plat/orion_nand.h>31#include <plat/orion_nand.h>
32#include <plat/ehci-orion.h>
32#include <plat/time.h>33#include <plat/time.h>
33#include <plat/common.h>34#include <plat/common.h>
34#include <plat/addr-map.h>35#include <plat/addr-map.h>
@@ -72,7 +73,8 @@ void __init orion5x_map_io(void) · 37 unmodified lines
72 ****************************************************************************/73 ****************************************************************************/
73void __init orion5x_ehci0_init(void)74void __init orion5x_ehci0_init(void)
74{75{
75 orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL);76 orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
77 EHCI_PHY_ORION);
76}78}
77 79
78 80
arch/arm/mach-picoxcell/time.c+1−1
@@ -67,7 +67,7 @@ static void picoxcell_add_clocksource(struct device_node *source_timer) · 66 unmodified lines
67 67
68static void __iomem *sched_io_base;68static void __iomem *sched_io_base;
69 69
70unsigned u32 notrace picoxcell_read_sched_clock(void)70static u32 picoxcell_read_sched_clock(void)
71{71{
72 return __raw_readl(sched_io_base);72 return __raw_readl(sched_io_base);
73}73}
arch/arm/mach-pxa/devices.c+0−20
@@ -415,29 +415,9 @@ static struct resource pxa_rtc_resources[] = { · 414 unmodified lines
415 },415 },
416};416};
417 417
418static struct resource sa1100_rtc_resources[] = {
419 [0] = {
420 .start = 0x40900000,
421 .end = 0x409000ff,
422 .flags = IORESOURCE_MEM,
423 },
424 [1] = {
425 .start = IRQ_RTC1Hz,
426 .end = IRQ_RTC1Hz,
427 .flags = IORESOURCE_IRQ,
428 },
429 [2] = {
430 .start = IRQ_RTCAlrm,
431 .end = IRQ_RTCAlrm,
432 .flags = IORESOURCE_IRQ,
433 },
434};
435
436struct platform_device sa1100_device_rtc = {418struct platform_device sa1100_device_rtc = {
437 .name = "sa1100-rtc",419 .name = "sa1100-rtc",
438 .id = -1,420 .id = -1,
439 .num_resources = ARRAY_SIZE(sa1100_rtc_resources),
440 .resource = sa1100_rtc_resources,
441};421};
442 422
443struct platform_device pxa_device_rtc = {423struct platform_device pxa_device_rtc = {
arch/arm/mach-pxa/pxa25x.c+0−2
@@ -209,8 +209,6 @@ static struct clk_lookup pxa25x_clkregs[] = { · 208 unmodified lines
209 INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"),209 INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"),
210 INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"),210 INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"),
211 INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL),211 INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL),
212 INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL),
213 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
214};212};
215 213
216static struct clk_lookup pxa25x_hwuart_clkreg =214static struct clk_lookup pxa25x_hwuart_clkreg =
arch/arm/mach-pxa/pxa27x.c+0−2
@@ -230,8 +230,6 @@ static struct clk_lookup pxa27x_clkregs[] = { · 229 unmodified lines
230 INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"),230 INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"),
231 INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"),231 INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"),
232 INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL),232 INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL),
233 INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL),
234 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
235};233};
236 234
237#ifdef CONFIG_PM235#ifdef CONFIG_PM
arch/arm/mach-pxa/pxa300.c+0−1
@@ -89,7 +89,6 @@ static DEFINE_PXA3_CKEN(gcu, PXA300_GCU, 0, 0); · 88 unmodified lines
89static struct clk_lookup common_clkregs[] = {89static struct clk_lookup common_clkregs[] = {
90 INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),90 INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
91 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),91 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),
92 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
93};92};
94 93
95static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);94static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
arch/arm/mach-pxa/pxa320.c+0−1
@@ -83,7 +83,6 @@ static DEFINE_PXA3_CKEN(gcu, PXA320_GCU, 0, 0); · 82 unmodified lines
83static struct clk_lookup pxa320_clkregs[] = {83static struct clk_lookup pxa320_clkregs[] = {
84 INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),84 INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
85 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),85 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),
86 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
87};86};
88 87
89static int __init pxa320_init(void)88static int __init pxa320_init(void)
arch/arm/mach-pxa/pxa3xx.c+0−1
@@ -67,7 +67,6 @@ static struct clk_lookup pxa3xx_clkregs[] = { · 66 unmodified lines
67 INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"),67 INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"),
68 /* Power I2C clock is always on */68 /* Power I2C clock is always on */
69 INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL),69 INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL),
70 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
71 INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL),70 INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL),
72 INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"),71 INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"),
73 INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"),72 INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"),
arch/arm/mach-pxa/pxa95x.c+0−1
@@ -217,7 +217,6 @@ static struct clk_lookup pxa95x_clkregs[] = { · 216 unmodified lines
217 INIT_CLKREG(&clk_pxa95x_pout, NULL, "CLK_POUT"),217 INIT_CLKREG(&clk_pxa95x_pout, NULL, "CLK_POUT"),
218 /* Power I2C clock is always on */218 /* Power I2C clock is always on */
219 INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL),219 INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL),
220 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
221 INIT_CLKREG(&clk_pxa95x_lcd, "pxa2xx-fb", NULL),220 INIT_CLKREG(&clk_pxa95x_lcd, "pxa2xx-fb", NULL),
222 INIT_CLKREG(&clk_pxa95x_ffuart, "pxa2xx-uart.0", NULL),221 INIT_CLKREG(&clk_pxa95x_ffuart, "pxa2xx-uart.0", NULL),
223 INIT_CLKREG(&clk_pxa95x_btuart, "pxa2xx-uart.1", NULL),222 INIT_CLKREG(&clk_pxa95x_btuart, "pxa2xx-uart.1", NULL),
arch/arm/mach-realview/hotplug.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
13#include <linux/smp.h>13#include <linux/smp.h>
14 14
15#include <asm/cacheflush.h>15#include <asm/cacheflush.h>
16#include <asm/smp_plat.h>
16 17
17extern volatile int pen_release;18extern volatile int pen_release;
18 19
arch/arm/mach-realview/include/mach/board-eb.h+10−8
@@ -47,21 +47,23 @@ · 46 unmodified lines
47#define REALVIEW_EB_USB_BASE 0x4F000000 /* USB */47#define REALVIEW_EB_USB_BASE 0x4F000000 /* USB */
48 48
49#ifdef CONFIG_REALVIEW_EB_ARM11MP_REVB49#ifdef CONFIG_REALVIEW_EB_ARM11MP_REVB
50#define REALVIEW_EB11MP_SCU_BASE 0x10100000 /* SCU registers */50#define REALVIEW_EB11MP_PRIV_MEM_BASE 0x1F000000
51#define REALVIEW_EB11MP_GIC_CPU_BASE 0x10100100 /* Generic interrupt controller CPU interface */
52#define REALVIEW_EB11MP_TWD_BASE 0x10100600
53#define REALVIEW_EB11MP_GIC_DIST_BASE 0x10101000 /* Generic interrupt controller distributor */
54#define REALVIEW_EB11MP_L220_BASE 0x10102000 /* L220 registers */51#define REALVIEW_EB11MP_L220_BASE 0x10102000 /* L220 registers */
55#define REALVIEW_EB11MP_SYS_PLD_CTRL1 0xD8 /* Register offset for MPCore sysctl */52#define REALVIEW_EB11MP_SYS_PLD_CTRL1 0xD8 /* Register offset for MPCore sysctl */
56#else53#else
57#define REALVIEW_EB11MP_SCU_BASE 0x1F000000 /* SCU registers */54#define REALVIEW_EB11MP_PRIV_MEM_BASE 0x1F000000
58#define REALVIEW_EB11MP_GIC_CPU_BASE 0x1F000100 /* Generic interrupt controller CPU interface */
59#define REALVIEW_EB11MP_TWD_BASE 0x1F000600
60#define REALVIEW_EB11MP_GIC_DIST_BASE 0x1F001000 /* Generic interrupt controller distributor */
61#define REALVIEW_EB11MP_L220_BASE 0x1F002000 /* L220 registers */55#define REALVIEW_EB11MP_L220_BASE 0x1F002000 /* L220 registers */
62#define REALVIEW_EB11MP_SYS_PLD_CTRL1 0x74 /* Register offset for MPCore sysctl */56#define REALVIEW_EB11MP_SYS_PLD_CTRL1 0x74 /* Register offset for MPCore sysctl */
63#endif57#endif
64 58
59#define REALVIEW_EB11MP_PRIV_MEM_SIZE SZ_8K
60#define REALVIEW_EB11MP_PRIV_MEM_OFF(x) (REALVIEW_EB11MP_PRIV_MEM_BASE + (x))
61
62#define REALVIEW_EB11MP_SCU_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0) /* SCU registers */
63#define REALVIEW_EB11MP_GIC_CPU_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0x0100) /* Generic interrupt controller CPU interface */
64#define REALVIEW_EB11MP_TWD_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0x0600)
65#define REALVIEW_EB11MP_GIC_DIST_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0x1000) /* Generic interrupt controller distributor */
66
65/*67/*
66 * Core tile identification (REALVIEW_SYS_PROCID)68 * Core tile identification (REALVIEW_SYS_PROCID)
67 */69 */
arch/arm/mach-realview/include/mach/board-pb11mp.h+2−0
@@ -75,6 +75,8 @@ · 74 unmodified lines
75/*75/*
76 * Testchip peripheral and fpga gic regions76 * Testchip peripheral and fpga gic regions
77 */77 */
78#define REALVIEW_TC11MP_PRIV_MEM_BASE 0x1F000000
79#define REALVIEW_TC11MP_PRIV_MEM_SIZE SZ_8K
78#define REALVIEW_TC11MP_SCU_BASE 0x1F000000 /* IRQ, Test chip */80#define REALVIEW_TC11MP_SCU_BASE 0x1F000000 /* IRQ, Test chip */
79#define REALVIEW_TC11MP_GIC_CPU_BASE 0x1F000100 /* Test chip interrupt controller CPU interface */81#define REALVIEW_TC11MP_GIC_CPU_BASE 0x1F000100 /* Test chip interrupt controller CPU interface */
80#define REALVIEW_TC11MP_TWD_BASE 0x1F00060082#define REALVIEW_TC11MP_TWD_BASE 0x1F000600
arch/arm/mach-realview/platsmp.c+1−2
@@ -17,7 +17,6 @@ · 16 unmodified lines
17#include <asm/hardware/gic.h>17#include <asm/hardware/gic.h>
18#include <asm/mach-types.h>18#include <asm/mach-types.h>
19#include <asm/smp_scu.h>19#include <asm/smp_scu.h>
20#include <asm/unified.h>
21 20
22#include <mach/board-eb.h>21#include <mach/board-eb.h>
23#include <mach/board-pb11mp.h>22#include <mach/board-pb11mp.h>
@@ -75,6 +74,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) · 51 unmodified lines
75 * until it receives a soft interrupt, and then the74 * until it receives a soft interrupt, and then the
76 * secondary CPU branches to this address.75 * secondary CPU branches to this address.
77 */76 */
78 __raw_writel(BSYM(virt_to_phys(versatile_secondary_startup)),77 __raw_writel(virt_to_phys(versatile_secondary_startup),
79 __io_address(REALVIEW_SYS_FLAGSSET));78 __io_address(REALVIEW_SYS_FLAGSSET));
80}79}
arch/arm/mach-realview/realview_eb.c+3−8
@@ -91,14 +91,9 @@ static struct map_desc realview_eb_io_desc[] __initdata = { · 90 unmodified lines
91 91
92static struct map_desc realview_eb11mp_io_desc[] __initdata = {92static struct map_desc realview_eb11mp_io_desc[] __initdata = {
93 {93 {
94 .virtual = IO_ADDRESS(REALVIEW_EB11MP_SCU_BASE),94 .virtual = IO_ADDRESS(REALVIEW_EB11MP_PRIV_MEM_BASE),
95 .pfn = __phys_to_pfn(REALVIEW_EB11MP_SCU_BASE),95 .pfn = __phys_to_pfn(REALVIEW_EB11MP_PRIV_MEM_BASE),
96 .length = SZ_4K,96 .length = REALVIEW_EB11MP_PRIV_MEM_SIZE,
97 .type = MT_DEVICE,
98 }, {
99 .virtual = IO_ADDRESS(REALVIEW_EB11MP_GIC_DIST_BASE),
100 .pfn = __phys_to_pfn(REALVIEW_EB11MP_GIC_DIST_BASE),
101 .length = SZ_4K,
102 .type = MT_DEVICE,97 .type = MT_DEVICE,
103 }, {98 }, {
104 .virtual = IO_ADDRESS(REALVIEW_EB11MP_L220_BASE),99 .virtual = IO_ADDRESS(REALVIEW_EB11MP_L220_BASE),
arch/arm/mach-realview/realview_pb11mp.c+4−9
@@ -64,15 +64,10 @@ static struct map_desc realview_pb11mp_io_desc[] __initdata = { · 63 unmodified lines
64 .pfn = __phys_to_pfn(REALVIEW_PB11MP_GIC_DIST_BASE),64 .pfn = __phys_to_pfn(REALVIEW_PB11MP_GIC_DIST_BASE),
65 .length = SZ_4K,65 .length = SZ_4K,
66 .type = MT_DEVICE,66 .type = MT_DEVICE,
67 }, {67 }, { /* Maps the SCU, GIC CPU interface, TWD, GIC DIST */
68 .virtual = IO_ADDRESS(REALVIEW_TC11MP_GIC_CPU_BASE),68 .virtual = IO_ADDRESS(REALVIEW_TC11MP_PRIV_MEM_BASE),
69 .pfn = __phys_to_pfn(REALVIEW_TC11MP_GIC_CPU_BASE),69 .pfn = __phys_to_pfn(REALVIEW_TC11MP_PRIV_MEM_BASE),
70 .length = SZ_4K,70 .length = REALVIEW_TC11MP_PRIV_MEM_SIZE,
71 .type = MT_DEVICE,
72 }, {
73 .virtual = IO_ADDRESS(REALVIEW_TC11MP_GIC_DIST_BASE),
74 .pfn = __phys_to_pfn(REALVIEW_TC11MP_GIC_DIST_BASE),
75 .length = SZ_4K,
76 .type = MT_DEVICE,71 .type = MT_DEVICE,
77 }, {72 }, {
78 .virtual = IO_ADDRESS(REALVIEW_SCTL_BASE),73 .virtual = IO_ADDRESS(REALVIEW_SCTL_BASE),
arch/arm/mach-s3c2410/cpu-freq.c+5−3
@@ -115,7 +115,8 @@ static struct s3c_cpufreq_info s3c2410_cpufreq_info = { · 114 unmodified lines
115 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),115 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),
116};116};
117 117
118static int s3c2410_cpufreq_add(struct device *dev)118static int s3c2410_cpufreq_add(struct device *dev,
119 struct subsys_interface *sif)
119{120{
120 return s3c_cpufreq_register(&s3c2410_cpufreq_info);121 return s3c_cpufreq_register(&s3c2410_cpufreq_info);
121}122}
@@ -133,7 +134,8 @@ static int __init s3c2410_cpufreq_init(void) · 11 unmodified lines
133 134
134arch_initcall(s3c2410_cpufreq_init);135arch_initcall(s3c2410_cpufreq_init);
135 136
136static int s3c2410a_cpufreq_add(struct device *dev)137static int s3c2410a_cpufreq_add(struct device *dev,
138 struct subsys_interface *sif)
137{139{
138 /* alter the maximum freq settings for S3C2410A. If a board knows140 /* alter the maximum freq settings for S3C2410A. If a board knows
139 * it only has a maximum of 200, then it should register its own141 * it only has a maximum of 200, then it should register its own
@@ -144,7 +146,7 @@ static int s3c2410a_cpufreq_add(struct device *dev) · 4 unmodified lines
144 s3c2410_cpufreq_info.max.pclk = 66500000;146 s3c2410_cpufreq_info.max.pclk = 66500000;
145 s3c2410_cpufreq_info.name = "s3c2410a";147 s3c2410_cpufreq_info.name = "s3c2410a";
146 148
147 return s3c2410_cpufreq_add(dev);149 return s3c2410_cpufreq_add(dev, sif);
148}150}
149 151
150static struct subsys_interface s3c2410a_cpufreq_interface = {152static struct subsys_interface s3c2410a_cpufreq_interface = {
arch/arm/mach-s3c2410/dma.c+3−2
@@ -132,7 +132,8 @@ static struct s3c24xx_dma_order __initdata s3c2410_dma_order = { · 131 unmodified lines
132 },132 },
133};133};
134 134
135static int __init s3c2410_dma_add(struct device *dev)135static int __init s3c2410_dma_add(struct device *dev,
136 struct subsys_interface *sif)
136{137{
137 s3c2410_dma_init();138 s3c2410_dma_init();
138 s3c24xx_dma_order_set(&s3c2410_dma_order);139 s3c24xx_dma_order_set(&s3c2410_dma_order);
@@ -148,7 +149,7 @@ static struct subsys_interface s3c2410_dma_interface = { · 9 unmodified lines
148 149
149static int __init s3c2410_dma_drvinit(void)150static int __init s3c2410_dma_drvinit(void)
150{151{
151 return subsys_interface_register(&s3c2410_interface);152 return subsys_interface_register(&s3c2410_dma_interface);
152}153}
153 154
154arch_initcall(s3c2410_dma_drvinit);155arch_initcall(s3c2410_dma_drvinit);
arch/arm/mach-s3c2410/pll.c+1−1
@@ -66,7 +66,7 @@ static struct cpufreq_frequency_table pll_vals_12MHz[] = { · 65 unmodified lines
66 { .frequency = 270000000, .index = PLLVAL(127, 1, 1), },66 { .frequency = 270000000, .index = PLLVAL(127, 1, 1), },
67};67};
68 68
69static int s3c2410_plls_add(struct device *dev)69static int s3c2410_plls_add(struct device *dev, struct subsys_interface *sif)
70{70{
71 return s3c_plltab_register(pll_vals_12MHz, ARRAY_SIZE(pll_vals_12MHz));71 return s3c_plltab_register(pll_vals_12MHz, ARRAY_SIZE(pll_vals_12MHz));
72}72}
arch/arm/mach-s3c2410/pm.c+1−1
@@ -111,7 +111,7 @@ struct syscore_ops s3c2410_pm_syscore_ops = { · 110 unmodified lines
111 .resume = s3c2410_pm_resume,111 .resume = s3c2410_pm_resume,
112};112};
113 113
114static int s3c2410_pm_add(struct device *dev)114static int s3c2410_pm_add(struct device *dev, struct subsys_interface *sif)
115{115{
116 pm_cpu_prep = s3c2410_pm_prepare;116 pm_cpu_prep = s3c2410_pm_prepare;
117 pm_cpu_sleep = s3c2410_cpu_suspend;117 pm_cpu_sleep = s3c2410_cpu_suspend;
arch/arm/mach-s3c2412/cpu-freq.c+2−1
@@ -194,7 +194,8 @@ static struct s3c_cpufreq_info s3c2412_cpufreq_info = { · 193 unmodified lines
194 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2412_iotiming_debugfs),194 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2412_iotiming_debugfs),
195};195};
196 196
197static int s3c2412_cpufreq_add(struct device *dev)197static int s3c2412_cpufreq_add(struct device *dev,
198 struct subsys_interface *sif)
198{199{
199 unsigned long fclk_rate;200 unsigned long fclk_rate;
200 201
arch/arm/mach-s3c2412/dma.c+2−1
@@ -159,7 +159,8 @@ static struct s3c24xx_dma_selection __initdata s3c2412_dma_sel = { · 158 unmodified lines
159 .map_size = ARRAY_SIZE(s3c2412_dma_mappings),159 .map_size = ARRAY_SIZE(s3c2412_dma_mappings),
160};160};
161 161
162static int __init s3c2412_dma_add(struct device *dev)162static int __init s3c2412_dma_add(struct device *dev,
163 struct subsys_interface *sif)
163{164{
164 s3c2410_dma_init();165 s3c2410_dma_init();
165 return s3c24xx_dma_init_map(&s3c2412_dma_sel);166 return s3c24xx_dma_init_map(&s3c2412_dma_sel);
arch/arm/mach-s3c2412/irq.c+1−1
@@ -170,7 +170,7 @@ static int s3c2412_irq_rtc_wake(struct irq_data *data, unsigned int state) · 169 unmodified lines
170 170
171static struct irq_chip s3c2412_irq_rtc_chip;171static struct irq_chip s3c2412_irq_rtc_chip;
172 172
173static int s3c2412_irq_add(struct device *dev)173static int s3c2412_irq_add(struct device *dev, struct subsys_interface *sif)
174{174{
175 unsigned int irqno;175 unsigned int irqno;
176 176
arch/arm/mach-s3c2412/pm.c+1−1
@@ -56,7 +56,7 @@ static void s3c2412_pm_prepare(void) · 55 unmodified lines
56{56{
57}57}
58 58
59static int s3c2412_pm_add(struct device *dev)59static int s3c2412_pm_add(struct device *dev, struct subsys_interface *sif)
60{60{
61 pm_cpu_prep = s3c2412_pm_prepare;61 pm_cpu_prep = s3c2412_pm_prepare;
62 pm_cpu_sleep = s3c2412_cpu_suspend;62 pm_cpu_sleep = s3c2412_cpu_suspend;
arch/arm/mach-s3c2416/irq.c+2−1
@@ -213,7 +213,8 @@ static int __init s3c2416_add_sub(unsigned int base, · 212 unmodified lines
213 return 0;213 return 0;
214}214}
215 215
216static int __init s3c2416_irq_add(struct device *dev)216static int __init s3c2416_irq_add(struct device *dev,
217 struct subsys_interface *sif)
217{218{
218 printk(KERN_INFO "S3C2416: IRQ Support\n");219 printk(KERN_INFO "S3C2416: IRQ Support\n");
219 220
arch/arm/mach-s3c2416/pm.c+1−1
@@ -48,7 +48,7 @@ static void s3c2416_pm_prepare(void) · 47 unmodified lines
48 __raw_writel(virt_to_phys(s3c_cpu_resume), S3C2412_INFORM1);48 __raw_writel(virt_to_phys(s3c_cpu_resume), S3C2412_INFORM1);
49}49}
50 50
51static int s3c2416_pm_add(struct device *dev)51static int s3c2416_pm_add(struct device *dev, struct subsys_interface *sif)
52{52{
53 pm_cpu_prep = s3c2416_pm_prepare;53 pm_cpu_prep = s3c2416_pm_prepare;
54 pm_cpu_sleep = s3c2416_cpu_suspend;54 pm_cpu_sleep = s3c2416_cpu_suspend;
arch/arm/mach-s3c2440/clock.c+1−1
@@ -149,7 +149,7 @@ static struct clk_lookup s3c2440_clk_lookup[] = { · 148 unmodified lines
149 CLKDEV_INIT(NULL, "clk_uart_baud3", &s3c2440_clk_fclk_n),149 CLKDEV_INIT(NULL, "clk_uart_baud3", &s3c2440_clk_fclk_n),
150};150};
151 151
152static int s3c2440_clk_add(struct device *dev)152static int s3c2440_clk_add(struct device *dev, struct subsys_interface *sif)
153{153{
154 struct clk *clock_upll;154 struct clk *clock_upll;
155 struct clk *clock_h;155 struct clk *clock_h;
arch/arm/mach-s3c2440/dma.c+2−1
@@ -174,7 +174,8 @@ static struct s3c24xx_dma_order __initdata s3c2440_dma_order = { · 173 unmodified lines
174 },174 },
175};175};
176 176
177static int __init s3c2440_dma_add(struct device *dev)177static int __init s3c2440_dma_add(struct device *dev,
178 struct subsys_interface *sif)
178{179{
179 s3c2410_dma_init();180 s3c2410_dma_init();
180 s3c24xx_dma_order_set(&s3c2440_dma_order);181 s3c24xx_dma_order_set(&s3c2440_dma_order);
arch/arm/mach-s3c2440/irq.c+1−1
@@ -92,7 +92,7 @@ static struct irq_chip s3c_irq_wdtac97 = { · 91 unmodified lines
92 .irq_ack = s3c_irq_wdtac97_ack,92 .irq_ack = s3c_irq_wdtac97_ack,
93};93};
94 94
95static int s3c2440_irq_add(struct device *dev)95static int s3c2440_irq_add(struct device *dev, struct subsys_interface *sif)
96{96{
97 unsigned int irqno;97 unsigned int irqno;
98 98
arch/arm/mach-s3c2440/s3c2440-cpufreq.c+2−1
@@ -270,7 +270,8 @@ struct s3c_cpufreq_info s3c2440_cpufreq_info = { · 269 unmodified lines
270 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),270 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),
271};271};
272 272
273static int s3c2440_cpufreq_add(struct device *dev)273static int s3c2440_cpufreq_add(struct device *dev,
274 struct subsys_interface *sif)
274{275{
275 xtal = s3c_cpufreq_clk_get(NULL, "xtal");276 xtal = s3c_cpufreq_clk_get(NULL, "xtal");
276 hclk = s3c_cpufreq_clk_get(NULL, "hclk");277 hclk = s3c_cpufreq_clk_get(NULL, "hclk");
arch/arm/mach-s3c2440/s3c2440-pll-12000000.c+1−1
@@ -51,7 +51,7 @@ static struct cpufreq_frequency_table s3c2440_plls_12[] __initdata = { · 50 unmodified lines
51 { .frequency = 400000000, .index = PLLVAL(0x5c, 1, 1), }, /* FVco 800.000000 */51 { .frequency = 400000000, .index = PLLVAL(0x5c, 1, 1), }, /* FVco 800.000000 */
52};52};
53 53
54static int s3c2440_plls12_add(struct device *dev)54static int s3c2440_plls12_add(struct device *dev, struct subsys_interface *sif)
55{55{
56 struct clk *xtal_clk;56 struct clk *xtal_clk;
57 unsigned long xtal;57 unsigned long xtal;
arch/arm/mach-s3c2440/s3c2440-pll-16934400.c+2−1
@@ -79,7 +79,8 @@ static struct cpufreq_frequency_table s3c2440_plls_169344[] __initdata = { · 78 unmodified lines
79 { .frequency = 402192000, .index = PLLVAL(87, 2, 1), }, /* FVco 804.384000 */79 { .frequency = 402192000, .index = PLLVAL(87, 2, 1), }, /* FVco 804.384000 */
80};80};
81 81
82static int s3c2440_plls169344_add(struct device *dev)82static int s3c2440_plls169344_add(struct device *dev,
83 struct subsys_interface *sif)
83{84{
84 struct clk *xtal_clk;85 struct clk *xtal_clk;
85 unsigned long xtal;86 unsigned long xtal;
arch/arm/mach-s3c2440/s3c2442.c+1−1
@@ -122,7 +122,7 @@ static struct clk s3c2442_clk_cam_upll = { · 121 unmodified lines
122 },122 },
123};123};
124 124
125static int s3c2442_clk_add(struct device *dev)125static int s3c2442_clk_add(struct device *dev, struct subsys_interface *sif)
126{126{
127 struct clk *clock_upll;127 struct clk *clock_upll;
128 struct clk *clock_h;128 struct clk *clock_h;
arch/arm/mach-s3c2440/s3c244x-clock.c+1−1
@@ -72,7 +72,7 @@ static struct clk clk_arm = { · 71 unmodified lines
72 },72 },
73};73};
74 74
75static int s3c244x_clk_add(struct device *dev)75static int s3c244x_clk_add(struct device *dev, struct subsys_interface *sif)
76{76{
77 unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN);77 unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN);
78 unsigned long clkdivn;78 unsigned long clkdivn;
arch/arm/mach-s3c2440/s3c244x-irq.c+1−1
@@ -91,7 +91,7 @@ static struct irq_chip s3c_irq_cam = { · 90 unmodified lines
91 .irq_ack = s3c_irq_cam_ack,91 .irq_ack = s3c_irq_cam_ack,
92};92};
93 93
94static int s3c244x_irq_add(struct device *dev)94static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif)
95{95{
96 unsigned int irqno;96 unsigned int irqno;
97 97
arch/arm/mach-s3c2443/dma.c+2−1
@@ -135,7 +135,8 @@ static struct s3c24xx_dma_selection __initdata s3c2443_dma_sel = { · 134 unmodified lines
135 .map_size = ARRAY_SIZE(s3c2443_dma_mappings),135 .map_size = ARRAY_SIZE(s3c2443_dma_mappings),
136};136};
137 137
138static int __init s3c2443_dma_add(struct device *dev)138static int __init s3c2443_dma_add(struct device *dev,
139 struct subsys_interface *sif)
139{140{
140 s3c24xx_dma_init(6, IRQ_S3C2443_DMA0, 0x100);141 s3c24xx_dma_init(6, IRQ_S3C2443_DMA0, 0x100);
141 return s3c24xx_dma_init_map(&s3c2443_dma_sel);142 return s3c24xx_dma_init_map(&s3c2443_dma_sel);
arch/arm/mach-s3c2443/irq.c+2−1
@@ -241,7 +241,8 @@ static int __init s3c2443_add_sub(unsigned int base, · 240 unmodified lines
241 return 0;241 return 0;
242}242}
243 243
244static int __init s3c2443_irq_add(struct device *dev)244static int __init s3c2443_irq_add(struct device *dev,
245 struct subsys_interface *sif)
245{246{
246 printk("S3C2443: IRQ Support\n");247 printk("S3C2443: IRQ Support\n");
247 248
arch/arm/mach-s3c64xx/clock.c+5−0
@@ -138,6 +138,11 @@ static struct clk init_clocks_off[] = { · 137 unmodified lines
138 .ctrlbit = S3C_CLKCON_PCLK_TSADC,138 .ctrlbit = S3C_CLKCON_PCLK_TSADC,
139 }, {139 }, {
140 .name = "i2c",140 .name = "i2c",
141#ifdef CONFIG_S3C_DEV_I2C1
142 .devname = "s3c2440-i2c.0",
143#else
144 .devname = "s3c2440-i2c",
145#endif
141 .parent = &clk_p,146 .parent = &clk_p,
142 .enable = s3c64xx_pclk_ctrl,147 .enable = s3c64xx_pclk_ctrl,
143 .ctrlbit = S3C_CLKCON_PCLK_IIC,148 .ctrlbit = S3C_CLKCON_PCLK_IIC,
arch/arm/mach-s3c64xx/common.c+1−1
@@ -49,7 +49,7 @@ · 48 unmodified lines
49 49
50/* uart registration process */50/* uart registration process */
51 51
52void __init s3c64xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)52static void __init s3c64xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)
53{53{
54 s3c24xx_init_uartdevs("s3c6400-uart", s3c64xx_uart_resources, cfg, no);54 s3c24xx_init_uartdevs("s3c6400-uart", s3c64xx_uart_resources, cfg, no);
55}55}
arch/arm/mach-s3c64xx/include/mach/crag6410.h+1−0
@@ -21,5 +21,6 @@ · 20 unmodified lines
21#define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)21#define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)
22#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)22#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)
23#define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64)23#define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64)
24#define MMGPIO_GPIO_BASE (GPIO_BOARD_START + 96)
24 25
25#endif26#endif
arch/arm/mach-s3c64xx/mach-crag6410.c+3−10
@@ -260,6 +260,7 @@ static struct platform_device crag6410_dm9k_device = { · 259 unmodified lines
260 260
261static struct resource crag6410_mmgpio_resource[] = {261static struct resource crag6410_mmgpio_resource[] = {
262 [0] = {262 [0] = {
263 .name = "dat",
263 .start = S3C64XX_PA_XM0CSN4 + 1,264 .start = S3C64XX_PA_XM0CSN4 + 1,
264 .end = S3C64XX_PA_XM0CSN4 + 1,265 .end = S3C64XX_PA_XM0CSN4 + 1,
265 .flags = IORESOURCE_MEM,266 .flags = IORESOURCE_MEM,
@@ -272,7 +273,7 @@ static struct platform_device crag6410_mmgpio = { · 6 unmodified lines
272 .resource = crag6410_mmgpio_resource,273 .resource = crag6410_mmgpio_resource,
273 .num_resources = ARRAY_SIZE(crag6410_mmgpio_resource),274 .num_resources = ARRAY_SIZE(crag6410_mmgpio_resource),
274 .dev.platform_data = &(struct bgpio_pdata) {275 .dev.platform_data = &(struct bgpio_pdata) {
275 .base = -1,276 .base = MMGPIO_GPIO_BASE,
276 },277 },
277};278};
278 279
@@ -328,7 +329,6 @@ static struct platform_device wallvdd_device = { · 49 unmodified lines
328 329
329static struct platform_device *crag6410_devices[] __initdata = {330static struct platform_device *crag6410_devices[] __initdata = {
330 &s3c_device_hsmmc0,331 &s3c_device_hsmmc0,
331 &s3c_device_hsmmc1,
332 &s3c_device_hsmmc2,332 &s3c_device_hsmmc2,
333 &s3c_device_i2c0,333 &s3c_device_i2c0,
334 &s3c_device_i2c1,334 &s3c_device_i2c1,
@@ -355,7 +355,7 @@ static struct platform_device *crag6410_devices[] __initdata = { · 20 unmodified lines
355 355
356static struct pca953x_platform_data crag6410_pca_data = {356static struct pca953x_platform_data crag6410_pca_data = {
357 .gpio_base = PCA935X_GPIO_BASE,357 .gpio_base = PCA935X_GPIO_BASE,
358 .irq_base = 0,358 .irq_base = -1,
359};359};
360 360
361/* VDDARM is controlled by DVS1 connected to GPK(0) */361/* VDDARM is controlled by DVS1 connected to GPK(0) */
@@ -683,12 +683,6 @@ static struct s3c_sdhci_platdata crag6410_hsmmc2_pdata = { · 321 unmodified lines
683 .cd_type = S3C_SDHCI_CD_PERMANENT,683 .cd_type = S3C_SDHCI_CD_PERMANENT,
684};684};
685 685
686static struct s3c_sdhci_platdata crag6410_hsmmc1_pdata = {
687 .max_width = 4,
688 .cd_type = S3C_SDHCI_CD_GPIO,
689 .ext_cd_gpio = S3C64XX_GPF(11),
690};
691
692static void crag6410_cfg_sdhci0(struct platform_device *dev, int width)686static void crag6410_cfg_sdhci0(struct platform_device *dev, int width)
693{687{
694 /* Set all the necessary GPG pins to special-function 2 */688 /* Set all the necessary GPG pins to special-function 2 */
@@ -723,7 +717,6 @@ static void __init crag6410_machine_init(void) · 28 unmodified lines
723 gpio_direction_output(S3C64XX_GPF(10), 1);717 gpio_direction_output(S3C64XX_GPF(10), 1);
724 718
725 s3c_sdhci0_set_platdata(&crag6410_hsmmc0_pdata);719 s3c_sdhci0_set_platdata(&crag6410_hsmmc0_pdata);
726 s3c_sdhci1_set_platdata(&crag6410_hsmmc1_pdata);
727 s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);720 s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);
728 721
729 s3c_i2c0_set_platdata(&i2c0_pdata);722 s3c_i2c0_set_platdata(&i2c0_pdata);
arch/arm/mach-s3c64xx/pm.c+0−13
@@ -346,23 +346,10 @@ int __init s3c64xx_pm_init(void) · 345 unmodified lines
346 346
347static __init int s3c64xx_pm_initcall(void)347static __init int s3c64xx_pm_initcall(void)
348{348{
349 u32 val;
350
351 pm_cpu_prep = s3c64xx_pm_prepare;349 pm_cpu_prep = s3c64xx_pm_prepare;
352 pm_cpu_sleep = s3c64xx_cpu_suspend;350 pm_cpu_sleep = s3c64xx_cpu_suspend;
353 pm_uart_udivslot = 1;351 pm_uart_udivslot = 1;
354 352
355 /*
356 * Unconditionally disable power domains that contain only
357 * blocks which have no mainline driver support.
358 */
359 val = __raw_readl(S3C64XX_NORMAL_CFG);
360 val &= ~(S3C64XX_NORMALCFG_DOMAIN_G_ON |
361 S3C64XX_NORMALCFG_DOMAIN_V_ON |
362 S3C64XX_NORMALCFG_DOMAIN_I_ON |
363 S3C64XX_NORMALCFG_DOMAIN_P_ON);
364 __raw_writel(val, S3C64XX_NORMAL_CFG);
365
366#ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK353#ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK
367 gpio_request(S3C64XX_GPN(12), "DEBUG_LED0");354 gpio_request(S3C64XX_GPN(12), "DEBUG_LED0");
368 gpio_request(S3C64XX_GPN(13), "DEBUG_LED1");355 gpio_request(S3C64XX_GPN(13), "DEBUG_LED1");
arch/arm/mach-s5p64x0/pm.c+1−1
@@ -160,7 +160,7 @@ static void s5p64x0_pm_prepare(void) · 159 unmodified lines
160 160
161}161}
162 162
163static int s5p64x0_pm_add(struct device *dev)163static int s5p64x0_pm_add(struct device *dev, struct subsys_interface *sif)
164{164{
165 pm_cpu_prep = s5p64x0_pm_prepare;165 pm_cpu_prep = s5p64x0_pm_prepare;
166 pm_cpu_sleep = s5p64x0_cpu_suspend;166 pm_cpu_sleep = s5p64x0_cpu_suspend;
arch/arm/mach-s5pv210/clock.c+2−2
@@ -175,7 +175,7 @@ static int s5pv210_clk_mask1_ctrl(struct clk *clk, int enable) · 174 unmodified lines
175 return s5p_gatectrl(S5P_CLK_SRC_MASK1, clk, enable);175 return s5p_gatectrl(S5P_CLK_SRC_MASK1, clk, enable);
176}176}
177 177
178static int exynos4_clk_hdmiphy_ctrl(struct clk *clk, int enable)178static int s5pv210_clk_hdmiphy_ctrl(struct clk *clk, int enable)
179{179{
180 return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable);180 return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable);
181}181}
@@ -372,7 +372,7 @@ static struct clk init_clocks_off[] = { · 190 unmodified lines
372 }, {372 }, {
373 .name = "hdmiphy",373 .name = "hdmiphy",
374 .devname = "s5pv210-hdmi",374 .devname = "s5pv210-hdmi",
375 .enable = exynos4_clk_hdmiphy_ctrl,375 .enable = s5pv210_clk_hdmiphy_ctrl,
376 .ctrlbit = (1 << 0),376 .ctrlbit = (1 << 0),
377 }, {377 }, {
378 .name = "dacphy",378 .name = "dacphy",
arch/arm/mach-s5pv210/pm.c+1−1
@@ -133,7 +133,7 @@ static void s5pv210_pm_prepare(void) · 132 unmodified lines
133 s3c_pm_do_save(s5pv210_core_save, ARRAY_SIZE(s5pv210_core_save));133 s3c_pm_do_save(s5pv210_core_save, ARRAY_SIZE(s5pv210_core_save));
134}134}
135 135
136static int s5pv210_pm_add(struct device *dev)136static int s5pv210_pm_add(struct device *dev, struct subsys_interface *sif)
137{137{
138 pm_cpu_prep = s5pv210_pm_prepare;138 pm_cpu_prep = s5pv210_pm_prepare;
139 pm_cpu_sleep = s5pv210_cpu_suspend;139 pm_cpu_sleep = s5pv210_cpu_suspend;
arch/arm/mach-sa1100/assabet.c+0−12
@@ -202,7 +202,6 @@ static struct irda_platform_data assabet_irda_data = { · 201 unmodified lines
202static struct mcp_plat_data assabet_mcp_data = {202static struct mcp_plat_data assabet_mcp_data = {
203 .mccr0 = MCCR0_ADM,203 .mccr0 = MCCR0_ADM,
204 .sclk_rate = 11981000,204 .sclk_rate = 11981000,
205 .codec = "ucb1x00",
206};205};
207 206
208static void __init assabet_init(void)207static void __init assabet_init(void)
@@ -253,17 +252,6 @@ static void __init assabet_init(void) · 44 unmodified lines
253 sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources,252 sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources,
254 ARRAY_SIZE(assabet_flash_resources));253 ARRAY_SIZE(assabet_flash_resources));
255 sa11x0_register_irda(&assabet_irda_data);254 sa11x0_register_irda(&assabet_irda_data);
256
257 /*
258 * Setup the PPC unit correctly.
259 */
260 PPDR &= ~PPC_RXD4;
261 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
262 PSDR |= PPC_RXD4;
263 PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
264 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
265
266 ASSABET_BCR_set(ASSABET_BCR_CODEC_RST);
267 sa11x0_register_mcp(&assabet_mcp_data);255 sa11x0_register_mcp(&assabet_mcp_data);
268}256}
269 257
arch/arm/mach-sa1100/cerf.c+0−11
@@ -124,23 +124,12 @@ static void __init cerf_map_io(void) · 123 unmodified lines
124static struct mcp_plat_data cerf_mcp_data = {124static struct mcp_plat_data cerf_mcp_data = {
125 .mccr0 = MCCR0_ADM,125 .mccr0 = MCCR0_ADM,
126 .sclk_rate = 11981000,126 .sclk_rate = 11981000,
127 .codec = "ucb1x00",
128};127};
129 128
130static void __init cerf_init(void)129static void __init cerf_init(void)
131{130{
132 platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices));131 platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices));
133 sa11x0_register_mtd(&cerf_flash_data, &cerf_flash_resource, 1);132 sa11x0_register_mtd(&cerf_flash_data, &cerf_flash_resource, 1);
134
135 /*
136 * Setup the PPC unit correctly.
137 */
138 PPDR &= ~PPC_RXD4;
139 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
140 PSDR |= PPC_RXD4;
141 PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
142 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
143
144 sa11x0_register_mcp(&cerf_mcp_data);133 sa11x0_register_mcp(&cerf_mcp_data);
145}134}
146 135
arch/arm/mach-sa1100/clock.c+25−66
@@ -11,39 +11,17 @@ · 10 unmodified lines
11#include <linux/clk.h>11#include <linux/clk.h>
12#include <linux/spinlock.h>12#include <linux/spinlock.h>
13#include <linux/mutex.h>13#include <linux/mutex.h>
14#include <linux/io.h>
15#include <linux/clkdev.h>
16 14
17#include <mach/hardware.h>15#include <mach/hardware.h>
18 16
19struct clkops {17/*
20 void (*enable)(struct clk *);18 * Very simple clock implementation - we only have one clock to deal with.
21 void (*disable)(struct clk *);19 */
22 unsigned long (*getrate)(struct clk *);
23};
24
25struct clk {20struct clk {
26 const struct clkops *ops;
27 unsigned long rate;
28 unsigned int enabled;21 unsigned int enabled;
29};22};
30 23
31#define INIT_CLKREG(_clk, _devname, _conname) \24static void clk_gpio27_enable(void)
32 { \
33 .clk = _clk, \
34 .dev_id = _devname, \
35 .con_id = _conname, \
36 }
37
38#define DEFINE_CLK(_name, _ops, _rate) \
39struct clk clk_##_name = { \
40 .ops = _ops, \
41 .rate = _rate, \
42 }
43
44static DEFINE_SPINLOCK(clocks_lock);
45
46static void clk_gpio27_enable(struct clk *clk)
47{25{
48 /*26 /*
49 * First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:27 * First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
@@ -54,22 +32,38 @@ static void clk_gpio27_enable(struct clk *clk) · 4 unmodified lines
54 TUCR = TUCR_3_6864MHz;32 TUCR = TUCR_3_6864MHz;
55}33}
56 34
57static void clk_gpio27_disable(struct clk *clk)35static void clk_gpio27_disable(void)
58{36{
59 TUCR = 0;37 TUCR = 0;
60 GPDR &= ~GPIO_32_768kHz;38 GPDR &= ~GPIO_32_768kHz;
61 GAFR &= ~GPIO_32_768kHz;39 GAFR &= ~GPIO_32_768kHz;
62}40}
63 41
42static struct clk clk_gpio27;
43
44static DEFINE_SPINLOCK(clocks_lock);
45
46struct clk *clk_get(struct device *dev, const char *id)
47{
48 const char *devname = dev_name(dev);
49
50 return strcmp(devname, "sa1111.0") ? ERR_PTR(-ENOENT) : &clk_gpio27;
51}
52EXPORT_SYMBOL(clk_get);
53
54void clk_put(struct clk *clk)
55{
56}
57EXPORT_SYMBOL(clk_put);
58
64int clk_enable(struct clk *clk)59int clk_enable(struct clk *clk)
65{60{
66 unsigned long flags;61 unsigned long flags;
67 62
68 spin_lock_irqsave(&clocks_lock, flags);63 spin_lock_irqsave(&clocks_lock, flags);
69 if (clk->enabled++ == 0)64 if (clk->enabled++ == 0)
70 clk->ops->enable(clk);65 clk_gpio27_enable();
71 spin_unlock_irqrestore(&clocks_lock, flags);66 spin_unlock_irqrestore(&clocks_lock, flags);
72
73 return 0;67 return 0;
74}68}
75EXPORT_SYMBOL(clk_enable);69EXPORT_SYMBOL(clk_enable);
@@ -82,48 +76,13 @@ void clk_disable(struct clk *clk) · 6 unmodified lines
82 76
83 spin_lock_irqsave(&clocks_lock, flags);77 spin_lock_irqsave(&clocks_lock, flags);
84 if (--clk->enabled == 0)78 if (--clk->enabled == 0)
85 clk->ops->disable(clk);79 clk_gpio27_disable();
86 spin_unlock_irqrestore(&clocks_lock, flags);80 spin_unlock_irqrestore(&clocks_lock, flags);
87}81}
88EXPORT_SYMBOL(clk_disable);82EXPORT_SYMBOL(clk_disable);
89 83
90unsigned long clk_get_rate(struct clk *clk)84unsigned long clk_get_rate(struct clk *clk)
91{85{
92 unsigned long rate;86 return 3686400;
93
94 rate = clk->rate;
95 if (clk->ops->getrate)
96 rate = clk->ops->getrate(clk);
97
98 return rate;
99}87}
100EXPORT_SYMBOL(clk_get_rate);88EXPORT_SYMBOL(clk_get_rate);
101
102const struct clkops clk_gpio27_ops = {
103 .enable = clk_gpio27_enable,
104 .disable = clk_gpio27_disable,
105};
106
107static void clk_dummy_enable(struct clk *clk) { }
108static void clk_dummy_disable(struct clk *clk) { }
109
110const struct clkops clk_dummy_ops = {
111 .enable = clk_dummy_enable,
112 .disable = clk_dummy_disable,
113};
114
115static DEFINE_CLK(gpio27, &clk_gpio27_ops, 3686400);
116static DEFINE_CLK(dummy, &clk_dummy_ops, 0);
117
118static struct clk_lookup sa11xx_clkregs[] = {
119 INIT_CLKREG(&clk_gpio27, "sa1111.0", NULL),
120 INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
121};
122
123static int __init sa11xx_clk_init(void)
124{
125 clkdev_add_table(sa11xx_clkregs, ARRAY_SIZE(sa11xx_clkregs));
126 return 0;
127}
128
129postcore_initcall(sa11xx_clk_init);
arch/arm/mach-sa1100/collie.c+3−20
@@ -27,7 +27,6 @@ · 26 unmodified lines
27#include <linux/timer.h>27#include <linux/timer.h>
28#include <linux/gpio.h>28#include <linux/gpio.h>
29#include <linux/pda_power.h>29#include <linux/pda_power.h>
30#include <linux/mfd/ucb1x00.h>
31 30
32#include <mach/hardware.h>31#include <mach/hardware.h>
33#include <asm/mach-types.h>32#include <asm/mach-types.h>
@@ -86,15 +85,10 @@ static struct scoop_pcmcia_config collie_pcmcia_config = { · 52 unmodified lines
86 .num_devs = 1,85 .num_devs = 1,
87};86};
88 87
89static struct ucb1x00_plat_data collie_ucb1x00_data = {
90 .gpio_base = COLLIE_TC35143_GPIO_BASE,
91};
92
93static struct mcp_plat_data collie_mcp_data = {88static struct mcp_plat_data collie_mcp_data = {
94 .mccr0 = MCCR0_ADM | MCCR0_ExtClk,89 .mccr0 = MCCR0_ADM | MCCR0_ExtClk,
95 .sclk_rate = 9216000,90 .sclk_rate = 9216000,
96 .codec = "ucb1x00",91 .gpio_base = COLLIE_TC35143_GPIO_BASE,
97 .codec_pdata = &collie_ucb1x00_data,
98};92};
99 93
100/*94/*
@@ -144,8 +138,6 @@ static struct pda_power_pdata collie_power_data = { · 43 unmodified lines
144static struct resource collie_power_resource[] = {138static struct resource collie_power_resource[] = {
145 {139 {
146 .name = "ac",140 .name = "ac",
147 .start = gpio_to_irq(COLLIE_GPIO_AC_IN),
148 .end = gpio_to_irq(COLLIE_GPIO_AC_IN),
149 .flags = IORESOURCE_IRQ |141 .flags = IORESOURCE_IRQ |
150 IORESOURCE_IRQ_HIGHEDGE |142 IORESOURCE_IRQ_HIGHEDGE |
151 IORESOURCE_IRQ_LOWEDGE,143 IORESOURCE_IRQ_LOWEDGE,
@@ -347,7 +339,8 @@ static void __init collie_init(void) · 195 unmodified lines
347 339
348 GPSR |= _COLLIE_GPIO_UCB1x00_RESET;340 GPSR |= _COLLIE_GPIO_UCB1x00_RESET;
349 341
350 342 collie_power_resource[0].start = gpio_to_irq(COLLIE_GPIO_AC_IN);
343 collie_power_resource[0].end = gpio_to_irq(COLLIE_GPIO_AC_IN);
351 platform_scoop_config = &collie_pcmcia_config;344 platform_scoop_config = &collie_pcmcia_config;
352 345
353 ret = platform_add_devices(devices, ARRAY_SIZE(devices));346 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
@@ -357,16 +350,6 @@ static void __init collie_init(void) · 3 unmodified lines
357 350
358 sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,351 sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
359 ARRAY_SIZE(collie_flash_resources));352 ARRAY_SIZE(collie_flash_resources));
360
361 /*
362 * Setup the PPC unit correctly.
363 */
364 PPDR &= ~PPC_RXD4;
365 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
366 PSDR |= PPC_RXD4;
367 PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
368 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
369
370 sa11x0_register_mcp(&collie_mcp_data);353 sa11x0_register_mcp(&collie_mcp_data);
371 354
372 sharpsl_save_param();355 sharpsl_save_param();
arch/arm/mach-sa1100/cpu-sa1100.c+1−1
@@ -228,7 +228,7 @@ static int __init sa1100_cpu_init(struct cpufreq_policy *policy) · 227 unmodified lines
228 return 0;228 return 0;
229}229}
230 230
231static struct cpufreq_driver sa1100_driver = {231static struct cpufreq_driver sa1100_driver __refdata = {
232 .flags = CPUFREQ_STICKY,232 .flags = CPUFREQ_STICKY,
233 .verify = sa11x0_verify_speed,233 .verify = sa11x0_verify_speed,
234 .target = sa1100_target,234 .target = sa1100_target,
arch/arm/mach-sa1100/generic.c+1−26
@@ -217,15 +217,10 @@ static struct platform_device sa11x0uart3_device = { · 216 unmodified lines
217static struct resource sa11x0mcp_resources[] = {217static struct resource sa11x0mcp_resources[] = {
218 [0] = {218 [0] = {
219 .start = __PREG(Ser4MCCR0),219 .start = __PREG(Ser4MCCR0),
220 .end = __PREG(Ser4MCCR0) + 0x1C - 1,220 .end = __PREG(Ser4MCCR0) + 0xffff,
221 .flags = IORESOURCE_MEM,221 .flags = IORESOURCE_MEM,
222 },222 },
223 [1] = {223 [1] = {
224 .start = __PREG(Ser4MCCR1),
225 .end = __PREG(Ser4MCCR1) + 0x4 - 1,
226 .flags = IORESOURCE_MEM,
227 },
228 [2] = {
229 .start = IRQ_Ser4MCP,224 .start = IRQ_Ser4MCP,
230 .end = IRQ_Ser4MCP,225 .end = IRQ_Ser4MCP,
231 .flags = IORESOURCE_IRQ,226 .flags = IORESOURCE_IRQ,
@@ -350,29 +345,9 @@ void sa11x0_register_irda(struct irda_platform_data *irda) · 118 unmodified lines
350 sa11x0_register_device(&sa11x0ir_device, irda);345 sa11x0_register_device(&sa11x0ir_device, irda);
351}346}
352 347
353static struct resource sa11x0rtc_resources[] = {
354 [0] = {
355 .start = 0x90010000,
356 .end = 0x900100ff,
357 .flags = IORESOURCE_MEM,
358 },
359 [1] = {
360 .start = IRQ_RTC1Hz,
361 .end = IRQ_RTC1Hz,
362 .flags = IORESOURCE_IRQ,
363 },
364 [2] = {
365 .start = IRQ_RTCAlrm,
366 .end = IRQ_RTCAlrm,
367 .flags = IORESOURCE_IRQ,
368 },
369};
370
371static struct platform_device sa11x0rtc_device = {348static struct platform_device sa11x0rtc_device = {
372 .name = "sa1100-rtc",349 .name = "sa1100-rtc",
373 .id = -1,350 .id = -1,
374 .resource = sa11x0rtc_resources,
375 .num_resources = ARRAY_SIZE(sa11x0rtc_resources),
376};351};
377 352
378static struct platform_device *sa11x0_devices[] __initdata = {353static struct platform_device *sa11x0_devices[] __initdata = {
arch/arm/mach-sa1100/include/mach/mcp.h+0−2
@@ -17,8 +17,6 @@ struct mcp_plat_data { · 16 unmodified lines
17 u32 mccr1;17 u32 mccr1;
18 unsigned int sclk_rate;18 unsigned int sclk_rate;
19 int gpio_base;19 int gpio_base;
20 const char *codec;
21 void *codec_pdata;
22};20};
23 21
24#endif22#endif
arch/arm/mach-sa1100/jornada720_ssp.c+2−0
@@ -198,3 +198,5 @@ static int __init jornada_ssp_init(void) · 197 unmodified lines
198{198{
199 return platform_driver_register(&jornadassp_driver);199 return platform_driver_register(&jornadassp_driver);
200}200}
201
202module_init(jornada_ssp_init);
arch/arm/mach-sa1100/lart.c+0−10
@@ -24,20 +24,10 @@ · 23 unmodified lines
24static struct mcp_plat_data lart_mcp_data = {24static struct mcp_plat_data lart_mcp_data = {
25 .mccr0 = MCCR0_ADM,25 .mccr0 = MCCR0_ADM,
26 .sclk_rate = 11981000,26 .sclk_rate = 11981000,
27 .codec = "ucb1x00",
28};27};
29 28
30static void __init lart_init(void)29static void __init lart_init(void)
31{30{
32 /*
33 * Setup the PPC unit correctly.
34 */
35 PPDR &= ~PPC_RXD4;
36 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
37 PSDR |= PPC_RXD4;
38 PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
39 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
40
41 sa11x0_register_mcp(&lart_mcp_data);31 sa11x0_register_mcp(&lart_mcp_data);
42}32}
43 33
arch/arm/mach-sa1100/shannon.c+0−11
@@ -55,22 +55,11 @@ static struct resource shannon_flash_resource = { · 54 unmodified lines
55static struct mcp_plat_data shannon_mcp_data = {55static struct mcp_plat_data shannon_mcp_data = {
56 .mccr0 = MCCR0_ADM,56 .mccr0 = MCCR0_ADM,
57 .sclk_rate = 11981000,57 .sclk_rate = 11981000,
58 .codec = "ucb1x00",
59};58};
60 59
61static void __init shannon_init(void)60static void __init shannon_init(void)
62{61{
63 sa11x0_register_mtd(&shannon_flash_data, &shannon_flash_resource, 1);62 sa11x0_register_mtd(&shannon_flash_data, &shannon_flash_resource, 1);
64
65 /*
66 * Setup the PPC unit correctly.
67 */
68 PPDR &= ~PPC_RXD4;
69 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
70 PSDR |= PPC_RXD4;
71 PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
72 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
73
74 sa11x0_register_mcp(&shannon_mcp_data);63 sa11x0_register_mcp(&shannon_mcp_data);
75}64}
76 65
arch/arm/mach-sa1100/simpad.c+1−17
@@ -14,7 +14,6 @@ · 13 unmodified lines
14#include <linux/mtd/partitions.h>14#include <linux/mtd/partitions.h>
15#include <linux/io.h>15#include <linux/io.h>
16#include <linux/gpio.h>16#include <linux/gpio.h>
17#include <linux/mfd/ucb1x00.h>
18 17
19#include <asm/irq.h>18#include <asm/irq.h>
20#include <mach/hardware.h>19#include <mach/hardware.h>
@@ -188,15 +187,10 @@ static struct resource simpad_flash_resources [] = { · 167 unmodified lines
188 }187 }
189};188};
190 189
191static struct ucb1x00_plat_data simpad_ucb1x00_data = {
192 .gpio_base = SIMPAD_UCB1X00_GPIO_BASE,
193};
194
195static struct mcp_plat_data simpad_mcp_data = {190static struct mcp_plat_data simpad_mcp_data = {
196 .mccr0 = MCCR0_ADM,191 .mccr0 = MCCR0_ADM,
197 .sclk_rate = 11981000,192 .sclk_rate = 11981000,
198 .codec = "ucb1300",193 .gpio_base = SIMPAD_UCB1X00_GPIO_BASE,
199 .codec_pdata = &simpad_ucb1x00_data,
200};194};
201 195
202 196
@@ -384,16 +378,6 @@ static int __init simpad_init(void) · 181 unmodified lines
384 378
385 sa11x0_register_mtd(&simpad_flash_data, simpad_flash_resources,379 sa11x0_register_mtd(&simpad_flash_data, simpad_flash_resources,
386 ARRAY_SIZE(simpad_flash_resources));380 ARRAY_SIZE(simpad_flash_resources));
387
388 /*
389 * Setup the PPC unit correctly.
390 */
391 PPDR &= ~PPC_RXD4;
392 PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
393 PSDR |= PPC_RXD4;
394 PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
395 PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
396
397 sa11x0_register_mcp(&simpad_mcp_data);381 sa11x0_register_mcp(&simpad_mcp_data);
398 382
399 ret = platform_add_devices(devices, ARRAY_SIZE(devices));383 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
arch/arm/mach-shmobile/setup-sh7372.c+14−3
@@ -445,31 +445,39 @@ static const struct sh_dmae_slave_config sh7372_dmae_slaves[] = { · 444 unmodified lines
445 },445 },
446};446};
447 447
448#define SH7372_CHCLR 0x220
449
448static const struct sh_dmae_channel sh7372_dmae_channels[] = {450static const struct sh_dmae_channel sh7372_dmae_channels[] = {
449 {451 {
450 .offset = 0,452 .offset = 0,
451 .dmars = 0,453 .dmars = 0,
452 .dmars_bit = 0,454 .dmars_bit = 0,
455 .chclr_offset = SH7372_CHCLR + 0,
453 }, {456 }, {
454 .offset = 0x10,457 .offset = 0x10,
455 .dmars = 0,458 .dmars = 0,
456 .dmars_bit = 8,459 .dmars_bit = 8,
460 .chclr_offset = SH7372_CHCLR + 0x10,
457 }, {461 }, {
458 .offset = 0x20,462 .offset = 0x20,
459 .dmars = 4,463 .dmars = 4,
460 .dmars_bit = 0,464 .dmars_bit = 0,
465 .chclr_offset = SH7372_CHCLR + 0x20,
461 }, {466 }, {
462 .offset = 0x30,467 .offset = 0x30,
463 .dmars = 4,468 .dmars = 4,
464 .dmars_bit = 8,469 .dmars_bit = 8,
470 .chclr_offset = SH7372_CHCLR + 0x30,
465 }, {471 }, {
466 .offset = 0x50,472 .offset = 0x50,
467 .dmars = 8,473 .dmars = 8,
468 .dmars_bit = 0,474 .dmars_bit = 0,
475 .chclr_offset = SH7372_CHCLR + 0x50,
469 }, {476 }, {
470 .offset = 0x60,477 .offset = 0x60,
471 .dmars = 8,478 .dmars = 8,
472 .dmars_bit = 8,479 .dmars_bit = 8,
480 .chclr_offset = SH7372_CHCLR + 0x60,
473 }481 }
474};482};
475 483
@@ -487,6 +495,7 @@ static struct sh_dmae_pdata dma_platform_data = { · 11 unmodified lines
487 .ts_shift = ts_shift,495 .ts_shift = ts_shift,
488 .ts_shift_num = ARRAY_SIZE(ts_shift),496 .ts_shift_num = ARRAY_SIZE(ts_shift),
489 .dmaor_init = DMAOR_DME,497 .dmaor_init = DMAOR_DME,
498 .chclr_present = 1,
490};499};
491 500
492/* Resource order important! */501/* Resource order important! */
@@ -494,7 +503,7 @@ static struct resource sh7372_dmae0_resources[] = { · 1 unmodified line
494 {503 {
495 /* Channel registers and DMAOR */504 /* Channel registers and DMAOR */
496 .start = 0xfe008020,505 .start = 0xfe008020,
497 .end = 0xfe00808f,506 .end = 0xfe00828f,
498 .flags = IORESOURCE_MEM,507 .flags = IORESOURCE_MEM,
499 },508 },
500 {509 {
@@ -522,7 +531,7 @@ static struct resource sh7372_dmae1_resources[] = { · 21 unmodified lines
522 {531 {
523 /* Channel registers and DMAOR */532 /* Channel registers and DMAOR */
524 .start = 0xfe018020,533 .start = 0xfe018020,
525 .end = 0xfe01808f,534 .end = 0xfe01828f,
526 .flags = IORESOURCE_MEM,535 .flags = IORESOURCE_MEM,
527 },536 },
528 {537 {
@@ -550,7 +559,7 @@ static struct resource sh7372_dmae2_resources[] = { · 21 unmodified lines
550 {559 {
551 /* Channel registers and DMAOR */560 /* Channel registers and DMAOR */
552 .start = 0xfe028020,561 .start = 0xfe028020,
553 .end = 0xfe02808f,562 .end = 0xfe02828f,
554 .flags = IORESOURCE_MEM,563 .flags = IORESOURCE_MEM,
555 },564 },
556 {565 {
@@ -653,6 +662,7 @@ static struct sh_dmae_pdata usb_dma0_platform_data = { · 96 unmodified lines
653 .dmaor_is_32bit = 1,662 .dmaor_is_32bit = 1,
654 .needs_tend_set = 1,663 .needs_tend_set = 1,
655 .no_dmars = 1,664 .no_dmars = 1,
665 .slave_only = 1,
656};666};
657 667
658static struct resource sh7372_usb_dmae0_resources[] = {668static struct resource sh7372_usb_dmae0_resources[] = {
@@ -714,6 +724,7 @@ static struct sh_dmae_pdata usb_dma1_platform_data = { · 55 unmodified lines
714 .dmaor_is_32bit = 1,724 .dmaor_is_32bit = 1,
715 .needs_tend_set = 1,725 .needs_tend_set = 1,
716 .no_dmars = 1,726 .no_dmars = 1,
727 .slave_only = 1,
717};728};
718 729
719static struct resource sh7372_usb_dmae1_resources[] = {730static struct resource sh7372_usb_dmae1_resources[] = {
arch/arm/mach-shmobile/smp-r8a7779.c+1−0
@@ -25,6 +25,7 @@ · 24 unmodified lines
25#include <linux/delay.h>25#include <linux/delay.h>
26#include <mach/common.h>26#include <mach/common.h>
27#include <mach/r8a7779.h>27#include <mach/r8a7779.h>
28#include <asm/smp_plat.h>
28#include <asm/smp_scu.h>29#include <asm/smp_scu.h>
29#include <asm/smp_twd.h>30#include <asm/smp_twd.h>
30#include <asm/hardware/gic.h>31#include <asm/hardware/gic.h>
arch/arm/mach-shmobile/smp-sh73a0.c+1−0
@@ -23,6 +23,7 @@ · 22 unmodified lines
23#include <linux/spinlock.h>23#include <linux/spinlock.h>
24#include <linux/io.h>24#include <linux/io.h>
25#include <mach/common.h>25#include <mach/common.h>
26#include <asm/smp_plat.h>
26#include <asm/smp_scu.h>27#include <asm/smp_scu.h>
27#include <asm/smp_twd.h>28#include <asm/smp_twd.h>
28#include <asm/hardware/gic.h>29#include <asm/hardware/gic.h>
arch/arm/mach-tegra/board-paz00.c+4−4
@@ -60,9 +60,9 @@ static struct plat_serial8250_port debug_uart_platform_data[] = { · 59 unmodified lines
60 .uartclk = 216000000,60 .uartclk = 216000000,
61 }, {61 }, {
62 /* serial port on mini-pcie */62 /* serial port on mini-pcie */
63 .membase = IO_ADDRESS(TEGRA_UARTD_BASE),63 .membase = IO_ADDRESS(TEGRA_UARTC_BASE),
64 .mapbase = TEGRA_UARTD_BASE,64 .mapbase = TEGRA_UARTC_BASE,
65 .irq = INT_UARTD,65 .irq = INT_UARTC,
66 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,66 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
67 .type = PORT_TEGRA,67 .type = PORT_TEGRA,
68 .iotype = UPIO_MEM,68 .iotype = UPIO_MEM,
@@ -174,7 +174,7 @@ static void __init tegra_paz00_fixup(struct tag *tags, char **cmdline, · 105 unmodified lines
174static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = {174static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = {
175 /* name parent rate enabled */175 /* name parent rate enabled */
176 { "uarta", "pll_p", 216000000, true },176 { "uarta", "pll_p", 216000000, true },
177 { "uartd", "pll_p", 216000000, true },177 { "uartc", "pll_p", 216000000, true },
178 178
179 { "pll_p_out4", "pll_p", 24000000, true },179 { "pll_p_out4", "pll_p", 24000000, true },
180 { "usbd", "clk_m", 12000000, false },180 { "usbd", "clk_m", 12000000, false },
arch/arm/mach-tegra/board-paz00.h+1−1
@@ -22,7 +22,7 @@ · 21 unmodified lines
22/* SDCARD */22/* SDCARD */
23#define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV523#define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5
24#define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH124#define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1
25#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT325#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PV1
26 26
27/* ULPI */27/* ULPI */
28#define TEGRA_ULPI_RST TEGRA_GPIO_PV028#define TEGRA_ULPI_RST TEGRA_GPIO_PV0
arch/arm/mach-tegra/include/mach/dma.h+5−5
@@ -23,11 +23,6 @@ · 22 unmodified lines
23 23
24#include <linux/list.h>24#include <linux/list.h>
25 25
26#if defined(CONFIG_TEGRA_SYSTEM_DMA)
27
28struct tegra_dma_req;
29struct tegra_dma_channel;
30
31#define TEGRA_DMA_REQ_SEL_CNTR 026#define TEGRA_DMA_REQ_SEL_CNTR 0
32#define TEGRA_DMA_REQ_SEL_I2S_2 127#define TEGRA_DMA_REQ_SEL_I2S_2 1
33#define TEGRA_DMA_REQ_SEL_I2S_1 228#define TEGRA_DMA_REQ_SEL_I2S_1 2
@@ -56,6 +51,11 @@ struct tegra_dma_channel; · 22 unmodified lines
56#define TEGRA_DMA_REQ_SEL_OWR 2551#define TEGRA_DMA_REQ_SEL_OWR 25
57#define TEGRA_DMA_REQ_SEL_INVALID 3152#define TEGRA_DMA_REQ_SEL_INVALID 31
58 53
54#if defined(CONFIG_TEGRA_SYSTEM_DMA)
55
56struct tegra_dma_req;
57struct tegra_dma_channel;
58
59enum tegra_dma_mode {59enum tegra_dma_mode {
60 TEGRA_DMA_SHARED = 1,60 TEGRA_DMA_SHARED = 1,
61 TEGRA_DMA_MODE_CONTINOUS = 2,61 TEGRA_DMA_MODE_CONTINOUS = 2,
arch/arm/mach-ux500/Kconfig+1−0
@@ -7,6 +7,7 @@ config UX500_SOC_COMMON · 6 unmodified lines
7 select HAS_MTU7 select HAS_MTU
8 select ARM_ERRATA_7539708 select ARM_ERRATA_753970
9 select ARM_ERRATA_7543229 select ARM_ERRATA_754322
10 select ARM_ERRATA_764369
10 11
11menu "Ux500 SoC"12menu "Ux500 SoC"
12 13
arch/arm/mach-ux500/board-mop500-sdi.c+2−0
@@ -261,6 +261,8 @@ void __init mop500_sdi_init(void) · 260 unmodified lines
261 261
262void __init snowball_sdi_init(void)262void __init snowball_sdi_init(void)
263{263{
264 /* On Snowball MMC_CAP_SD_HIGHSPEED isn't supported (Hardware issue?) */
265 mop500_sdi0_data.capabilities &= ~MMC_CAP_SD_HIGHSPEED;
264 /* On-board eMMC */266 /* On-board eMMC */
265 db8500_add_sdi4(&mop500_sdi4_data, U8500_SDI_V2_PERIPHID);267 db8500_add_sdi4(&mop500_sdi4_data, U8500_SDI_V2_PERIPHID);
266 /* External Micro SD slot */268 /* External Micro SD slot */
arch/arm/mach-ux500/cache-l2x0.c+7−41
@@ -12,44 +12,6 @@ · 11 unmodified lines
12 12
13static void __iomem *l2x0_base;13static void __iomem *l2x0_base;
14 14
15static inline void ux500_cache_wait(void __iomem *reg, unsigned long mask)
16{
17 /* wait for the operation to complete */
18 while (readl_relaxed(reg) & mask)
19 cpu_relax();
20}
21
22static inline void ux500_cache_sync(void)
23{
24 writel_relaxed(0, l2x0_base + L2X0_CACHE_SYNC);
25 ux500_cache_wait(l2x0_base + L2X0_CACHE_SYNC, 1);
26}
27
28/*
29 * The L2 cache cannot be turned off in the non-secure world.
30 * Dummy until a secure service is in place.
31 */
32static void ux500_l2x0_disable(void)
33{
34}
35
36/*
37 * This is only called when doing a kexec, just after turning off the L2
38 * and L1 cache, and it is surrounded by a spinlock in the generic version.
39 * However, we're not really turning off the L2 cache right now and the
40 * PL310 does not support exclusive accesses (used to implement the spinlock).
41 * So, the invalidation needs to be done without the spinlock.
42 */
43static void ux500_l2x0_inv_all(void)
44{
45 uint32_t l2x0_way_mask = (1<<16) - 1; /* Bitmask of active ways */
46
47 /* invalidate all ways */
48 writel_relaxed(l2x0_way_mask, l2x0_base + L2X0_INV_WAY);
49 ux500_cache_wait(l2x0_base + L2X0_INV_WAY, l2x0_way_mask);
50 ux500_cache_sync();
51}
52
53static int __init ux500_l2x0_unlock(void)15static int __init ux500_l2x0_unlock(void)
54{16{
55 int i;17 int i;
@@ -85,9 +47,13 @@ static int __init ux500_l2x0_init(void) · 29 unmodified lines
85 /* 64KB way size, 8 way associativity, force WA */47 /* 64KB way size, 8 way associativity, force WA */
86 l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);48 l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);
87 49
88 /* Override invalidate function */50 /*
89 outer_cache.disable = ux500_l2x0_disable;51 * We can't disable l2 as we are in non secure mode, currently
90 outer_cache.inv_all = ux500_l2x0_inv_all;52 * this seems be called only during kexec path. So let's
53 * override outer.disable with nasty assignment until we have
54 * some SMI service available.
55 */
56 outer_cache.disable = NULL;
91 57
92 return 0;58 return 0;
93}59}
arch/arm/mach-ux500/headsmp.S+2−0
@@ -32,6 +32,8 @@ pen: ldr r7, [r6] · 31 unmodified lines
32 * should now contain the SVC stack for this core32 * should now contain the SVC stack for this core
33 */33 */
34 b secondary_startup34 b secondary_startup
35ENDPROC(u8500_secondary_startup)
35 36
37 .align 2
361: .long .381: .long .
37 .long pen_release39 .long pen_release
arch/arm/mach-ux500/hotplug.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
13#include <linux/smp.h>13#include <linux/smp.h>
14 14
15#include <asm/cacheflush.h>15#include <asm/cacheflush.h>
16#include <asm/smp_plat.h>
16 17
17extern volatile int pen_release;18extern volatile int pen_release;
18 19
arch/arm/mach-ux500/platsmp.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
19 19
20#include <asm/cacheflush.h>20#include <asm/cacheflush.h>
21#include <asm/hardware/gic.h>21#include <asm/hardware/gic.h>
22#include <asm/smp_plat.h>
22#include <asm/smp_scu.h>23#include <asm/smp_scu.h>
23#include <mach/hardware.h>24#include <mach/hardware.h>
24#include <mach/setup.h>25#include <mach/setup.h>
arch/arm/mach-ux500/usb.c+0−6
@@ -95,13 +95,7 @@ static struct musb_hdrc_config musb_hdrc_config = { · 94 unmodified lines
95};95};
96 96
97static struct musb_hdrc_platform_data musb_platform_data = {97static struct musb_hdrc_platform_data musb_platform_data = {
98#if defined(CONFIG_USB_MUSB_OTG)
99 .mode = MUSB_OTG,98 .mode = MUSB_OTG,
100#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
101 .mode = MUSB_PERIPHERAL,
102#else /* defined(CONFIG_USB_MUSB_HOST) */
103 .mode = MUSB_HOST,
104#endif
105 .config = &musb_hdrc_config,99 .config = &musb_hdrc_config,
106 .board_data = &musb_board_data,100 .board_data = &musb_board_data,
107};101};
arch/arm/mach-vexpress/ct-ca9x4.c+2−2
@@ -217,7 +217,7 @@ static void __init ct_ca9x4_init(void) · 216 unmodified lines
217}217}
218 218
219#ifdef CONFIG_SMP219#ifdef CONFIG_SMP
220static void ct_ca9x4_init_cpu_map(void)220static void __init ct_ca9x4_init_cpu_map(void)
221{221{
222 int i, ncores = scu_get_core_count(MMIO_P2V(A9_MPCORE_SCU));222 int i, ncores = scu_get_core_count(MMIO_P2V(A9_MPCORE_SCU));
223 223
@@ -233,7 +233,7 @@ static void ct_ca9x4_init_cpu_map(void) · 9 unmodified lines
233 set_smp_cross_call(gic_raise_softirq);233 set_smp_cross_call(gic_raise_softirq);
234}234}
235 235
236static void ct_ca9x4_smp_enable(unsigned int max_cpus)236static void __init ct_ca9x4_smp_enable(unsigned int max_cpus)
237{237{
238 scu_enable(MMIO_P2V(A9_MPCORE_SCU));238 scu_enable(MMIO_P2V(A9_MPCORE_SCU));
239}239}
arch/arm/mach-vexpress/hotplug.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
13#include <linux/smp.h>13#include <linux/smp.h>
14 14
15#include <asm/cacheflush.h>15#include <asm/cacheflush.h>
16#include <asm/smp_plat.h>
16#include <asm/system.h>17#include <asm/system.h>
17 18
18extern volatile int pen_release;19extern volatile int pen_release;
arch/arm/mach-vexpress/platsmp.c+1−3
@@ -13,8 +13,6 @@ · 12 unmodified lines
13#include <linux/smp.h>13#include <linux/smp.h>
14#include <linux/io.h>14#include <linux/io.h>
15 15
16#include <asm/unified.h>
17
18#include <mach/motherboard.h>16#include <mach/motherboard.h>
19#define V2M_PA_CS7 0x1000000017#define V2M_PA_CS7 0x10000000
20 18
@@ -46,6 +44,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) · 25 unmodified lines
46 * secondary CPU branches to this address.44 * secondary CPU branches to this address.
47 */45 */
48 writel(~0, MMIO_P2V(V2M_SYS_FLAGSCLR));46 writel(~0, MMIO_P2V(V2M_SYS_FLAGSCLR));
49 writel(BSYM(virt_to_phys(versatile_secondary_startup)),47 writel(virt_to_phys(versatile_secondary_startup),
50 MMIO_P2V(V2M_SYS_FLAGSSET));48 MMIO_P2V(V2M_SYS_FLAGSSET));
51}49}
arch/arm/mm/Kconfig+3−1
@@ -631,7 +631,8 @@ comment "Processor Features" · 630 unmodified lines
631 631
632config ARM_LPAE632config ARM_LPAE
633 bool "Support for the Large Physical Address Extension"633 bool "Support for the Large Physical Address Extension"
634 depends on MMU && CPU_V7634 depends on MMU && CPU_32v7 && !CPU_32v6 && !CPU_32v5 && \
635 !CPU_32v4 && !CPU_32v3
635 help636 help
636 Say Y if you have an ARMv7 processor supporting the LPAE page637 Say Y if you have an ARMv7 processor supporting the LPAE page
637 table format and you would like to access memory beyond the638 table format and you would like to access memory beyond the
@@ -882,6 +883,7 @@ config CACHE_XSC3L2 · 244 unmodified lines
882 883
883config ARM_L1_CACHE_SHIFT_6884config ARM_L1_CACHE_SHIFT_6
884 bool885 bool
886 default y if CPU_V7
885 help887 help
886 Setting ARM L1 cache line size to 64 Bytes.888 Setting ARM L1 cache line size to 64 Bytes.
887 889
arch/arm/mm/cache-v7.S+6−0
@@ -54,9 +54,15 @@ loop1: · 53 unmodified lines
54 and r1, r1, #7 @ mask of the bits for current cache only54 and r1, r1, #7 @ mask of the bits for current cache only
55 cmp r1, #2 @ see what cache we have at this level55 cmp r1, #2 @ see what cache we have at this level
56 blt skip @ skip if no cache, or just i-cache56 blt skip @ skip if no cache, or just i-cache
57#ifdef CONFIG_PREEMPT
58 save_and_disable_irqs_notrace r9 @ make cssr&csidr read atomic
59#endif
57 mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr60 mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr
58 isb @ isb to sych the new cssr&csidr61 isb @ isb to sych the new cssr&csidr
59 mrc p15, 1, r1, c0, c0, 0 @ read the new csidr62 mrc p15, 1, r1, c0, c0, 0 @ read the new csidr
63#ifdef CONFIG_PREEMPT
64 restore_irqs_notrace r9
65#endif
60 and r2, r1, #7 @ extract the length of the cache lines66 and r2, r1, #7 @ extract the length of the cache lines
61 add r2, r2, #4 @ add 4 (line length offset)67 add r2, r2, #4 @ add 4 (line length offset)
62 ldr r4, =0x3ff68 ldr r4, =0x3ff
arch/arm/mm/init.c+1−1
@@ -310,7 +310,7 @@ static void arm_memory_present(void) · 309 unmodified lines
310 310
311static bool arm_memblock_steal_permitted = true;311static bool arm_memblock_steal_permitted = true;
312 312
313phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align)313phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
314{314{
315 phys_addr_t phys;315 phys_addr_t phys;
316 316
arch/arm/mm/proc-v7.S+10−16
@@ -148,10 +148,6 @@ ENDPROC(cpu_v7_do_resume) · 147 unmodified lines
148 * Initialise TLB, Caches, and MMU state ready to switch the MMU148 * Initialise TLB, Caches, and MMU state ready to switch the MMU
149 * on. Return in r0 the new CP15 C1 control register setting.149 * on. Return in r0 the new CP15 C1 control register setting.
150 *150 *
151 * We automatically detect if we have a Harvard cache, and use the
152 * Harvard cache control instructions insead of the unified cache
153 * control instructions.
154 *
155 * This should be able to cover all ARMv7 cores.151 * This should be able to cover all ARMv7 cores.
156 *152 *
157 * It is assumed that:153 * It is assumed that:
@@ -251,9 +247,7 @@ __v7_setup: · 93 unmodified lines
251#endif247#endif
252 248
2533: mov r10, #02493: mov r10, #0
254#ifdef HARVARD_CACHE
255 mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate250 mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate
256#endif
257 dsb251 dsb
258#ifdef CONFIG_MMU252#ifdef CONFIG_MMU
259 mcr p15, 0, r10, c8, c7, 0 @ invalidate I + D TLBs253 mcr p15, 0, r10, c8, c7, 0 @ invalidate I + D TLBs
@@ -329,16 +323,6 @@ __v7_ca5mp_proc_info: · 69 unmodified lines
329 __v7_proc __v7_ca5mp_setup323 __v7_proc __v7_ca5mp_setup
330 .size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info324 .size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info
331 325
332 /*
333 * ARM Ltd. Cortex A7 processor.
334 */
335 .type __v7_ca7mp_proc_info, #object
336__v7_ca7mp_proc_info:
337 .long 0x410fc070
338 .long 0xff0ffff0
339 __v7_proc __v7_ca7mp_setup, hwcaps = HWCAP_IDIV
340 .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
341
342 /*326 /*
343 * ARM Ltd. Cortex A9 processor.327 * ARM Ltd. Cortex A9 processor.
344 */328 */
@@ -350,6 +334,16 @@ __v7_ca9mp_proc_info: · 5 unmodified lines
350 .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info334 .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info
351#endif /* CONFIG_ARM_LPAE */335#endif /* CONFIG_ARM_LPAE */
352 336
337 /*
338 * ARM Ltd. Cortex A7 processor.
339 */
340 .type __v7_ca7mp_proc_info, #object
341__v7_ca7mp_proc_info:
342 .long 0x410fc070
343 .long 0xff0ffff0
344 __v7_proc __v7_ca7mp_setup, hwcaps = HWCAP_IDIV
345 .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
346
353 /*347 /*
354 * ARM Ltd. Cortex A15 processor.348 * ARM Ltd. Cortex A15 processor.
355 */349 */
arch/arm/plat-mxc/Kconfig+3−12
@@ -17,26 +17,17 @@ config ARCH_IMX_V4_V5 · 16 unmodified lines
17 and ARMv5 SoCs17 and ARMv5 SoCs
18 18
19config ARCH_IMX_V6_V719config ARCH_IMX_V6_V7
20 bool "i.MX3, i.MX6"20 bool "i.MX3, i.MX5, i.MX6"
21 select AUTO_ZRELADDR if !ZBOOT_ROM21 select AUTO_ZRELADDR if !ZBOOT_ROM
22 select ARM_PATCH_PHYS_VIRT22 select ARM_PATCH_PHYS_VIRT
23 select MIGHT_HAVE_CACHE_L2X023 select MIGHT_HAVE_CACHE_L2X0
24 help24 help
25 This enables support for systems based on the Freescale i.MX3 and i.MX625 This enables support for systems based on the Freescale i.MX3, i.MX5
26 family.26 and i.MX6 family.
27
28config ARCH_MX5
29 bool "i.MX50, i.MX51, i.MX53"
30 select AUTO_ZRELADDR if !ZBOOT_ROM
31 select ARM_PATCH_PHYS_VIRT
32 help
33 This enables support for machines using Freescale's i.MX50 and i.MX53
34 processors.
35 27
36endchoice28endchoice
37 29
38source "arch/arm/mach-imx/Kconfig"30source "arch/arm/mach-imx/Kconfig"
39source "arch/arm/mach-mx5/Kconfig"
40 31
41endmenu32endmenu
42 33
arch/arm/plat-mxc/include/mach/iomux-v1.h+1−1
@@ -96,6 +96,6 @@ extern int mxc_gpio_mode(int gpio_mode); · 95 unmodified lines
96extern int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,96extern int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
97 const char *label);97 const char *label);
98 98
99extern int __init imx_iomuxv1_init(void __iomem *base, int numports);99extern int imx_iomuxv1_init(void __iomem *base, int numports);
100 100
101#endif /* __MACH_IOMUX_V1_H__ */101#endif /* __MACH_IOMUX_V1_H__ */
arch/arm/plat-mxc/include/mach/mx3fb.h+15−0
@@ -22,6 +22,20 @@ · 21 unmodified lines
22#define FB_SYNC_SWAP_RGB 0x0400000022#define FB_SYNC_SWAP_RGB 0x04000000
23#define FB_SYNC_CLK_SEL_EN 0x0200000023#define FB_SYNC_CLK_SEL_EN 0x02000000
24 24
25/*
26 * Specify the way your display is connected. The IPU can arbitrarily
27 * map the internal colors to the external data lines. We only support
28 * the following mappings at the moment.
29 */
30enum disp_data_mapping {
31 /* blue -> d[0..5], green -> d[6..11], red -> d[12..17] */
32 IPU_DISP_DATA_MAPPING_RGB666,
33 /* blue -> d[0..4], green -> d[5..10], red -> d[11..15] */
34 IPU_DISP_DATA_MAPPING_RGB565,
35 /* blue -> d[0..7], green -> d[8..15], red -> d[16..23] */
36 IPU_DISP_DATA_MAPPING_RGB888,
37};
38
25/**39/**
26 * struct mx3fb_platform_data - mx3fb platform data40 * struct mx3fb_platform_data - mx3fb platform data
27 *41 *
@@ -33,6 +47,7 @@ struct mx3fb_platform_data { · 5 unmodified lines
33 const char *name;47 const char *name;
34 const struct fb_videomode *mode;48 const struct fb_videomode *mode;
35 int num_modes;49 int num_modes;
50 enum disp_data_mapping disp_data_fmt;
36};51};
37 52
38#endif53#endif
arch/arm/plat-nomadik/include/plat/ste_dma40.h+8−3
@@ -113,7 +113,8 @@ struct stedma40_half_channel_info { · 112 unmodified lines
113 * @dst_dev_type: Dst device type113 * @dst_dev_type: Dst device type
114 * @src_info: Parameters for dst half channel114 * @src_info: Parameters for dst half channel
115 * @dst_info: Parameters for dst half channel115 * @dst_info: Parameters for dst half channel
116 *116 * @use_fixed_channel: if true, use physical channel specified by phy_channel
117 * @phy_channel: physical channel to use, only if use_fixed_channel is true
117 *118 *
118 * This structure has to be filled by the client drivers.119 * This structure has to be filled by the client drivers.
119 * It is recommended to do all dma configurations for clients in the machine.120 * It is recommended to do all dma configurations for clients in the machine.
@@ -129,6 +130,9 @@ struct stedma40_chan_cfg { · 9 unmodified lines
129 int dst_dev_type;130 int dst_dev_type;
130 struct stedma40_half_channel_info src_info;131 struct stedma40_half_channel_info src_info;
131 struct stedma40_half_channel_info dst_info;132 struct stedma40_half_channel_info dst_info;
133
134 bool use_fixed_channel;
135 int phy_channel;
132};136};
133 137
134/**138/**
@@ -153,6 +157,7 @@ struct stedma40_platform_data { · 18 unmodified lines
153 struct stedma40_chan_cfg *memcpy_conf_phy;157 struct stedma40_chan_cfg *memcpy_conf_phy;
154 struct stedma40_chan_cfg *memcpy_conf_log;158 struct stedma40_chan_cfg *memcpy_conf_log;
155 int disabled_channels[STEDMA40_MAX_PHYS];159 int disabled_channels[STEDMA40_MAX_PHYS];
160 bool use_esram_lcla;
156};161};
157 162
158#ifdef CONFIG_STE_DMA40163#ifdef CONFIG_STE_DMA40
@@ -187,7 +192,7 @@ static inline struct · 28 unmodified lines
187dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,192dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
188 dma_addr_t addr,193 dma_addr_t addr,
189 unsigned int size,194 unsigned int size,
190 enum dma_data_direction direction,195 enum dma_transfer_direction direction,
191 unsigned long flags)196 unsigned long flags)
192{197{
193 struct scatterlist sg;198 struct scatterlist sg;
@@ -209,7 +214,7 @@ static inline struct · 15 unmodified lines
209dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,214dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
210 dma_addr_t addr,215 dma_addr_t addr,
211 unsigned int size,216 unsigned int size,
212 enum dma_data_direction direction,217 enum dma_transfer_direction direction,
213 unsigned long flags)218 unsigned long flags)
214{219{
215 return NULL;220 return NULL;
arch/arm/plat-omap/include/plat/omap-secure.h+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
3 3
4#include <linux/types.h>4#include <linux/types.h>
5 5
6#ifdef CONFIG_ARCH_OMAP2PLUS6#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
7extern int omap_secure_ram_reserve_memblock(void);7extern int omap_secure_ram_reserve_memblock(void);
8#else8#else
9static inline void omap_secure_ram_reserve_memblock(void)9static inline void omap_secure_ram_reserve_memblock(void)
arch/arm/plat-orion/common.c+4−5
@@ -789,10 +789,7 @@ void __init orion_xor1_init(unsigned long mapbase_low, · 788 unmodified lines
789/*****************************************************************************789/*****************************************************************************
790 * EHCI790 * EHCI
791 ****************************************************************************/791 ****************************************************************************/
792static struct orion_ehci_data orion_ehci_data = {792static struct orion_ehci_data orion_ehci_data;
793 .phy_version = EHCI_PHY_NA,
794};
795
796static u64 ehci_dmamask = DMA_BIT_MASK(32);793static u64 ehci_dmamask = DMA_BIT_MASK(32);
797 794
798 795
@@ -812,8 +809,10 @@ static struct platform_device orion_ehci = { · 13 unmodified lines
812};809};
813 810
814void __init orion_ehci_init(unsigned long mapbase,811void __init orion_ehci_init(unsigned long mapbase,
815 unsigned long irq)812 unsigned long irq,
813 enum orion_ehci_phy_ver phy_version)
816{814{
815 orion_ehci_data.phy_version = phy_version;
817 fill_resources(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,816 fill_resources(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,
818 irq);817 irq);
819 818
arch/arm/plat-orion/include/plat/common.h+2−1
@@ -89,7 +89,8 @@ void __init orion_xor1_init(unsigned long mapbase_low, · 88 unmodified lines
89 unsigned long irq_1);89 unsigned long irq_1);
90 90
91void __init orion_ehci_init(unsigned long mapbase,91void __init orion_ehci_init(unsigned long mapbase,
92 unsigned long irq);92 unsigned long irq,
93 enum orion_ehci_phy_ver phy_version);
93 94
94void __init orion_ehci_1_init(unsigned long mapbase,95void __init orion_ehci_1_init(unsigned long mapbase,
95 unsigned long irq);96 unsigned long irq);
arch/arm/plat-orion/mpp.c+1−2
@@ -64,8 +64,7 @@ void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask, · 63 unmodified lines
64 gpio_mode |= GPIO_INPUT_OK;64 gpio_mode |= GPIO_INPUT_OK;
65 if (*mpp_list & MPP_OUTPUT_MASK)65 if (*mpp_list & MPP_OUTPUT_MASK)
66 gpio_mode |= GPIO_OUTPUT_OK;66 gpio_mode |= GPIO_OUTPUT_OK;
67 if (sel != 0)67
68 gpio_mode = 0;
69 orion_gpio_set_valid(num, gpio_mode);68 orion_gpio_set_valid(num, gpio_mode);
70 }69 }
71 70
arch/arm/plat-samsung/devs.c+3−1
@@ -468,8 +468,10 @@ void __init s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *pd) · 467 unmodified lines
468{468{
469 struct s3c2410_platform_i2c *npd;469 struct s3c2410_platform_i2c *npd;
470 470
471 if (!pd)471 if (!pd) {
472 pd = &default_i2c_data;472 pd = &default_i2c_data;
473 pd->bus_num = 0;
474 }
473 475
474 npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),476 npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
475 &s3c_device_i2c0);477 &s3c_device_i2c0);
arch/arm/plat-samsung/dma-ops.c+2−2
@@ -37,14 +37,14 @@ static unsigned samsung_dmadev_request(enum dma_ch dma_ch, · 36 unmodified lines
37 (void *)dma_ch;37 (void *)dma_ch;
38 chan = dma_request_channel(mask, pl330_filter, filter_param);38 chan = dma_request_channel(mask, pl330_filter, filter_param);
39 39
40 if (info->direction == DMA_FROM_DEVICE) {40 if (info->direction == DMA_DEV_TO_MEM) {
41 memset(&slave_config, 0, sizeof(struct dma_slave_config));41 memset(&slave_config, 0, sizeof(struct dma_slave_config));
42 slave_config.direction = info->direction;42 slave_config.direction = info->direction;
43 slave_config.src_addr = info->fifo;43 slave_config.src_addr = info->fifo;
44 slave_config.src_addr_width = info->width;44 slave_config.src_addr_width = info->width;
45 slave_config.src_maxburst = 1;45 slave_config.src_maxburst = 1;
46 dmaengine_slave_config(chan, &slave_config);46 dmaengine_slave_config(chan, &slave_config);
47 } else if (info->direction == DMA_TO_DEVICE) {47 } else if (info->direction == DMA_MEM_TO_DEV) {
48 memset(&slave_config, 0, sizeof(struct dma_slave_config));48 memset(&slave_config, 0, sizeof(struct dma_slave_config));
49 slave_config.direction = info->direction;49 slave_config.direction = info->direction;
50 slave_config.dst_addr = info->fifo;50 slave_config.dst_addr = info->fifo;
arch/arm/plat-samsung/include/plat/dma-ops.h+3−2
@@ -14,10 +14,11 @@ · 13 unmodified lines
14#define __SAMSUNG_DMA_OPS_H_ __FILE__14#define __SAMSUNG_DMA_OPS_H_ __FILE__
15 15
16#include <linux/dmaengine.h>16#include <linux/dmaengine.h>
17#include <mach/dma.h>
17 18
18struct samsung_dma_prep_info {19struct samsung_dma_prep_info {
19 enum dma_transaction_type cap;20 enum dma_transaction_type cap;
20 enum dma_data_direction direction;21 enum dma_transfer_direction direction;
21 dma_addr_t buf;22 dma_addr_t buf;
22 unsigned long period;23 unsigned long period;
23 unsigned long len;24 unsigned long len;
@@ -27,7 +28,7 @@ struct samsung_dma_prep_info { · 3 unmodified lines
27 28
28struct samsung_dma_info {29struct samsung_dma_info {
29 enum dma_transaction_type cap;30 enum dma_transaction_type cap;
30 enum dma_data_direction direction;31 enum dma_transfer_direction direction;
31 enum dma_slave_buswidth width;32 enum dma_slave_buswidth width;
32 dma_addr_t fifo;33 dma_addr_t fifo;
33 struct s3c2410_dma_client *client;34 struct s3c2410_dma_client *client;
arch/arm/plat-samsung/include/plat/dma.h+5−1
@@ -10,6 +10,9 @@ · 9 unmodified lines
10 * published by the Free Software Foundation.10 * published by the Free Software Foundation.
11*/11*/
12 12
13#ifndef __PLAT_DMA_H
14#define __PLAT_DMA_H
15
13#include <linux/dma-mapping.h>16#include <linux/dma-mapping.h>
14 17
15enum s3c2410_dma_buffresult {18enum s3c2410_dma_buffresult {
@@ -122,5 +125,6 @@ extern int s3c2410_dma_getposition(enum dma_ch channel, · 106 unmodified lines
122extern int s3c2410_dma_set_opfn(enum dma_ch, s3c2410_dma_opfn_t rtn);125extern int s3c2410_dma_set_opfn(enum dma_ch, s3c2410_dma_opfn_t rtn);
123extern int s3c2410_dma_set_buffdone_fn(enum dma_ch, s3c2410_dma_cbfn_t rtn);126extern int s3c2410_dma_set_buffdone_fn(enum dma_ch, s3c2410_dma_cbfn_t rtn);
124 127
125
126#include <plat/dma-ops.h>128#include <plat/dma-ops.h>
129
130#endif
arch/arm/plat-samsung/include/plat/s3c64xx-spi.h+2−0
@@ -11,6 +11,8 @@ · 10 unmodified lines
11#ifndef __S3C64XX_PLAT_SPI_H11#ifndef __S3C64XX_PLAT_SPI_H
12#define __S3C64XX_PLAT_SPI_H12#define __S3C64XX_PLAT_SPI_H
13 13
14struct platform_device;
15
14/**16/**
15 * struct s3c64xx_spi_csinfo - ChipSelect description17 * struct s3c64xx_spi_csinfo - ChipSelect description
16 * @fb_delay: Slave specific feedback delay.18 * @fb_delay: Slave specific feedback delay.
arch/arm/plat-versatile/headsmp.S+1−0
@@ -38,3 +38,4 @@ pen: ldr r7, [r6] · 37 unmodified lines
38 .align38 .align
391: .long .391: .long .
40 .long pen_release40 .long pen_release
41ENDPROC(versatile_secondary_startup)
arch/arm/plat-versatile/platsmp.c+1−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
16#include <linux/smp.h>16#include <linux/smp.h>
17 17
18#include <asm/cacheflush.h>18#include <asm/cacheflush.h>
19#include <asm/smp_plat.h>
19#include <asm/hardware/gic.h>20#include <asm/hardware/gic.h>
20 21
21/*22/*
arch/avr32/Kconfig+1−0
@@ -8,6 +8,7 @@ config AVR32 · 7 unmodified lines
8 select HAVE_KPROBES8 select HAVE_KPROBES
9 select HAVE_GENERIC_HARDIRQS9 select HAVE_GENERIC_HARDIRQS
10 select GENERIC_IRQ_PROBE10 select GENERIC_IRQ_PROBE
11 select GENERIC_ATOMIC64
11 select HARDIRQS_SW_RESEND12 select HARDIRQS_SW_RESEND
12 select GENERIC_IRQ_SHOW13 select GENERIC_IRQ_SHOW
13 select ARCH_HAVE_NMI_SAFE_CMPXCHG14 select ARCH_HAVE_NMI_SAFE_CMPXCHG
arch/ia64/include/asm/ptrace.h+12−1
@@ -246,7 +246,18 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs) · 245 unmodified lines
246 return regs->ar_bspstore;246 return regs->ar_bspstore;
247}247}
248 248
249#define regs_return_value(regs) ((regs)->r8)249static inline int is_syscall_success(struct pt_regs *regs)
250{
251 return regs->r10 != -1;
252}
253
254static inline long regs_return_value(struct pt_regs *regs)
255{
256 if (is_syscall_success(regs))
257 return regs->r8;
258 else
259 return -regs->r8;
260}
250 261
251/* Conserve space in histogram by encoding slot bits in address262/* Conserve space in histogram by encoding slot bits in address
252 * bits 2 and 3 rather than bits 0 and 1.263 * bits 2 and 3 rather than bits 0 and 1.
arch/ia64/kernel/acpi.c+6−4
@@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FLAG_LEN]; · 428 unmodified lines
429static struct acpi_table_slit __initdata *slit_table;429static struct acpi_table_slit __initdata *slit_table;
430cpumask_t early_cpu_possible_map = CPU_MASK_NONE;430cpumask_t early_cpu_possible_map = CPU_MASK_NONE;
431 431
432static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)432static int __init
433get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
433{434{
434 int pxm;435 int pxm;
435 436
436 pxm = pa->proximity_domain_lo;437 pxm = pa->proximity_domain_lo;
437 if (ia64_platform_is("sn2"))438 if (ia64_platform_is("sn2") || acpi_srat_revision >= 2)
438 pxm += pa->proximity_domain_hi[0] << 8;439 pxm += pa->proximity_domain_hi[0] << 8;
439 return pxm;440 return pxm;
440}441}
441 442
442static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)443static int __init
444get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
443{445{
444 int pxm;446 int pxm;
445 447
446 pxm = ma->proximity_domain;448 pxm = ma->proximity_domain;
447 if (!ia64_platform_is("sn2"))449 if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1)
448 pxm &= 0xff;450 pxm &= 0xff;
449 451
450 return pxm;452 return pxm;
arch/ia64/kernel/ptrace.c+2−16
@@ -1246,15 +1246,8 @@ syscall_trace_enter (long arg0, long arg1, long arg2, long arg3, · 1245 unmodified lines
1246 if (test_thread_flag(TIF_RESTORE_RSE))1246 if (test_thread_flag(TIF_RESTORE_RSE))
1247 ia64_sync_krbs();1247 ia64_sync_krbs();
1248 1248
1249 if (unlikely(current->audit_context)) {
1250 long syscall;
1251 int arch;
1252 1249
1253 syscall = regs.r15;1250 audit_syscall_entry(AUDIT_ARCH_IA64, regs.r15, arg0, arg1, arg2, arg3);
1254 arch = AUDIT_ARCH_IA64;
1255
1256 audit_syscall_entry(arch, syscall, arg0, arg1, arg2, arg3);
1257 }
1258 1251
1259 return 0;1252 return 0;
1260}1253}
@@ -1268,14 +1261,7 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3, · 7 unmodified lines
1268{1261{
1269 int step;1262 int step;
1270 1263
1271 if (unlikely(current->audit_context)) {1264 audit_syscall_exit(&regs);
1272 int success = AUDITSC_RESULT(regs.r10);
1273 long result = regs.r8;
1274
1275 if (success != AUDITSC_SUCCESS)
1276 result = -result;
1277 audit_syscall_exit(success, result);
1278 }
1279 1265
1280 step = test_thread_flag(TIF_SINGLESTEP);1266 step = test_thread_flag(TIF_SINGLESTEP);
1281 if (step || test_thread_flag(TIF_SYSCALL_TRACE))1267 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
arch/m68k/atari/config.c+4−4
@@ -414,9 +414,9 @@ void __init config_atari(void) · 413 unmodified lines
414 * FDC val = 4 -> Supervisor only */414 * FDC val = 4 -> Supervisor only */
415 asm volatile ("\n"415 asm volatile ("\n"
416 " .chip 68030\n"416 " .chip 68030\n"
417 " pmove %0@,%/tt1\n"417 " pmove %0,%/tt1\n"
418 " .chip 68k"418 " .chip 68k"
419 : : "a" (&tt1_val));419 : : "m" (tt1_val));
420 } else {420 } else {
421 asm volatile ("\n"421 asm volatile ("\n"
422 " .chip 68040\n"422 " .chip 68040\n"
@@ -569,10 +569,10 @@ static void atari_reset(void) · 146 unmodified lines
569 : "d0");569 : "d0");
570 } else570 } else
571 asm volatile ("\n"571 asm volatile ("\n"
572 " pmove %0@,%%tc\n"572 " pmove %0,%%tc\n"
573 " jmp %1@"573 " jmp %1@"
574 : /* no outputs */574 : /* no outputs */
575 : "a" (&tc_val), "a" (reset_addr));575 : "m" (tc_val), "a" (reset_addr));
576}576}
577 577
578 578
arch/m68k/include/asm/irq.h+0−13
@@ -50,19 +50,6 @@ · 49 unmodified lines
50 50
51#define IRQ_USER 851#define IRQ_USER 8
52 52
53/*
54 * various flags for request_irq() - the Amiga now uses the standard
55 * mechanism like all other architectures - IRQF_DISABLED and
56 * IRQF_SHARED are your friends.
57 */
58#ifndef MACH_AMIGA_ONLY
59#define IRQ_FLG_LOCK (0x0001) /* handler is not replaceable */
60#define IRQ_FLG_REPLACE (0x0002) /* replace existing handler */
61#define IRQ_FLG_FAST (0x0004)
62#define IRQ_FLG_SLOW (0x0008)
63#define IRQ_FLG_STD (0x8000) /* internally used */
64#endif
65
66struct irq_data;53struct irq_data;
67struct irq_chip;54struct irq_chip;
68struct irq_desc;55struct irq_desc;
arch/m68k/include/asm/mcf_pgtable.h+2−1
@@ -78,7 +78,8 @@ · 77 unmodified lines
78 | CF_PAGE_READABLE \78 | CF_PAGE_READABLE \
79 | CF_PAGE_WRITABLE \79 | CF_PAGE_WRITABLE \
80 | CF_PAGE_EXEC \80 | CF_PAGE_EXEC \
81 | CF_PAGE_SYSTEM)81 | CF_PAGE_SYSTEM \
82 | CF_PAGE_SHARED)
82 83
83#define PAGE_COPY __pgprot(CF_PAGE_VALID \84#define PAGE_COPY __pgprot(CF_PAGE_VALID \
84 | CF_PAGE_ACCESSED \85 | CF_PAGE_ACCESSED \
arch/m68k/kernel/process_mm.c+1−1
@@ -172,7 +172,7 @@ void flush_thread(void) · 171 unmodified lines
172 172
173 current->thread.fs = __USER_DS;173 current->thread.fs = __USER_DS;
174 if (!FPU_IS_EMU)174 if (!FPU_IS_EMU)
175 asm volatile ("frestore %0@" : : "a" (&zero) : "memory");175 asm volatile("frestore %0": :"m" (zero));
176}176}
177 177
178/*178/*
arch/m68k/kernel/process_no.c+2−2
@@ -163,8 +163,8 @@ void flush_thread(void) · 162 unmodified lines
163#ifdef CONFIG_FPU163#ifdef CONFIG_FPU
164 if (!FPU_IS_EMU)164 if (!FPU_IS_EMU)
165 asm volatile (".chip 68k/68881\n\t"165 asm volatile (".chip 68k/68881\n\t"
166 "frestore %0@\n\t"166 "frestore %0\n\t"
167 ".chip 68k" : : "a" (&zero));167 ".chip 68k" : : "m" (zero));
168#endif168#endif
169}169}
170 170
arch/m68k/kernel/traps.c+17−19
@@ -552,13 +552,13 @@ static inline void bus_error030 (struct frame *fp) · 551 unmodified lines
552 552
553#ifdef DEBUG553#ifdef DEBUG
554 asm volatile ("ptestr %3,%2@,#7,%0\n\t"554 asm volatile ("ptestr %3,%2@,#7,%0\n\t"
555 "pmove %%psr,%1@"555 "pmove %%psr,%1"
556 : "=a&" (desc)556 : "=a&" (desc), "=m" (temp)
557 : "a" (&temp), "a" (addr), "d" (ssw));557 : "a" (addr), "d" (ssw));
558#else558#else
559 asm volatile ("ptestr %2,%1@,#7\n\t"559 asm volatile ("ptestr %2,%1@,#7\n\t"
560 "pmove %%psr,%0@"560 "pmove %%psr,%0"
561 : : "a" (&temp), "a" (addr), "d" (ssw));561 : "=m" (temp) : "a" (addr), "d" (ssw));
562#endif562#endif
563 mmusr = temp;563 mmusr = temp;
564 564
@@ -605,20 +605,18 @@ static inline void bus_error030 (struct frame *fp) · 40 unmodified lines
605 !(ssw & RW) ? "write" : "read", addr,605 !(ssw & RW) ? "write" : "read", addr,
606 fp->ptregs.pc, ssw);606 fp->ptregs.pc, ssw);
607 asm volatile ("ptestr #1,%1@,#0\n\t"607 asm volatile ("ptestr #1,%1@,#0\n\t"
608 "pmove %%psr,%0@"608 "pmove %%psr,%0"
609 : /* no outputs */609 : "=m" (temp)
610 : "a" (&temp), "a" (addr));610 : "a" (addr));
611 mmusr = temp;611 mmusr = temp;
612 612
613 printk ("level 0 mmusr is %#x\n", mmusr);613 printk ("level 0 mmusr is %#x\n", mmusr);
614#if 0614#if 0
615 asm volatile ("pmove %%tt0,%0@"615 asm volatile ("pmove %%tt0,%0"
616 : /* no outputs */616 : "=m" (tlong));
617 : "a" (&tlong));
618 printk("tt0 is %#lx, ", tlong);617 printk("tt0 is %#lx, ", tlong);
619 asm volatile ("pmove %%tt1,%0@"618 asm volatile ("pmove %%tt1,%0"
620 : /* no outputs */619 : "=m" (tlong));
621 : "a" (&tlong));
622 printk("tt1 is %#lx\n", tlong);620 printk("tt1 is %#lx\n", tlong);
623#endif621#endif
624#ifdef DEBUG622#ifdef DEBUG
@@ -668,13 +666,13 @@ static inline void bus_error030 (struct frame *fp) · 43 unmodified lines
668 666
669#ifdef DEBUG667#ifdef DEBUG
670 asm volatile ("ptestr #1,%2@,#7,%0\n\t"668 asm volatile ("ptestr #1,%2@,#7,%0\n\t"
671 "pmove %%psr,%1@"669 "pmove %%psr,%1"
672 : "=a&" (desc)670 : "=a&" (desc), "=m" (temp)
673 : "a" (&temp), "a" (addr));671 : "a" (addr));
674#else672#else
675 asm volatile ("ptestr #1,%1@,#7\n\t"673 asm volatile ("ptestr #1,%1@,#7\n\t"
676 "pmove %%psr,%0@"674 "pmove %%psr,%0"
677 : : "a" (&temp), "a" (addr));675 : "=m" (temp) : "a" (addr));
678#endif676#endif
679 mmusr = temp;677 mmusr = temp;
680 678
arch/m68k/mm/cache.c+3−3
@@ -52,9 +52,9 @@ static unsigned long virt_to_phys_slow(unsigned long vaddr) · 51 unmodified lines
52 unsigned long *descaddr;52 unsigned long *descaddr;
53 53
54 asm volatile ("ptestr %3,%2@,#7,%0\n\t"54 asm volatile ("ptestr %3,%2@,#7,%0\n\t"
55 "pmove %%psr,%1@"55 "pmove %%psr,%1"
56 : "=a&" (descaddr)56 : "=a&" (descaddr), "=m" (mmusr)
57 : "a" (&mmusr), "a" (vaddr), "d" (get_fs().seg));57 : "a" (vaddr), "d" (get_fs().seg));
58 if (mmusr & (MMU_I|MMU_B|MMU_L))58 if (mmusr & (MMU_I|MMU_B|MMU_L))
59 return 0;59 return 0;
60 descaddr = phys_to_virt((unsigned long)descaddr);60 descaddr = phys_to_virt((unsigned long)descaddr);
arch/m68k/mm/mcfmmu.c+5−4
@@ -87,7 +87,7 @@ void __init paging_init(void) · 86 unmodified lines
87 87
88int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word)88int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word)
89{89{
90 unsigned long flags, mmuar;90 unsigned long flags, mmuar, mmutr;
91 struct mm_struct *mm;91 struct mm_struct *mm;
92 pgd_t *pgd;92 pgd_t *pgd;
93 pmd_t *pmd;93 pmd_t *pmd;
@@ -137,9 +137,10 @@ int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word) · 43 unmodified lines
137 if (!pte_dirty(*pte) && !KMAPAREA(mmuar))137 if (!pte_dirty(*pte) && !KMAPAREA(mmuar))
138 set_pte(pte, pte_wrprotect(*pte));138 set_pte(pte, pte_wrprotect(*pte));
139 139
140 mmu_write(MMUTR, (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) |140 mmutr = (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) | MMUTR_V;
141 (((int)(pte->pte) & (int)CF_PAGE_MMUTR_MASK)141 if ((mmuar < TASK_UNMAPPED_BASE) || (mmuar >= TASK_SIZE))
142 >> CF_PAGE_MMUTR_SHIFT) | MMUTR_V);142 mmutr |= (pte->pte & CF_PAGE_MMUTR_MASK) >> CF_PAGE_MMUTR_SHIFT;
143 mmu_write(MMUTR, mmutr);
143 144
144 mmu_write(MMUDR, (pte_val(*pte) & PAGE_MASK) |145 mmu_write(MMUDR, (pte_val(*pte) & PAGE_MASK) |
145 ((pte->pte) & CF_PAGE_MMUDR_MASK) | MMUDR_SZ_8KB | MMUDR_X);146 ((pte->pte) & CF_PAGE_MMUDR_MASK) | MMUDR_SZ_8KB | MMUDR_X);
arch/m68k/platform/coldfire/entry.S+1−3
@@ -136,7 +136,7 @@ Luser_return: · 135 unmodified lines
136 movel %sp,%d1 /* get thread_info pointer */136 movel %sp,%d1 /* get thread_info pointer */
137 andl #-THREAD_SIZE,%d1 /* at base of kernel stack */137 andl #-THREAD_SIZE,%d1 /* at base of kernel stack */
138 movel %d1,%a0138 movel %d1,%a0
139 movel %a0@(TINFO_FLAGS),%d1 /* get thread_info->flags */139 moveb %a0@(TINFO_FLAGS+3),%d1 /* thread_info->flags (low 8 bits) */
140 jne Lwork_to_do /* still work to do */140 jne Lwork_to_do /* still work to do */
141 141
142Lreturn:142Lreturn:
@@ -148,8 +148,6 @@ Lwork_to_do: · 5 unmodified lines
148 btst #TIF_NEED_RESCHED,%d1148 btst #TIF_NEED_RESCHED,%d1
149 jne reschedule149 jne reschedule
150 150
151 /* GERG: do we need something here for TRACEing?? */
152
153Lsignal_return:151Lsignal_return:
154 subql #4,%sp /* dummy return address */152 subql #4,%sp /* dummy return address */
155 SAVE_SWITCH_STACK153 SAVE_SWITCH_STACK
arch/microblaze/Kconfig+1−0
@@ -19,6 +19,7 @@ config MICROBLAZE · 18 unmodified lines
19 select GENERIC_IRQ_SHOW19 select GENERIC_IRQ_SHOW
20 select GENERIC_PCI_IOMAP20 select GENERIC_PCI_IOMAP
21 select GENERIC_CPU_DEVICES21 select GENERIC_CPU_DEVICES
22 select GENERIC_ATOMIC64
22 23
23config SWAP24config SWAP
24 def_bool n25 def_bool n
arch/microblaze/include/asm/atomic.h+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
2#define _ASM_MICROBLAZE_ATOMIC_H2#define _ASM_MICROBLAZE_ATOMIC_H
3 3
4#include <asm-generic/atomic.h>4#include <asm-generic/atomic.h>
5#include <asm-generic/atomic64.h>
5 6
6/*7/*
7 * Atomically test *v and decrement if it is greater than 0.8 * Atomically test *v and decrement if it is greater than 0.
arch/microblaze/include/asm/ptrace.h+5−0
@@ -61,6 +61,11 @@ struct pt_regs { · 60 unmodified lines
61#define instruction_pointer(regs) ((regs)->pc)61#define instruction_pointer(regs) ((regs)->pc)
62#define profile_pc(regs) instruction_pointer(regs)62#define profile_pc(regs) instruction_pointer(regs)
63 63
64static inline long regs_return_value(struct pt_regs *regs)
65{
66 return regs->r3;
67}
68
64#else /* __KERNEL__ */69#else /* __KERNEL__ */
65 70
66/* pt_regs offsets used by gdbserver etc in ptrace syscalls */71/* pt_regs offsets used by gdbserver etc in ptrace syscalls */
arch/microblaze/kernel/ptrace.c+3−6
@@ -147,10 +147,8 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) · 146 unmodified lines
147 */147 */
148 ret = -1L;148 ret = -1L;
149 149
150 if (unlikely(current->audit_context))150 audit_syscall_entry(EM_MICROBLAZE, regs->r12, regs->r5, regs->r6,
151 audit_syscall_entry(EM_MICROBLAZE, regs->r12,151 regs->r7, regs->r8);
152 regs->r5, regs->r6,
153 regs->r7, regs->r8);
154 152
155 return ret ?: regs->r12;153 return ret ?: regs->r12;
156}154}
@@ -159,8 +157,7 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
159{157{
160 int step;158 int step;
161 159
162 if (unlikely(current->audit_context))160 audit_syscall_exit(regs);
163 audit_syscall_exit(AUDITSC_RESULT(regs->r3), regs->r3);
164 161
165 step = test_thread_flag(TIF_SINGLESTEP);162 step = test_thread_flag(TIF_SINGLESTEP);
166 if (step || test_thread_flag(TIF_SYSCALL_TRACE))163 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
arch/mips/Kconfig+1−0
@@ -2356,6 +2356,7 @@ config PCI · 2355 unmodified lines
2356 depends on HW_HAS_PCI2356 depends on HW_HAS_PCI
2357 select PCI_DOMAINS2357 select PCI_DOMAINS
2358 select GENERIC_PCI_IOMAP2358 select GENERIC_PCI_IOMAP
2359 select NO_GENERIC_PCI_IOPORT_MAP
2359 help2360 help
2360 Find out whether you have a PCI motherboard. PCI is the name of a2361 Find out whether you have a PCI motherboard. PCI is the name of a
2361 bus system, i.e. the way the CPU talks to the other stuff inside2362 bus system, i.e. the way the CPU talks to the other stuff inside
arch/mips/include/asm/ptrace.h+13−1
@@ -137,7 +137,19 @@ extern int ptrace_set_watch_regs(struct task_struct *child, · 136 unmodified lines
137 */137 */
138#define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER)138#define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER)
139 139
140#define regs_return_value(_regs) ((_regs)->regs[2])140static inline int is_syscall_success(struct pt_regs *regs)
141{
142 return !regs->regs[7];
143}
144
145static inline long regs_return_value(struct pt_regs *regs)
146{
147 if (is_syscall_success(regs))
148 return regs->regs[2];
149 else
150 return -regs->regs[2];
151}
152
141#define instruction_pointer(regs) ((regs)->cp0_epc)153#define instruction_pointer(regs) ((regs)->cp0_epc)
142#define profile_pc(regs) instruction_pointer(regs)154#define profile_pc(regs) instruction_pointer(regs)
143 155
arch/mips/kernel/ptrace.c+4−7
@@ -560,10 +560,9 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs) · 559 unmodified lines
560 }560 }
561 561
562out:562out:
563 if (unlikely(current->audit_context))563 audit_syscall_entry(audit_arch(), regs->regs[2],
564 audit_syscall_entry(audit_arch(), regs->regs[2],564 regs->regs[4], regs->regs[5],
565 regs->regs[4], regs->regs[5],565 regs->regs[6], regs->regs[7]);
566 regs->regs[6], regs->regs[7]);
567}566}
568 567
569/*568/*
@@ -572,9 +571,7 @@ out: · 2 unmodified lines
572 */571 */
573asmlinkage void syscall_trace_leave(struct pt_regs *regs)572asmlinkage void syscall_trace_leave(struct pt_regs *regs)
574{573{
575 if (unlikely(current->audit_context))574 audit_syscall_exit(regs);
576 audit_syscall_exit(AUDITSC_RESULT(regs->regs[7]),
577 -regs->regs[2]);
578 575
579 if (!(current->ptrace & PT_PTRACED))576 if (!(current->ptrace & PT_PTRACED))
580 return;577 return;
arch/mips/lib/iomap-pci.c+2−2
@@ -10,8 +10,8 @@ · 9 unmodified lines
10#include <linux/module.h>10#include <linux/module.h>
11#include <asm/io.h>11#include <asm/io.h>
12 12
13static void __iomem *ioport_map_pci(struct pci_dev *dev,13void __iomem *__pci_ioport_map(struct pci_dev *dev,
14 unsigned long port, unsigned int nr)14 unsigned long port, unsigned int nr)
15{15{
16 struct pci_controller *ctrl = dev->bus->sysdata;16 struct pci_controller *ctrl = dev->bus->sysdata;
17 unsigned long base = ctrl->io_map_base;17 unsigned long base = ctrl->io_map_base;
arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi+4−0
@@ -236,6 +236,10 @@ · 235 unmodified lines
236 };236 };
237 237
238/include/ "pq3-esdhc-0.dtsi"238/include/ "pq3-esdhc-0.dtsi"
239 sdhc@2e000 {
240 compatible = "fsl,mpc8536-esdhc", "fsl,esdhc";
241 };
242
239/include/ "pq3-sec3.0-0.dtsi"243/include/ "pq3-sec3.0-0.dtsi"
240/include/ "pq3-mpic.dtsi"244/include/ "pq3-mpic.dtsi"
241/include/ "pq3-mpic-timer-B.dtsi"245/include/ "pq3-mpic-timer-B.dtsi"
arch/powerpc/boot/dts/fsl/p1010si-post.dtsi+2−1
@@ -158,7 +158,8 @@ · 157 unmodified lines
158/include/ "pq3-usb2-dr-0.dtsi"158/include/ "pq3-usb2-dr-0.dtsi"
159/include/ "pq3-esdhc-0.dtsi"159/include/ "pq3-esdhc-0.dtsi"
160 sdhc@2e000 {160 sdhc@2e000 {
161 fsl,sdhci-auto-cmd12;161 compatible = "fsl,p1010-esdhc", "fsl,esdhc";
162 sdhci,auto-cmd12;
162 };163 };
163 164
164/include/ "pq3-sec4.4-0.dtsi"165/include/ "pq3-sec4.4-0.dtsi"
arch/powerpc/boot/dts/fsl/p1020si-post.dtsi+4−0
@@ -145,6 +145,10 @@ · 144 unmodified lines
145/include/ "pq3-usb2-dr-1.dtsi"145/include/ "pq3-usb2-dr-1.dtsi"
146 146
147/include/ "pq3-esdhc-0.dtsi"147/include/ "pq3-esdhc-0.dtsi"
148 sdhc@2e000 {
149 compatible = "fsl,p1020-esdhc", "fsl,esdhc";
150 sdhci,auto-cmd12;
151 };
148/include/ "pq3-sec3.3-0.dtsi"152/include/ "pq3-sec3.3-0.dtsi"
149 153
150/include/ "pq3-mpic.dtsi"154/include/ "pq3-mpic.dtsi"
arch/powerpc/boot/dts/fsl/p1022si-post.dtsi+2−1
@@ -203,7 +203,8 @@ · 202 unmodified lines
203 203
204/include/ "pq3-esdhc-0.dtsi"204/include/ "pq3-esdhc-0.dtsi"
205 sdhc@2e000 {205 sdhc@2e000 {
206 fsl,sdhci-auto-cmd12;206 compatible = "fsl,p1022-esdhc", "fsl,esdhc";
207 sdhci,auto-cmd12;
207 };208 };
208 209
209/include/ "pq3-sec3.3-0.dtsi"210/include/ "pq3-sec3.3-0.dtsi"
arch/powerpc/boot/dts/fsl/p2020si-post.dtsi+4−0
@@ -182,6 +182,10 @@ · 181 unmodified lines
182/include/ "pq3-etsec1-1.dtsi"182/include/ "pq3-etsec1-1.dtsi"
183/include/ "pq3-etsec1-2.dtsi"183/include/ "pq3-etsec1-2.dtsi"
184/include/ "pq3-esdhc-0.dtsi"184/include/ "pq3-esdhc-0.dtsi"
185 sdhc@2e000 {
186 compatible = "fsl,p2020-esdhc", "fsl,esdhc";
187 };
188
185/include/ "pq3-sec3.1-0.dtsi"189/include/ "pq3-sec3.1-0.dtsi"
186/include/ "pq3-mpic.dtsi"190/include/ "pq3-mpic.dtsi"
187/include/ "pq3-mpic-timer-B.dtsi"191/include/ "pq3-mpic-timer-B.dtsi"
arch/powerpc/boot/dts/p1020rdb.dtsi+6−7
@@ -1,7 +1,7 @@
1/*1/*
2 * P1020 RDB Device Tree Source stub (no addresses or top-level ranges)2 * P1020 RDB Device Tree Source stub (no addresses or top-level ranges)
3 *3 *
4 * Copyright 2011 Freescale Semiconductor Inc.4 * Copyright 2011-2012 Freescale Semiconductor Inc.
5 *5 *
6 * Redistribution and use in source and binary forms, with or without6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:7 * modification, are permitted provided that the following conditions are met:
@@ -190,17 +190,16 @@ · 182 unmodified lines
190 190
191 usb@22000 {191 usb@22000 {
192 phy_type = "ulpi";192 phy_type = "ulpi";
193 dr_mode = "host";
193 };194 };
194 195
195 /* USB2 is shared with localbus, so it must be disabled196 /* USB2 is shared with localbus. It is used
196 by default. We can't put 'status = "disabled";' here197 only in case of SPI and SD boot after
197 since U-Boot doesn't clear the status property when198 appropriate device-tree fixup done by uboot */
198 it enables USB2. OTOH, U-Boot does create a new node
199 when there isn't any. So, just comment it out.
200 usb@23000 {199 usb@23000 {
201 phy_type = "ulpi";200 phy_type = "ulpi";
201 dr_mode = "host";
202 };202 };
203 */
204 203
205 mdio@24000 {204 mdio@24000 {
206 phy0: ethernet-phy@0 {205 phy0: ethernet-phy@0 {
arch/powerpc/boot/dts/p1021mds.dts+2−1
@@ -1,7 +1,7 @@
1/*1/*
2 * P1021 MDS Device Tree Source2 * P1021 MDS Device Tree Source
3 *3 *
4 * Copyright 2010 Freescale Semiconductor Inc.4 * Copyright 2010,2012 Freescale Semiconductor Inc.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify it6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the7 * under the terms of the GNU General Public License as published by the
@@ -151,6 +151,7 @@ · 143 unmodified lines
151 151
152 usb@22000 {152 usb@22000 {
153 phy_type = "ulpi";153 phy_type = "ulpi";
154 dr_mode = "host";
154 };155 };
155 156
156 mdio@24000 {157 mdio@24000 {
arch/powerpc/boot/dts/p2020ds.dtsi+2−1
@@ -1,7 +1,7 @@
1/*1/*
2 * P2020DS Device Tree Source stub (no addresses or top-level ranges)2 * P2020DS Device Tree Source stub (no addresses or top-level ranges)
3 *3 *
4 * Copyright 2011 Freescale Semiconductor Inc.4 * Copyright 2011-2012 Freescale Semiconductor Inc.
5 *5 *
6 * Redistribution and use in source and binary forms, with or without6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:7 * modification, are permitted provided that the following conditions are met:
@@ -134,6 +134,7 @@ · 126 unmodified lines
134&board_soc {134&board_soc {
135 usb@22000 {135 usb@22000 {
136 phy_type = "ulpi";136 phy_type = "ulpi";
137 dr_mode = "host";
137 };138 };
138 139
139 mdio@24520 {140 mdio@24520 {
arch/powerpc/boot/dts/p2020rdb.dts+2−1
@@ -1,7 +1,7 @@
1/*1/*
2 * P2020 RDB Device Tree Source2 * P2020 RDB Device Tree Source
3 *3 *
4 * Copyright 2009-2011 Freescale Semiconductor Inc.4 * Copyright 2009-2012 Freescale Semiconductor Inc.
5 *5 *
6 * This program is free software; you can redistribute it and/or modify it6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the7 * under the terms of the GNU General Public License as published by the
@@ -197,6 +197,7 @@ · 189 unmodified lines
197 197
198 usb@22000 {198 usb@22000 {
199 phy_type = "ulpi";199 phy_type = "ulpi";
200 dr_mode = "host";
200 };201 };
201 202
202 mdio@24520 {203 mdio@24520 {
arch/powerpc/configs/ppc64_defconfig+0−5
@@ -24,10 +24,6 @@ CONFIG_PPC_SPLPAR=y · 23 unmodified lines
24CONFIG_SCANLOG=m24CONFIG_SCANLOG=m
25CONFIG_PPC_SMLPAR=y25CONFIG_PPC_SMLPAR=y
26CONFIG_DTL=y26CONFIG_DTL=y
27CONFIG_PPC_ISERIES=y
28CONFIG_VIODASD=y
29CONFIG_VIOCD=m
30CONFIG_VIOTAPE=m
31CONFIG_PPC_MAPLE=y27CONFIG_PPC_MAPLE=y
32CONFIG_PPC_PASEMI=y28CONFIG_PPC_PASEMI=y
33CONFIG_PPC_PASEMI_IOMMU=y29CONFIG_PPC_PASEMI_IOMMU=y
@@ -259,7 +255,6 @@ CONFIG_PASEMI_MAC=y · 225 unmodified lines
259CONFIG_MLX4_EN=m255CONFIG_MLX4_EN=m
260CONFIG_QLGE=m256CONFIG_QLGE=m
261CONFIG_BE2NET=m257CONFIG_BE2NET=m
262CONFIG_ISERIES_VETH=m
263CONFIG_PPP=m258CONFIG_PPP=m
264CONFIG_PPP_ASYNC=m259CONFIG_PPP_ASYNC=m
265CONFIG_PPP_SYNC_TTY=m260CONFIG_PPP_SYNC_TTY=m
arch/powerpc/include/asm/ppc-pci.h+5−0
@@ -142,6 +142,11 @@ static inline const char *eeh_pci_name(struct pci_dev *pdev) · 141 unmodified lines
142 return pdev ? pci_name(pdev) : "<null>";142 return pdev ? pci_name(pdev) : "<null>";
143} 143}
144 144
145static inline const char *eeh_driver_name(struct pci_dev *pdev)
146{
147 return (pdev && pdev->driver) ? pdev->driver->name : "<null>";
148}
149
145#endif /* CONFIG_EEH */150#endif /* CONFIG_EEH */
146 151
147#else /* CONFIG_PCI */152#else /* CONFIG_PCI */
arch/powerpc/include/asm/ptrace.h+21−6
@@ -83,17 +83,32 @@ struct pt_regs { · 82 unmodified lines
83 83
84#ifndef __ASSEMBLY__84#ifndef __ASSEMBLY__
85 85
86#define instruction_pointer(regs) ((regs)->nip)86#define GET_IP(regs) ((regs)->nip)
87#define user_stack_pointer(regs) ((regs)->gpr[1])87#define GET_USP(regs) ((regs)->gpr[1])
88#define kernel_stack_pointer(regs) ((regs)->gpr[1])88#define GET_FP(regs) (0)
89#define regs_return_value(regs) ((regs)->gpr[3])89#define SET_FP(regs, val)
90 90
91#ifdef CONFIG_SMP91#ifdef CONFIG_SMP
92extern unsigned long profile_pc(struct pt_regs *regs);92extern unsigned long profile_pc(struct pt_regs *regs);
93#else93#define profile_pc profile_pc
94#define profile_pc(regs) instruction_pointer(regs)
95#endif94#endif
96 95
96#include <asm-generic/ptrace.h>
97
98#define kernel_stack_pointer(regs) ((regs)->gpr[1])
99static inline int is_syscall_success(struct pt_regs *regs)
100{
101 return !(regs->ccr & 0x10000000);
102}
103
104static inline long regs_return_value(struct pt_regs *regs)
105{
106 if (is_syscall_success(regs))
107 return regs->gpr[3];
108 else
109 return -regs->gpr[3];
110}
111
97#ifdef __powerpc64__112#ifdef __powerpc64__
98#define user_mode(regs) ((((regs)->msr) >> MSR_PR_LG) & 0x1)113#define user_mode(regs) ((((regs)->msr) >> MSR_PR_LG) & 0x1)
99#else114#else
arch/powerpc/kernel/crash.c+1−1
@@ -46,7 +46,6 @@ · 45 unmodified lines
46 46
47/* This keeps a track of which one is the crashing cpu. */47/* This keeps a track of which one is the crashing cpu. */
48int crashing_cpu = -1;48int crashing_cpu = -1;
49static atomic_t cpus_in_crash;
50static int time_to_dump;49static int time_to_dump;
51 50
52#define CRASH_HANDLER_MAX 351#define CRASH_HANDLER_MAX 3
@@ -66,6 +65,7 @@ static int handle_fault(struct pt_regs *regs) · 13 unmodified lines
66 65
67#ifdef CONFIG_SMP66#ifdef CONFIG_SMP
68 67
68static atomic_t cpus_in_crash;
69void crash_ipi_callback(struct pt_regs *regs)69void crash_ipi_callback(struct pt_regs *regs)
70{70{
71 static cpumask_t cpus_state_saved = CPU_MASK_NONE;71 static cpumask_t cpus_state_saved = CPU_MASK_NONE;
arch/powerpc/kernel/entry_32.S+1−1
@@ -1213,7 +1213,7 @@ do_user_signal: /* r10 contains MSR_KERNEL here */ · 1212 unmodified lines
1213 stw r3,_TRAP(r1)1213 stw r3,_TRAP(r1)
12142: addi r3,r1,STACK_FRAME_OVERHEAD12142: addi r3,r1,STACK_FRAME_OVERHEAD
1215 mr r4,r91215 mr r4,r9
1216 bl do_signal1216 bl do_notify_resume
1217 REST_NVGPRS(r1)1217 REST_NVGPRS(r1)
1218 b recheck1218 b recheck
1219 1219
arch/powerpc/kernel/entry_64.S+5−1
@@ -751,12 +751,16 @@ user_work: · 750 unmodified lines
751 751
752 andi. r0,r4,_TIF_NEED_RESCHED752 andi. r0,r4,_TIF_NEED_RESCHED
753 beq 1f753 beq 1f
754 li r5,1
755 TRACE_AND_RESTORE_IRQ(r5);
754 bl .schedule756 bl .schedule
755 b .ret_from_except_lite757 b .ret_from_except_lite
756 758
7571: bl .save_nvgprs7591: bl .save_nvgprs
760 li r5,1
761 TRACE_AND_RESTORE_IRQ(r5);
758 addi r3,r1,STACK_FRAME_OVERHEAD762 addi r3,r1,STACK_FRAME_OVERHEAD
759 bl .do_signal763 bl .do_notify_resume
760 b .ret_from_except764 b .ret_from_except
761 765
762unrecov_restore:766unrecov_restore:
arch/powerpc/kernel/exceptions-64s.S+1−1
@@ -774,8 +774,8 @@ alignment_common: · 773 unmodified lines
774program_check_common:774program_check_common:
775 EXCEPTION_PROLOG_COMMON(0x700, PACA_EXGEN)775 EXCEPTION_PROLOG_COMMON(0x700, PACA_EXGEN)
776 bl .save_nvgprs776 bl .save_nvgprs
777 DISABLE_INTS
777 addi r3,r1,STACK_FRAME_OVERHEAD778 addi r3,r1,STACK_FRAME_OVERHEAD
778 ENABLE_INTS
779 bl .program_check_exception779 bl .program_check_exception
780 b .ret_from_except780 b .ret_from_except
781 781
arch/powerpc/kernel/irq.c+5−1
@@ -118,10 +118,14 @@ static inline notrace void set_soft_enabled(unsigned long enable) · 117 unmodified lines
118static inline notrace void decrementer_check_overflow(void)118static inline notrace void decrementer_check_overflow(void)
119{119{
120 u64 now = get_tb_or_rtc();120 u64 now = get_tb_or_rtc();
121 u64 *next_tb = &__get_cpu_var(decrementers_next_tb);121 u64 *next_tb;
122
123 preempt_disable();
124 next_tb = &__get_cpu_var(decrementers_next_tb);
122 125
123 if (now >= *next_tb)126 if (now >= *next_tb)
124 set_dec(1);127 set_dec(1);
128 preempt_enable();
125}129}
126 130
127notrace void arch_local_irq_restore(unsigned long en)131notrace void arch_local_irq_restore(unsigned long en)
arch/powerpc/kernel/legacy_serial.c+2−0
@@ -442,8 +442,10 @@ static void __init fixup_port_irq(int index, · 441 unmodified lines
442 442
443 port->irq = virq;443 port->irq = virq;
444 444
445#ifdef CONFIG_SERIAL_8250_FSL
445 if (of_device_is_compatible(np, "fsl,ns16550"))446 if (of_device_is_compatible(np, "fsl,ns16550"))
446 port->handle_irq = fsl8250_handle_irq;447 port->handle_irq = fsl8250_handle_irq;
448#endif
447}449}
448 450
449static void __init fixup_port_pio(int index,451static void __init fixup_port_pio(int index,
arch/powerpc/kernel/perf_event.c+7−1
@@ -865,6 +865,7 @@ static void power_pmu_start(struct perf_event *event, int ef_flags) · 864 unmodified lines
865{865{
866 unsigned long flags;866 unsigned long flags;
867 s64 left;867 s64 left;
868 unsigned long val;
868 869
869 if (!event->hw.idx || !event->hw.sample_period)870 if (!event->hw.idx || !event->hw.sample_period)
870 return;871 return;
@@ -880,7 +881,12 @@ static void power_pmu_start(struct perf_event *event, int ef_flags) · 9 unmodified lines
880 881
881 event->hw.state = 0;882 event->hw.state = 0;
882 left = local64_read(&event->hw.period_left);883 left = local64_read(&event->hw.period_left);
883 write_pmc(event->hw.idx, left);884
885 val = 0;
886 if (left < 0x80000000L)
887 val = 0x80000000L - left;
888
889 write_pmc(event->hw.idx, val);
884 890
885 perf_event_update_userpage(event);891 perf_event_update_userpage(event);
886 perf_pmu_enable(event->pmu);892 perf_pmu_enable(event->pmu);
arch/powerpc/kernel/process.c+3−3
@@ -566,12 +566,12 @@ static void show_instructions(struct pt_regs *regs) · 565 unmodified lines
566 */566 */
567 if (!__kernel_text_address(pc) ||567 if (!__kernel_text_address(pc) ||
568 __get_user(instr, (unsigned int __user *)pc)) {568 __get_user(instr, (unsigned int __user *)pc)) {
569 printk("XXXXXXXX ");569 printk(KERN_CONT "XXXXXXXX ");
570 } else {570 } else {
571 if (regs->nip == pc)571 if (regs->nip == pc)
572 printk("<%08x> ", instr);572 printk(KERN_CONT "<%08x> ", instr);
573 else573 else
574 printk("%08x ", instr);574 printk(KERN_CONT "%08x ", instr);
575 }575 }
576 576
577 pc += sizeof(int);577 pc += sizeof(int);
arch/powerpc/kernel/ptrace.c+13−17
@@ -1724,22 +1724,20 @@ long do_syscall_trace_enter(struct pt_regs *regs) · 1723 unmodified lines
1724 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))1724 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
1725 trace_sys_enter(regs, regs->gpr[0]);1725 trace_sys_enter(regs, regs->gpr[0]);
1726 1726
1727 if (unlikely(current->audit_context)) {
1728#ifdef CONFIG_PPC641727#ifdef CONFIG_PPC64
1729 if (!is_32bit_task())1728 if (!is_32bit_task())
1730 audit_syscall_entry(AUDIT_ARCH_PPC64,1729 audit_syscall_entry(AUDIT_ARCH_PPC64,
1731 regs->gpr[0],1730 regs->gpr[0],
1732 regs->gpr[3], regs->gpr[4],1731 regs->gpr[3], regs->gpr[4],
1733 regs->gpr[5], regs->gpr[6]);1732 regs->gpr[5], regs->gpr[6]);
1734 else1733 else
1735#endif1734#endif
1736 audit_syscall_entry(AUDIT_ARCH_PPC,1735 audit_syscall_entry(AUDIT_ARCH_PPC,
1737 regs->gpr[0],1736 regs->gpr[0],
1738 regs->gpr[3] & 0xffffffff,1737 regs->gpr[3] & 0xffffffff,
1739 regs->gpr[4] & 0xffffffff,1738 regs->gpr[4] & 0xffffffff,
1740 regs->gpr[5] & 0xffffffff,1739 regs->gpr[5] & 0xffffffff,
1741 regs->gpr[6] & 0xffffffff);1740 regs->gpr[6] & 0xffffffff);
1742 }
1743 1741
1744 return ret ?: regs->gpr[0];1742 return ret ?: regs->gpr[0];
1745}1743}
@@ -1748,9 +1746,7 @@ void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
1748{1746{
1749 int step;1747 int step;
1750 1748
1751 if (unlikely(current->audit_context))1749 audit_syscall_exit(regs);
1752 audit_syscall_exit((regs->ccr&0x10000000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,
1753 regs->result);
1754 1750
1755 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))1751 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
1756 trace_sys_exit(regs, regs->result);1752 trace_sys_exit(regs, regs->result);
arch/powerpc/kernel/rtas.c+3−2
@@ -716,7 +716,6 @@ static int __rtas_suspend_last_cpu(struct rtas_suspend_me_data *data, int wake_w · 715 unmodified lines
716 int cpu;716 int cpu;
717 717
718 slb_set_size(SLB_MIN_SIZE);718 slb_set_size(SLB_MIN_SIZE);
719 stop_topology_update();
720 printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", smp_processor_id());719 printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", smp_processor_id());
721 720
722 while (rc == H_MULTI_THREADS_ACTIVE && !atomic_read(&data->done) &&721 while (rc == H_MULTI_THREADS_ACTIVE && !atomic_read(&data->done) &&
@@ -732,7 +731,6 @@ static int __rtas_suspend_last_cpu(struct rtas_suspend_me_data *data, int wake_w · 9 unmodified lines
732 rc = atomic_read(&data->error);731 rc = atomic_read(&data->error);
733 732
734 atomic_set(&data->error, rc);733 atomic_set(&data->error, rc);
735 start_topology_update();
736 pSeries_coalesce_init();734 pSeries_coalesce_init();
737 735
738 if (wake_when_done) {736 if (wake_when_done) {
@@ -846,6 +844,7 @@ int rtas_ibm_suspend_me(struct rtas_args *args) · 107 unmodified lines
846 atomic_set(&data.error, 0);844 atomic_set(&data.error, 0);
847 data.token = rtas_token("ibm,suspend-me");845 data.token = rtas_token("ibm,suspend-me");
848 data.complete = &done;846 data.complete = &done;
847 stop_topology_update();
849 848
850 /* Call function on all CPUs. One of us will make the849 /* Call function on all CPUs. One of us will make the
851 * rtas call850 * rtas call
@@ -858,6 +857,8 @@ int rtas_ibm_suspend_me(struct rtas_args *args) · 6 unmodified lines
858 if (atomic_read(&data.error) != 0)857 if (atomic_read(&data.error) != 0)
859 printk(KERN_ERR "Error doing global join\n");858 printk(KERN_ERR "Error doing global join\n");
860 859
860 start_topology_update();
861
861 return atomic_read(&data.error);862 return atomic_read(&data.error);
862}863}
863#else /* CONFIG_PPC_PSERIES */864#else /* CONFIG_PPC_PSERIES */
arch/powerpc/kernel/signal.c+8−4
@@ -11,6 +11,7 @@ · 10 unmodified lines
11 11
12#include <linux/tracehook.h>12#include <linux/tracehook.h>
13#include <linux/signal.h>13#include <linux/signal.h>
14#include <linux/key.h>
14#include <asm/hw_breakpoint.h>15#include <asm/hw_breakpoint.h>
15#include <asm/uaccess.h>16#include <asm/uaccess.h>
16#include <asm/unistd.h>17#include <asm/unistd.h>
@@ -113,8 +114,9 @@ static void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka, · 96 unmodified lines
113 }114 }
114}115}
115 116
116static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs)117static int do_signal(struct pt_regs *regs)
117{118{
119 sigset_t *oldset;
118 siginfo_t info;120 siginfo_t info;
119 int signr;121 int signr;
120 struct k_sigaction ka;122 struct k_sigaction ka;
@@ -123,7 +125,7 @@ static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs) · 2 unmodified lines
123 125
124 if (current_thread_info()->local_flags & _TLF_RESTORE_SIGMASK)126 if (current_thread_info()->local_flags & _TLF_RESTORE_SIGMASK)
125 oldset = &current->saved_sigmask;127 oldset = &current->saved_sigmask;
126 else if (!oldset)128 else
127 oldset = &current->blocked;129 oldset = &current->blocked;
128 130
129 signr = get_signal_to_deliver(&info, &ka, regs, NULL);131 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
@@ -191,14 +193,16 @@ static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs) · 61 unmodified lines
191 return ret;193 return ret;
192}194}
193 195
194void do_signal(struct pt_regs *regs, unsigned long thread_info_flags)196void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags)
195{197{
196 if (thread_info_flags & _TIF_SIGPENDING)198 if (thread_info_flags & _TIF_SIGPENDING)
197 do_signal_pending(NULL, regs);199 do_signal(regs);
198 200
199 if (thread_info_flags & _TIF_NOTIFY_RESUME) {201 if (thread_info_flags & _TIF_NOTIFY_RESUME) {
200 clear_thread_flag(TIF_NOTIFY_RESUME);202 clear_thread_flag(TIF_NOTIFY_RESUME);
201 tracehook_notify_resume(regs);203 tracehook_notify_resume(regs);
204 if (current->replacement_session_keyring)
205 key_replace_session_keyring();
202 }206 }
203}207}
204 208
arch/powerpc/kernel/signal.h+1−1
@@ -12,7 +12,7 @@ · 11 unmodified lines
12 12
13#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))13#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
14 14
15extern void do_signal(struct pt_regs *regs, unsigned long thread_info_flags);15extern void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags);
16 16
17extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,17extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
18 size_t frame_size, int is_32);18 size_t frame_size, int is_32);
arch/powerpc/platforms/85xx/p1022_ds.c+1−0
@@ -25,6 +25,7 @@ · 24 unmodified lines
25 25
26#include <sysdev/fsl_soc.h>26#include <sysdev/fsl_soc.h>
27#include <sysdev/fsl_pci.h>27#include <sysdev/fsl_pci.h>
28#include <asm/udbg.h>
28#include <asm/fsl_guts.h>29#include <asm/fsl_guts.h>
29#include "smp.h"30#include "smp.h"
30 31
arch/powerpc/platforms/powernv/pci-ioda.c+27−16
@@ -204,11 +204,10 @@ static void __devinit pnv_ioda_offset_bus(struct pci_bus *bus, · 203 unmodified lines
204 pr_devel(" -> OBR %s [%x] +%016llx\n",204 pr_devel(" -> OBR %s [%x] +%016llx\n",
205 bus->self ? pci_name(bus->self) : "root", flags, offset);205 bus->self ? pci_name(bus->self) : "root", flags, offset);
206 206
207 for (i = 0; i < 2; i++) {207 pci_bus_for_each_resource(bus, r, i) {
208 r = bus->resource[i];
209 if (r && (r->flags & flags)) {208 if (r && (r->flags & flags)) {
210 bus->resource[i]->start += offset;209 r->start += offset;
211 bus->resource[i]->end += offset;210 r->end += offset;
212 }211 }
213 }212 }
214 list_for_each_entry(dev, &bus->devices, bus_list)213 list_for_each_entry(dev, &bus->devices, bus_list)
@@ -288,12 +287,17 @@ static void __devinit pnv_ioda_calc_bus(struct pci_bus *bus, unsigned int flags, · 73 unmodified lines
288 * assignment algorithm is going to be uber-trivial for now, we287 * assignment algorithm is going to be uber-trivial for now, we
289 * can try to be smarter later at filling out holes.288 * can try to be smarter later at filling out holes.
290 */289 */
291 start = bus->self ? 0 : bus->resource[bres]->start;290 if (bus->self) {
292 291 /* No offset for downstream bridges */
293 /* Don't hand out IO 0 */292 start = 0;
294 if ((flags & IORESOURCE_IO) && !bus->self)293 } else {
295 start += 0x1000;294 /* Offset from the root */
296 295 if (flags & IORESOURCE_IO)
296 /* Don't hand out IO 0 */
297 start = hose->io_resource.start + 0x1000;
298 else
299 start = hose->mem_resources[0].start;
300 }
297 while(!list_empty(&head)) {301 while(!list_empty(&head)) {
298 w = list_first_entry(&head, struct resource_wrap, link);302 w = list_first_entry(&head, struct resource_wrap, link);
299 list_del(&w->link);303 list_del(&w->link);
@@ -321,13 +325,20 @@ static void __devinit pnv_ioda_calc_bus(struct pci_bus *bus, unsigned int flags, · 21 unmodified lines
321 empty:325 empty:
322 /* Only setup P2P's, not the PHB itself */326 /* Only setup P2P's, not the PHB itself */
323 if (bus->self) {327 if (bus->self) {
324 WARN_ON(bus->resource[bres] == NULL);328 struct resource *res = bus->resource[bres];
325 bus->resource[bres]->start = 0;329
326 bus->resource[bres]->flags = (*size) ? flags : 0;330 if (WARN_ON(res == NULL))
327 bus->resource[bres]->end = (*size) ? (*size - 1) : 0;331 return;
328 332
329 /* Clear prefetch bus resources for now */333 /*
330 bus->resource[2]->flags = 0;334 * FIXME: We should probably export and call
335 * pci_bridge_check_ranges() to properly re-initialize
336 * the PCI portion of the flags here, and to detect
337 * what the bridge actually supports.
338 */
339 res->start = 0;
340 res->flags = (*size) ? flags : 0;
341 res->end = (*size) ? (*size - 1) : 0;
331 }342 }
332 343
333 pr_devel("<- CBR %s [%x] *size=%016llx *align=%016llx\n",344 pr_devel("<- CBR %s [%x] *size=%016llx *align=%016llx\n",
arch/powerpc/platforms/powernv/pci.c+14−8
@@ -52,32 +52,38 @@ static int pnv_msi_check_device(struct pci_dev* pdev, int nvec, int type) · 51 unmodified lines
52 52
53static unsigned int pnv_get_one_msi(struct pnv_phb *phb)53static unsigned int pnv_get_one_msi(struct pnv_phb *phb)
54{54{
55 unsigned int id;55 unsigned long flags;
56 unsigned int id, rc;
57
58 spin_lock_irqsave(&phb->lock, flags);
56 59
57 spin_lock(&phb->lock);
58 id = find_next_zero_bit(phb->msi_map, phb->msi_count, phb->msi_next);60 id = find_next_zero_bit(phb->msi_map, phb->msi_count, phb->msi_next);
59 if (id >= phb->msi_count && phb->msi_next)61 if (id >= phb->msi_count && phb->msi_next)
60 id = find_next_zero_bit(phb->msi_map, phb->msi_count, 0);62 id = find_next_zero_bit(phb->msi_map, phb->msi_count, 0);
61 if (id >= phb->msi_count) {63 if (id >= phb->msi_count) {
62 spin_unlock(&phb->lock);64 rc = 0;
63 return 0;65 goto out;
64 }66 }
65 __set_bit(id, phb->msi_map);67 __set_bit(id, phb->msi_map);
66 spin_unlock(&phb->lock);68 rc = id + phb->msi_base;
67 return id + phb->msi_base;69out:
70 spin_unlock_irqrestore(&phb->lock, flags);
71 return rc;
68}72}
69 73
70static void pnv_put_msi(struct pnv_phb *phb, unsigned int hwirq)74static void pnv_put_msi(struct pnv_phb *phb, unsigned int hwirq)
71{75{
76 unsigned long flags;
72 unsigned int id;77 unsigned int id;
73 78
74 if (WARN_ON(hwirq < phb->msi_base ||79 if (WARN_ON(hwirq < phb->msi_base ||
75 hwirq >= (phb->msi_base + phb->msi_count)))80 hwirq >= (phb->msi_base + phb->msi_count)))
76 return;81 return;
77 id = hwirq - phb->msi_base;82 id = hwirq - phb->msi_base;
78 spin_lock(&phb->lock);83
84 spin_lock_irqsave(&phb->lock, flags);
79 __clear_bit(id, phb->msi_map);85 __clear_bit(id, phb->msi_map);
80 spin_unlock(&phb->lock);86 spin_unlock_irqrestore(&phb->lock, flags);
81}87}
82 88
83static int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)89static int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
arch/powerpc/platforms/pseries/Kconfig+1−1
@@ -122,7 +122,7 @@ config DTL · 121 unmodified lines
122 Say N if you are unsure.122 Say N if you are unsure.
123 123
124config PSERIES_IDLE124config PSERIES_IDLE
125 tristate "Cpuidle driver for pSeries platforms"125 bool "Cpuidle driver for pSeries platforms"
126 depends on CPU_IDLE126 depends on CPU_IDLE
127 depends on PPC_PSERIES127 depends on PPC_PSERIES
128 default y128 default y
arch/powerpc/platforms/pseries/eeh.c+2−2
@@ -551,9 +551,9 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev) · 550 unmodified lines
551 printk (KERN_ERR "EEH: %d reads ignored for recovering device at "551 printk (KERN_ERR "EEH: %d reads ignored for recovering device at "
552 "location=%s driver=%s pci addr=%s\n",552 "location=%s driver=%s pci addr=%s\n",
553 pdn->eeh_check_count, location,553 pdn->eeh_check_count, location,
554 dev->driver->name, eeh_pci_name(dev));554 eeh_driver_name(dev), eeh_pci_name(dev));
555 printk (KERN_ERR "EEH: Might be infinite loop in %s driver\n",555 printk (KERN_ERR "EEH: Might be infinite loop in %s driver\n",
556 dev->driver->name);556 eeh_driver_name(dev));
557 dump_stack();557 dump_stack();
558 }558 }
559 goto dn_unlock;559 goto dn_unlock;
arch/powerpc/platforms/pseries/suspend.c+5−1
@@ -24,6 +24,7 @@ · 23 unmodified lines
24#include <asm/machdep.h>24#include <asm/machdep.h>
25#include <asm/mmu.h>25#include <asm/mmu.h>
26#include <asm/rtas.h>26#include <asm/rtas.h>
27#include <asm/topology.h>
27 28
28static u64 stream_id;29static u64 stream_id;
29static struct device suspend_dev;30static struct device suspend_dev;
@@ -138,8 +139,11 @@ static ssize_t store_hibernate(struct device *dev, · 108 unmodified lines
138 ssleep(1);139 ssleep(1);
139 } while (rc == -EAGAIN);140 } while (rc == -EAGAIN);
140 141
141 if (!rc)142 if (!rc) {
143 stop_topology_update();
142 rc = pm_suspend(PM_SUSPEND_MEM);144 rc = pm_suspend(PM_SUSPEND_MEM);
145 start_topology_update();
146 }
143 147
144 stream_id = 0;148 stream_id = 0;
145 149
arch/powerpc/platforms/wsp/ics.c+1−1
@@ -346,7 +346,7 @@ static int wsp_chip_set_affinity(struct irq_data *d, · 345 unmodified lines
346 * For the moment only implement delivery to all cpus or one cpu.346 * For the moment only implement delivery to all cpus or one cpu.
347 * Get current irq_server for the given irq347 * Get current irq_server for the given irq
348 */348 */
349 ret = cache_hwirq_map(ics, d->irq, cpumask);349 ret = cache_hwirq_map(ics, hw_irq, cpumask);
350 if (ret == -1) {350 if (ret == -1) {
351 char cpulist[128];351 char cpulist[128];
352 cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask);352 cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask);
arch/powerpc/platforms/wsp/smp.c+1−1
@@ -71,7 +71,7 @@ int __devinit smp_a2_kick_cpu(int nr) · 70 unmodified lines
71 71
72static int __init smp_a2_probe(void)72static int __init smp_a2_probe(void)
73{73{
74 return cpus_weight(cpu_possible_map);74 return num_possible_cpus();
75}75}
76 76
77static struct smp_ops_t a2_smp_ops = {77static struct smp_ops_t a2_smp_ops = {
arch/powerpc/platforms/wsp/wsp_pci.c+4−4
@@ -468,15 +468,15 @@ static void __init wsp_pcie_configure_hw(struct pci_controller *hose) · 467 unmodified lines
468#define DUMP_REG(x) \468#define DUMP_REG(x) \
469 pr_debug("%-30s : 0x%016llx\n", #x, in_be64(hose->cfg_data + x))469 pr_debug("%-30s : 0x%016llx\n", #x, in_be64(hose->cfg_data + x))
470 470
471#ifdef CONFIG_WSP_DD1_WORKAROUND_BAD_PCIE_CLASS471 /*
472 /* WSP DD1 has a bogus class code by default in the PCI-E472 * Some WSP variants has a bogus class code by default in the PCI-E
473 * root complex's built-in P2P bridge */473 * root complex's built-in P2P bridge
474 */
474 val = in_be64(hose->cfg_data + PCIE_REG_SYS_CFG1);475 val = in_be64(hose->cfg_data + PCIE_REG_SYS_CFG1);
475 pr_debug("PCI-E SYS_CFG1 : 0x%llx\n", val);476 pr_debug("PCI-E SYS_CFG1 : 0x%llx\n", val);
476 out_be64(hose->cfg_data + PCIE_REG_SYS_CFG1,477 out_be64(hose->cfg_data + PCIE_REG_SYS_CFG1,
477 (val & ~PCIE_REG_SYS_CFG1_CLASS_CODE) | (PCI_CLASS_BRIDGE_PCI << 8));478 (val & ~PCIE_REG_SYS_CFG1_CLASS_CODE) | (PCI_CLASS_BRIDGE_PCI << 8));
478 pr_debug("PCI-E SYS_CFG1 : 0x%llx\n", in_be64(hose->cfg_data + PCIE_REG_SYS_CFG1));479 pr_debug("PCI-E SYS_CFG1 : 0x%llx\n", in_be64(hose->cfg_data + PCIE_REG_SYS_CFG1));
479#endif /* CONFIG_WSP_DD1_WORKAROUND_BAD_PCIE_CLASS */
480 480
481#ifdef CONFIG_WSP_DD1_WORKAROUND_DD1_TCE_BUGS481#ifdef CONFIG_WSP_DD1_WORKAROUND_DD1_TCE_BUGS
482 /* XXX Disable TCE caching, it doesn't work on DD1 */482 /* XXX Disable TCE caching, it doesn't work on DD1 */
arch/powerpc/sysdev/fsl_pci.c+32−21
@@ -205,12 +205,12 @@ static void __init setup_pci_atmu(struct pci_controller *hose, · 204 unmodified lines
205 205
206 if (paddr_hi == paddr_lo) {206 if (paddr_hi == paddr_lo) {
207 pr_err("%s: No outbound window space\n", name);207 pr_err("%s: No outbound window space\n", name);
208 return ;208 goto out;
209 }209 }
210 210
211 if (paddr_lo == 0) {211 if (paddr_lo == 0) {
212 pr_err("%s: No space for inbound window\n", name);212 pr_err("%s: No space for inbound window\n", name);
213 return ;213 goto out;
214 }214 }
215 215
216 /* setup PCSRBAR/PEXCSRBAR */216 /* setup PCSRBAR/PEXCSRBAR */
@@ -357,6 +357,7 @@ static void __init setup_pci_atmu(struct pci_controller *hose, · 140 unmodified lines
357 (u64)hose->dma_window_size);357 (u64)hose->dma_window_size);
358 }358 }
359 359
360out:
360 iounmap(pci);361 iounmap(pci);
361}362}
362 363
@@ -384,26 +385,36 @@ static void __init setup_pci_cmd(struct pci_controller *hose) · 21 unmodified lines
384void fsl_pcibios_fixup_bus(struct pci_bus *bus)385void fsl_pcibios_fixup_bus(struct pci_bus *bus)
385{386{
386 struct pci_controller *hose = pci_bus_to_host(bus);387 struct pci_controller *hose = pci_bus_to_host(bus);
387 int i;388 int i, is_pcie = 0, no_link;
388 389
389 if ((bus->parent == hose->bus) &&390 /* The root complex bridge comes up with bogus resources,
390 ((fsl_pcie_bus_fixup &&391 * we copy the PHB ones in.
391 early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) ||392 *
392 (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK)))393 * With the current generic PCI code, the PHB bus no longer
393 {394 * has bus->resource[0..4] set, so things are a bit more
394 for (i = 0; i < 4; ++i) {395 * tricky.
396 */
397
398 if (fsl_pcie_bus_fixup)
399 is_pcie = early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP);
400 no_link = !!(hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK);
401
402 if (bus->parent == hose->bus && (is_pcie || no_link)) {
403 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; ++i) {
395 struct resource *res = bus->resource[i];404 struct resource *res = bus->resource[i];
396 struct resource *par = bus->parent->resource[i];405 struct resource *par;
397 if (res) {406
398 res->start = 0;407 if (!res)
399 res->end = 0;408 continue;
400 res->flags = 0;409 if (i == 0)
401 }410 par = &hose->io_resource;
402 if (res && par) {411 else if (i < 4)
403 res->start = par->start;412 par = &hose->mem_resources[i-1];
404 res->end = par->end;413 else par = NULL;
405 res->flags = par->flags;414
406 }415 res->start = par ? par->start : 0;
416 res->end = par ? par->end : 0;
417 res->flags = par ? par->flags : 0;
407 }418 }
408 }419 }
409}420}
arch/s390/Makefile+0−1
@@ -88,7 +88,6 @@ KBUILD_CFLAGS += -pipe -fno-strength-reduce -Wno-sign-compare · 87 unmodified lines
88KBUILD_AFLAGS += $(aflags-y)88KBUILD_AFLAGS += $(aflags-y)
89 89
90OBJCOPYFLAGS := -O binary90OBJCOPYFLAGS := -O binary
91LDFLAGS_vmlinux := -e start
92 91
93head-y := arch/s390/kernel/head.o92head-y := arch/s390/kernel/head.o
94head-y += arch/s390/kernel/$(if $(CONFIG_64BIT),head64.o,head31.o)93head-y += arch/s390/kernel/$(if $(CONFIG_64BIT),head64.o,head31.o)
arch/s390/include/asm/kexec.h+18−0
@@ -42,6 +42,24 @@ · 41 unmodified lines
42/* The native architecture */42/* The native architecture */
43#define KEXEC_ARCH KEXEC_ARCH_S39043#define KEXEC_ARCH KEXEC_ARCH_S390
44 44
45/*
46 * Size for s390x ELF notes per CPU
47 *
48 * Seven notes plus zero note at the end: prstatus, fpregset, timer,
49 * tod_cmp, tod_reg, control regs, and prefix
50 */
51#define KEXEC_NOTE_BYTES \
52 (ALIGN(sizeof(struct elf_note), 4) * 8 + \
53 ALIGN(sizeof("CORE"), 4) * 7 + \
54 ALIGN(sizeof(struct elf_prstatus), 4) + \
55 ALIGN(sizeof(elf_fpregset_t), 4) + \
56 ALIGN(sizeof(u64), 4) + \
57 ALIGN(sizeof(u64), 4) + \
58 ALIGN(sizeof(u32), 4) + \
59 ALIGN(sizeof(u64) * 16, 4) + \
60 ALIGN(sizeof(u32), 4) \
61 )
62
45/* Provide a dummy definition to avoid build failures. */63/* Provide a dummy definition to avoid build failures. */
46static inline void crash_setup_regs(struct pt_regs *newregs,64static inline void crash_setup_regs(struct pt_regs *newregs,
47 struct pt_regs *oldregs) { }65 struct pt_regs *oldregs) { }
arch/s390/include/asm/ptrace.h+5−1
@@ -541,9 +541,13 @@ struct user_regs_struct · 540 unmodified lines
541#define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0)541#define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0)
542#define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN)542#define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN)
543#define user_stack_pointer(regs)((regs)->gprs[15])543#define user_stack_pointer(regs)((regs)->gprs[15])
544#define regs_return_value(regs)((regs)->gprs[2])
545#define profile_pc(regs) instruction_pointer(regs)544#define profile_pc(regs) instruction_pointer(regs)
546 545
546static inline long regs_return_value(struct pt_regs *regs)
547{
548 return regs->gprs[2];
549}
550
547int regs_query_register_offset(const char *name);551int regs_query_register_offset(const char *name);
548const char *regs_query_register_name(unsigned int offset);552const char *regs_query_register_name(unsigned int offset);
549unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset);553unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset);
arch/s390/kernel/compat_wrapper.S+1−1
@@ -662,7 +662,7 @@ ENTRY(sys32_getresuid16_wrapper) · 661 unmodified lines
662ENTRY(sys32_poll_wrapper)662ENTRY(sys32_poll_wrapper)
663 llgtr %r2,%r2 # struct pollfd *663 llgtr %r2,%r2 # struct pollfd *
664 llgfr %r3,%r3 # unsigned int664 llgfr %r3,%r3 # unsigned int
665 lgfr %r4,%r4 # long665 lgfr %r4,%r4 # int
666 jg sys_poll # branch to system call666 jg sys_poll # branch to system call
667 667
668ENTRY(sys32_setresgid16_wrapper)668ENTRY(sys32_setresgid16_wrapper)
arch/s390/kernel/process.c+3−2
@@ -76,7 +76,6 @@ static void default_idle(void) · 75 unmodified lines
76 if (test_thread_flag(TIF_MCCK_PENDING)) {76 if (test_thread_flag(TIF_MCCK_PENDING)) {
77 local_mcck_enable();77 local_mcck_enable();
78 local_irq_enable();78 local_irq_enable();
79 s390_handle_mcck();
80 return;79 return;
81 }80 }
82 trace_hardirqs_on();81 trace_hardirqs_on();
@@ -93,10 +92,12 @@ void cpu_idle(void) · 10 unmodified lines
93 for (;;) {92 for (;;) {
94 tick_nohz_idle_enter();93 tick_nohz_idle_enter();
95 rcu_idle_enter();94 rcu_idle_enter();
96 while (!need_resched())95 while (!need_resched() && !test_thread_flag(TIF_MCCK_PENDING))
97 default_idle();96 default_idle();
98 rcu_idle_exit();97 rcu_idle_exit();
99 tick_nohz_idle_exit();98 tick_nohz_idle_exit();
99 if (test_thread_flag(TIF_MCCK_PENDING))
100 s390_handle_mcck();
100 preempt_enable_no_resched();101 preempt_enable_no_resched();
101 schedule();102 schedule();
102 preempt_disable();103 preempt_disable();
arch/s390/kernel/ptrace.c+6−9
@@ -740,20 +740,17 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) · 739 unmodified lines
740 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))740 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
741 trace_sys_enter(regs, regs->gprs[2]);741 trace_sys_enter(regs, regs->gprs[2]);
742 742
743 if (unlikely(current->audit_context))743 audit_syscall_entry(is_compat_task() ?
744 audit_syscall_entry(is_compat_task() ?744 AUDIT_ARCH_S390 : AUDIT_ARCH_S390X,
745 AUDIT_ARCH_S390 : AUDIT_ARCH_S390X,745 regs->gprs[2], regs->orig_gpr2,
746 regs->gprs[2], regs->orig_gpr2,746 regs->gprs[3], regs->gprs[4],
747 regs->gprs[3], regs->gprs[4],747 regs->gprs[5]);
748 regs->gprs[5]);
749 return ret ?: regs->gprs[2];748 return ret ?: regs->gprs[2];
750}749}
751 750
752asmlinkage void do_syscall_trace_exit(struct pt_regs *regs)751asmlinkage void do_syscall_trace_exit(struct pt_regs *regs)
753{752{
754 if (unlikely(current->audit_context))753 audit_syscall_exit(regs);
755 audit_syscall_exit(AUDITSC_RESULT(regs->gprs[2]),
756 regs->gprs[2]);
757 754
758 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))755 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
759 trace_sys_exit(regs, regs->gprs[2]);756 trace_sys_exit(regs, regs->gprs[2]);
arch/s390/kernel/time.c+5−2
@@ -113,11 +113,14 @@ static void fixup_clock_comparator(unsigned long long delta) · 112 unmodified lines
113static int s390_next_ktime(ktime_t expires,113static int s390_next_ktime(ktime_t expires,
114 struct clock_event_device *evt)114 struct clock_event_device *evt)
115{115{
116 struct timespec ts;
116 u64 nsecs;117 u64 nsecs;
117 118
118 nsecs = ktime_to_ns(ktime_sub(expires, ktime_get_monotonic_offset()));119 ts.tv_sec = ts.tv_nsec = 0;
120 monotonic_to_bootbased(&ts);
121 nsecs = ktime_to_ns(ktime_add(timespec_to_ktime(ts), expires));
119 do_div(nsecs, 125);122 do_div(nsecs, 125);
120 S390_lowcore.clock_comparator = TOD_UNIX_EPOCH + (nsecs << 9);123 S390_lowcore.clock_comparator = sched_clock_base_cc + (nsecs << 9);
121 set_clock_comparator(S390_lowcore.clock_comparator);124 set_clock_comparator(S390_lowcore.clock_comparator);
122 return 0;125 return 0;
123}126}
arch/s390/kernel/vmlinux.lds.S+2−2
@@ -9,12 +9,12 @@ · 8 unmodified lines
9#ifndef CONFIG_64BIT9#ifndef CONFIG_64BIT
10OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")10OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")
11OUTPUT_ARCH(s390)11OUTPUT_ARCH(s390)
12ENTRY(_start)12ENTRY(startup)
13jiffies = jiffies_64 + 4;13jiffies = jiffies_64 + 4;
14#else14#else
15OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")15OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
16OUTPUT_ARCH(s390:64-bit)16OUTPUT_ARCH(s390:64-bit)
17ENTRY(_start)17ENTRY(startup)
18jiffies = jiffies_64;18jiffies = jiffies_64;
19#endif19#endif
20 20
arch/s390/mm/pgtable.c+1−1
@@ -574,7 +574,7 @@ static inline void page_table_free_pgste(unsigned long *table) · 573 unmodified lines
574 page = pfn_to_page(__pa(table) >> PAGE_SHIFT);574 page = pfn_to_page(__pa(table) >> PAGE_SHIFT);
575 mp = (struct gmap_pgtable *) page->index;575 mp = (struct gmap_pgtable *) page->index;
576 BUG_ON(!list_empty(&mp->mapper));576 BUG_ON(!list_empty(&mp->mapper));
577 pgtable_page_ctor(page);577 pgtable_page_dtor(page);
578 atomic_set(&page->_mapcount, -1);578 atomic_set(&page->_mapcount, -1);
579 kfree(mp);579 kfree(mp);
580 __free_page(page);580 __free_page(page);
arch/score/kernel/entry.S+1−1
@@ -408,7 +408,7 @@ ENTRY(handle_sys) · 407 unmodified lines
408 sw r9, [r0, PT_EPC]408 sw r9, [r0, PT_EPC]
409 409
410 cmpi.c r27, __NR_syscalls # check syscall number410 cmpi.c r27, __NR_syscalls # check syscall number
411 bgtu illegal_syscall411 bgeu illegal_syscall
412 412
413 slli r8, r27, 2 # get syscall routine413 slli r8, r27, 2 # get syscall routine
414 la r11, sys_call_table414 la r11, sys_call_table
arch/sh/Kconfig+1−0
@@ -859,6 +859,7 @@ config PCI · 858 unmodified lines
859 depends on SYS_SUPPORTS_PCI859 depends on SYS_SUPPORTS_PCI
860 select PCI_DOMAINS860 select PCI_DOMAINS
861 select GENERIC_PCI_IOMAP861 select GENERIC_PCI_IOMAP
862 select NO_GENERIC_PCI_IOPORT_MAP
862 help863 help
863 Find out whether you have a PCI motherboard. PCI is the name of a864 Find out whether you have a PCI motherboard. PCI is the name of a
864 bus system, i.e. the way the CPU talks to the other stuff inside865 bus system, i.e. the way the CPU talks to the other stuff inside
arch/sh/drivers/pci/pci.c+2−2
@@ -356,8 +356,8 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, · 355 unmodified lines
356 356
357#ifndef CONFIG_GENERIC_IOMAP357#ifndef CONFIG_GENERIC_IOMAP
358 358
359static void __iomem *ioport_map_pci(struct pci_dev *dev,359void __iomem *__pci_ioport_map(struct pci_dev *dev,
360 unsigned long port, unsigned int nr)360 unsigned long port, unsigned int nr)
361{361{
362 struct pci_channel *chan = dev->sysdata;362 struct pci_channel *chan = dev->sysdata;
363 363
arch/sh/include/asm/ptrace_32.h+4−1
@@ -76,7 +76,10 @@ struct pt_dspregs { · 75 unmodified lines
76#ifdef __KERNEL__76#ifdef __KERNEL__
77 77
78#define MAX_REG_OFFSET offsetof(struct pt_regs, tra)78#define MAX_REG_OFFSET offsetof(struct pt_regs, tra)
79#define regs_return_value(_regs) ((_regs)->regs[0])79static inline long regs_return_value(struct pt_regs *regs)
80{
81 return regs->regs[0];
82}
80 83
81#endif /* __KERNEL__ */84#endif /* __KERNEL__ */
82 85
arch/sh/include/asm/ptrace_64.h+4−1
@@ -13,7 +13,10 @@ struct pt_regs { · 12 unmodified lines
13#ifdef __KERNEL__13#ifdef __KERNEL__
14 14
15#define MAX_REG_OFFSET offsetof(struct pt_regs, tregs[7])15#define MAX_REG_OFFSET offsetof(struct pt_regs, tregs[7])
16#define regs_return_value(_regs) ((_regs)->regs[3])16static inline long regs_return_value(struct pt_regs *regs)
17{
18 return regs->regs[3];
19}
17 20
18#endif /* __KERNEL__ */21#endif /* __KERNEL__ */
19 22
arch/sh/kernel/ptrace_32.c+4−7
@@ -518,10 +518,9 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) · 517 unmodified lines
518 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))518 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
519 trace_sys_enter(regs, regs->regs[0]);519 trace_sys_enter(regs, regs->regs[0]);
520 520
521 if (unlikely(current->audit_context))521 audit_syscall_entry(audit_arch(), regs->regs[3],
522 audit_syscall_entry(audit_arch(), regs->regs[3],522 regs->regs[4], regs->regs[5],
523 regs->regs[4], regs->regs[5],523 regs->regs[6], regs->regs[7]);
524 regs->regs[6], regs->regs[7]);
525 524
526 return ret ?: regs->regs[0];525 return ret ?: regs->regs[0];
527}526}
@@ -530,9 +529,7 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
530{529{
531 int step;530 int step;
532 531
533 if (unlikely(current->audit_context))532 audit_syscall_exit(regs);
534 audit_syscall_exit(AUDITSC_RESULT(regs->regs[0]),
535 regs->regs[0]);
536 533
537 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))534 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
538 trace_sys_exit(regs, regs->regs[0]);535 trace_sys_exit(regs, regs->regs[0]);
arch/sh/kernel/ptrace_64.c+4−7
@@ -536,10 +536,9 @@ asmlinkage long long do_syscall_trace_enter(struct pt_regs *regs) · 535 unmodified lines
536 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))536 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
537 trace_sys_enter(regs, regs->regs[9]);537 trace_sys_enter(regs, regs->regs[9]);
538 538
539 if (unlikely(current->audit_context))539 audit_syscall_entry(audit_arch(), regs->regs[1],
540 audit_syscall_entry(audit_arch(), regs->regs[1],540 regs->regs[2], regs->regs[3],
541 regs->regs[2], regs->regs[3],541 regs->regs[4], regs->regs[5]);
542 regs->regs[4], regs->regs[5]);
543 542
544 return ret ?: regs->regs[9];543 return ret ?: regs->regs[9];
545}544}
@@ -548,9 +547,7 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
548{547{
549 int step;548 int step;
550 549
551 if (unlikely(current->audit_context))550 audit_syscall_exit(regs);
552 audit_syscall_exit(AUDITSC_RESULT(regs->regs[9]),
553 regs->regs[9]);
554 551
555 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))552 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
556 trace_sys_exit(regs, regs->regs[9]);553 trace_sys_exit(regs, regs->regs[9]);
arch/sparc/Kconfig+1−0
@@ -33,6 +33,7 @@ config SPARC · 32 unmodified lines
33config SPARC3233config SPARC32
34 def_bool !64BIT34 def_bool !64BIT
35 select GENERIC_ATOMIC6435 select GENERIC_ATOMIC64
36 select CLZ_TAB
36 37
37config SPARC6438config SPARC64
38 def_bool 64BIT39 def_bool 64BIT
arch/sparc/include/asm/ptrace.h+9−1
@@ -207,7 +207,15 @@ do { current_thread_info()->syscall_noerror = 1; \ · 206 unmodified lines
207#define instruction_pointer(regs) ((regs)->tpc)207#define instruction_pointer(regs) ((regs)->tpc)
208#define instruction_pointer_set(regs, val) ((regs)->tpc = (val))208#define instruction_pointer_set(regs, val) ((regs)->tpc = (val))
209#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])209#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
210#define regs_return_value(regs) ((regs)->u_regs[UREG_I0])210static inline int is_syscall_success(struct pt_regs *regs)
211{
212 return !(regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY));
213}
214
215static inline long regs_return_value(struct pt_regs *regs)
216{
217 return regs->u_regs[UREG_I0];
218}
211#ifdef CONFIG_SMP219#ifdef CONFIG_SMP
212extern unsigned long profile_pc(struct pt_regs *);220extern unsigned long profile_pc(struct pt_regs *);
213#else221#else
arch/sparc/kernel/ptrace_64.c+9−19
@@ -1071,32 +1071,22 @@ asmlinkage int syscall_trace_enter(struct pt_regs *regs) · 1070 unmodified lines
1071 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))1071 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
1072 trace_sys_enter(regs, regs->u_regs[UREG_G1]);1072 trace_sys_enter(regs, regs->u_regs[UREG_G1]);
1073 1073
1074 if (unlikely(current->audit_context) && !ret)1074 audit_syscall_entry((test_thread_flag(TIF_32BIT) ?
1075 audit_syscall_entry((test_thread_flag(TIF_32BIT) ?1075 AUDIT_ARCH_SPARC :
1076 AUDIT_ARCH_SPARC :1076 AUDIT_ARCH_SPARC64),
1077 AUDIT_ARCH_SPARC64),1077 regs->u_regs[UREG_G1],
1078 regs->u_regs[UREG_G1],1078 regs->u_regs[UREG_I0],
1079 regs->u_regs[UREG_I0],1079 regs->u_regs[UREG_I1],
1080 regs->u_regs[UREG_I1],1080 regs->u_regs[UREG_I2],
1081 regs->u_regs[UREG_I2],1081 regs->u_regs[UREG_I3]);
1082 regs->u_regs[UREG_I3]);
1083 1082
1084 return ret;1083 return ret;
1085}1084}
1086 1085
1087asmlinkage void syscall_trace_leave(struct pt_regs *regs)1086asmlinkage void syscall_trace_leave(struct pt_regs *regs)
1088{1087{
1089#ifdef CONFIG_AUDITSYSCALL1088 audit_syscall_exit(regs);
1090 if (unlikely(current->audit_context)) {
1091 unsigned long tstate = regs->tstate;
1092 int result = AUDITSC_SUCCESS;
1093 1089
1094 if (unlikely(tstate & (TSTATE_XCARRY | TSTATE_ICARRY)))
1095 result = AUDITSC_FAILURE;
1096
1097 audit_syscall_exit(result, regs->u_regs[UREG_I0]);
1098 }
1099#endif
1100 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))1090 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
1101 trace_sys_exit(regs, regs->u_regs[UREG_G1]);1091 trace_sys_exit(regs, regs->u_regs[UREG_G1]);
1102 1092
arch/sparc/kernel/sun4m_irq.c+3−0
@@ -399,6 +399,9 @@ static void __init sun4m_init_timers(irq_handler_t counter_fn) · 398 unmodified lines
399 timers_global = (void __iomem *)399 timers_global = (void __iomem *)
400 (unsigned long) addr[num_cpu_timers];400 (unsigned long) addr[num_cpu_timers];
401 401
402 /* Every per-cpu timer works in timer mode */
403 sbus_writel(0x00000000, &timers_global->timer_config);
404
402 sbus_writel((((1000000/HZ) + 1) << 10), &timers_global->l10_limit);405 sbus_writel((((1000000/HZ) + 1) << 10), &timers_global->l10_limit);
403 406
404 master_l10_counter = &timers_global->l10_count;407 master_l10_counter = &timers_global->l10_count;
arch/sparc/lib/divdi3.S+1−15
@@ -17,23 +17,9 @@ along with GNU CC; see the file COPYING. If not, write to · 16 unmodified lines
17the Free Software Foundation, 59 Temple Place - Suite 330,17the Free Software Foundation, 59 Temple Place - Suite 330,
18Boston, MA 02111-1307, USA. */18Boston, MA 02111-1307, USA. */
19 19
20 .data
21 .align 8
22 .globl __clz_tab
23__clz_tab:
24 .byte 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
25 .byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
26 .byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
27 .byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
28 .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
29 .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
30 .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
31 .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
32 .size __clz_tab,256
33 .global .udiv
34
35 .text20 .text
36 .align 421 .align 4
22 .global .udiv
37 .globl __divdi323 .globl __divdi3
38__divdi3:24__divdi3:
39 save %sp,-104,%sp25 save %sp,-104,%sp
arch/um/kernel/ptrace.c+9−11
@@ -167,17 +167,15 @@ void syscall_trace(struct uml_pt_regs *regs, int entryexit) · 166 unmodified lines
167 int is_singlestep = (current->ptrace & PT_DTRACE) && entryexit;167 int is_singlestep = (current->ptrace & PT_DTRACE) && entryexit;
168 int tracesysgood;168 int tracesysgood;
169 169
170 if (unlikely(current->audit_context)) {170 if (!entryexit)
171 if (!entryexit)171 audit_syscall_entry(HOST_AUDIT_ARCH,
172 audit_syscall_entry(HOST_AUDIT_ARCH,172 UPT_SYSCALL_NR(regs),
173 UPT_SYSCALL_NR(regs),173 UPT_SYSCALL_ARG1(regs),
174 UPT_SYSCALL_ARG1(regs),174 UPT_SYSCALL_ARG2(regs),
175 UPT_SYSCALL_ARG2(regs),175 UPT_SYSCALL_ARG3(regs),
176 UPT_SYSCALL_ARG3(regs),176 UPT_SYSCALL_ARG4(regs));
177 UPT_SYSCALL_ARG4(regs));177 else
178 else audit_syscall_exit(AUDITSC_RESULT(UPT_SYSCALL_RET(regs)),178 audit_syscall_exit(regs);
179 UPT_SYSCALL_RET(regs));
180 }
181 179
182 /* Fake a debug trap */180 /* Fake a debug trap */
183 if (is_singlestep)181 if (is_singlestep)
arch/x86/.gitignore+1−0
@@ -1,3 +1,4 @@
1boot/compressed/vmlinux1boot/compressed/vmlinux
2tools/test_get_len2tools/test_get_len
3tools/insn_sanity
3 4
arch/x86/Kconfig+10−11
@@ -125,16 +125,6 @@ config HAVE_LATENCYTOP_SUPPORT · 124 unmodified lines
125config MMU125config MMU
126 def_bool y126 def_bool y
127 127
128config ZONE_DMA
129 bool "DMA memory allocation support" if EXPERT
130 default y
131 help
132 DMA memory allocation support allows devices with less than 32-bit
133 addressing to allocate within the first 16MB of address space.
134 Disable if no such devices will be used.
135
136 If unsure, say Y.
137
138config SBUS128config SBUS
139 bool129 bool
140 130
@@ -255,6 +245,16 @@ source "kernel/Kconfig.freezer" · 114 unmodified lines
255 245
256menu "Processor type and features"246menu "Processor type and features"
257 247
248config ZONE_DMA
249 bool "DMA memory allocation support" if EXPERT
250 default y
251 help
252 DMA memory allocation support allows devices with less than 32-bit
253 addressing to allocate within the first 16MB of address space.
254 Disable if no such devices will be used.
255
256 If unsure, say Y.
257
258source "kernel/time/Kconfig"258source "kernel/time/Kconfig"
259 259
260config SMP260config SMP
@@ -360,7 +360,6 @@ config X86_NUMACHIP · 99 unmodified lines
360 depends on NUMA360 depends on NUMA
361 depends on SMP361 depends on SMP
362 depends on X86_X2APIC362 depends on X86_X2APIC
363 depends on !EDAC_AMD64
364 ---help---363 ---help---
365 Adds support for Numascale NumaChip large-SMP systems. Needed to364 Adds support for Numascale NumaChip large-SMP systems. Needed to
366 enable more than ~168 cores.365 enable more than ~168 cores.
arch/x86/boot/compressed/misc.c+2−0
@@ -321,6 +321,8 @@ static void parse_elf(void *output) · 320 unmodified lines
321 default: /* Ignore other PT_* */ break;321 default: /* Ignore other PT_* */ break;
322 }322 }
323 }323 }
324
325 free(phdrs);
324}326}
325 327
326asmlinkage void decompress_kernel(void *rmode, memptr heap,328asmlinkage void decompress_kernel(void *rmode, memptr heap,
arch/x86/ia32/ia32entry.S+8−6
@@ -14,6 +14,7 @@ · 13 unmodified lines
14#include <asm/segment.h>14#include <asm/segment.h>
15#include <asm/irqflags.h>15#include <asm/irqflags.h>
16#include <linux/linkage.h>16#include <linux/linkage.h>
17#include <linux/err.h>
17 18
18/* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */19/* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
19#include <linux/elf-em.h>20#include <linux/elf-em.h>
@@ -189,7 +190,7 @@ sysexit_from_sys_call: · 169 unmodified lines
189 movl %ebx,%edx /* 3rd arg: 1st syscall arg */190 movl %ebx,%edx /* 3rd arg: 1st syscall arg */
190 movl %eax,%esi /* 2nd arg: syscall number */191 movl %eax,%esi /* 2nd arg: syscall number */
191 movl $AUDIT_ARCH_I386,%edi /* 1st arg: audit arch */192 movl $AUDIT_ARCH_I386,%edi /* 1st arg: audit arch */
192 call audit_syscall_entry193 call __audit_syscall_entry
193 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall number */194 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall number */
194 cmpq $(IA32_NR_syscalls-1),%rax195 cmpq $(IA32_NR_syscalls-1),%rax
195 ja ia32_badsys196 ja ia32_badsys
@@ -206,12 +207,13 @@ sysexit_from_sys_call: · 10 unmodified lines
206 TRACE_IRQS_ON207 TRACE_IRQS_ON
207 sti208 sti
208 movl %eax,%esi /* second arg, syscall return value */209 movl %eax,%esi /* second arg, syscall return value */
209 cmpl $0,%eax /* is it < 0? */210 cmpl $-MAX_ERRNO,%eax /* is it an error ? */
210 setl %al /* 1 if so, 0 if not */211 jbe 1f
212 movslq %eax, %rsi /* if error sign extend to 64 bits */
2131: setbe %al /* 1 if error, 0 if not */
211 movzbl %al,%edi /* zero-extend that into %edi */214 movzbl %al,%edi /* zero-extend that into %edi */
212 inc %edi /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */215 call __audit_syscall_exit
213 call audit_syscall_exit216 movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */
214 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */
215 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi217 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
216 cli218 cli
217 TRACE_IRQS_OFF219 TRACE_IRQS_OFF
arch/x86/include/asm/cmpxchg.h+3−3
@@ -145,13 +145,13 @@ extern void __add_wrong_size(void) · 144 unmodified lines
145 145
146#ifdef __HAVE_ARCH_CMPXCHG146#ifdef __HAVE_ARCH_CMPXCHG
147#define cmpxchg(ptr, old, new) \147#define cmpxchg(ptr, old, new) \
148 __cmpxchg((ptr), (old), (new), sizeof(*ptr))148 __cmpxchg(ptr, old, new, sizeof(*(ptr)))
149 149
150#define sync_cmpxchg(ptr, old, new) \150#define sync_cmpxchg(ptr, old, new) \
151 __sync_cmpxchg((ptr), (old), (new), sizeof(*ptr))151 __sync_cmpxchg(ptr, old, new, sizeof(*(ptr)))
152 152
153#define cmpxchg_local(ptr, old, new) \153#define cmpxchg_local(ptr, old, new) \
154 __cmpxchg_local((ptr), (old), (new), sizeof(*ptr))154 __cmpxchg_local(ptr, old, new, sizeof(*(ptr)))
155#endif155#endif
156 156
157/*157/*
arch/x86/include/asm/cpufeature.h+1−0
@@ -159,6 +159,7 @@ · 158 unmodified lines
159#define X86_FEATURE_WDT (6*32+13) /* Watchdog timer */159#define X86_FEATURE_WDT (6*32+13) /* Watchdog timer */
160#define X86_FEATURE_LWP (6*32+15) /* Light Weight Profiling */160#define X86_FEATURE_LWP (6*32+15) /* Light Weight Profiling */
161#define X86_FEATURE_FMA4 (6*32+16) /* 4 operands MAC instructions */161#define X86_FEATURE_FMA4 (6*32+16) /* 4 operands MAC instructions */
162#define X86_FEATURE_TCE (6*32+17) /* translation cache extension */
162#define X86_FEATURE_NODEID_MSR (6*32+19) /* NodeId MSR */163#define X86_FEATURE_NODEID_MSR (6*32+19) /* NodeId MSR */
163#define X86_FEATURE_TBM (6*32+21) /* trailing bit manipulations */164#define X86_FEATURE_TBM (6*32+21) /* trailing bit manipulations */
164#define X86_FEATURE_TOPOEXT (6*32+22) /* topology extensions CPUID leafs */165#define X86_FEATURE_TOPOEXT (6*32+22) /* topology extensions CPUID leafs */
arch/x86/include/asm/i387.h+252−55
@@ -29,10 +29,11 @@ extern unsigned int sig_xstate_size; · 28 unmodified lines
29extern void fpu_init(void);29extern void fpu_init(void);
30extern void mxcsr_feature_mask_init(void);30extern void mxcsr_feature_mask_init(void);
31extern int init_fpu(struct task_struct *child);31extern int init_fpu(struct task_struct *child);
32extern asmlinkage void math_state_restore(void);32extern void math_state_restore(void);
33extern void __math_state_restore(void);
34extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);33extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
35 34
35DECLARE_PER_CPU(struct task_struct *, fpu_owner_task);
36
36extern user_regset_active_fn fpregs_active, xfpregs_active;37extern user_regset_active_fn fpregs_active, xfpregs_active;
37extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get,38extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get,
38 xstateregs_get;39 xstateregs_get;
@@ -212,19 +213,11 @@ static inline void fpu_fxsave(struct fpu *fpu) · 173 unmodified lines
212 213
213#endif /* CONFIG_X86_64 */214#endif /* CONFIG_X86_64 */
214 215
215/* We need a safe address that is cheap to find and that is already
216 in L1 during context switch. The best choices are unfortunately
217 different for UP and SMP */
218#ifdef CONFIG_SMP
219#define safe_address (__per_cpu_offset[0])
220#else
221#define safe_address (__get_cpu_var(kernel_cpustat).cpustat[CPUTIME_USER])
222#endif
223
224/*216/*
225 * These must be called with preempt disabled217 * These must be called with preempt disabled. Returns
218 * 'true' if the FPU state is still intact.
226 */219 */
227static inline void fpu_save_init(struct fpu *fpu)220static inline int fpu_save_init(struct fpu *fpu)
228{221{
229 if (use_xsave()) {222 if (use_xsave()) {
230 fpu_xsave(fpu);223 fpu_xsave(fpu);
@@ -233,33 +226,33 @@ static inline void fpu_save_init(struct fpu *fpu) · 2 unmodified lines
233 * xsave header may indicate the init state of the FP.226 * xsave header may indicate the init state of the FP.
234 */227 */
235 if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))228 if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
236 return;229 return 1;
237 } else if (use_fxsr()) {230 } else if (use_fxsr()) {
238 fpu_fxsave(fpu);231 fpu_fxsave(fpu);
239 } else {232 } else {
240 asm volatile("fnsave %[fx]; fwait"233 asm volatile("fnsave %[fx]; fwait"
241 : [fx] "=m" (fpu->state->fsave));234 : [fx] "=m" (fpu->state->fsave));
242 return;235 return 0;
243 }236 }
244 237
245 if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES))238 /*
239 * If exceptions are pending, we need to clear them so
240 * that we don't randomly get exceptions later.
241 *
242 * FIXME! Is this perhaps only true for the old-style
243 * irq13 case? Maybe we could leave the x87 state
244 * intact otherwise?
245 */
246 if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES)) {
246 asm volatile("fnclex");247 asm volatile("fnclex");
247 248 return 0;
248 /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception249 }
249 is pending. Clear the x87 state here by setting it to fixed250 return 1;
250 values. safe_address is a random variable that should be in L1 */
251 alternative_input(
252 ASM_NOP8 ASM_NOP2,
253 "emms\n\t" /* clear stack tags */
254 "fildl %P[addr]", /* set F?P to defined value */
255 X86_FEATURE_FXSAVE_LEAK,
256 [addr] "m" (safe_address));
257}251}
258 252
259static inline void __save_init_fpu(struct task_struct *tsk)253static inline int __save_init_fpu(struct task_struct *tsk)
260{254{
261 fpu_save_init(&tsk->thread.fpu);255 return fpu_save_init(&tsk->thread.fpu);
262 task_thread_info(tsk)->status &= ~TS_USEDFPU;
263}256}
264 257
265static inline int fpu_fxrstor_checking(struct fpu *fpu)258static inline int fpu_fxrstor_checking(struct fpu *fpu)
@@ -277,44 +270,212 @@ static inline int fpu_restore_checking(struct fpu *fpu) · 11 unmodified lines
277 270
278static inline int restore_fpu_checking(struct task_struct *tsk)271static inline int restore_fpu_checking(struct task_struct *tsk)
279{272{
273 /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
274 is pending. Clear the x87 state here by setting it to fixed
275 values. "m" is a random variable that should be in L1 */
276 alternative_input(
277 ASM_NOP8 ASM_NOP2,
278 "emms\n\t" /* clear stack tags */
279 "fildl %P[addr]", /* set F?P to defined value */
280 X86_FEATURE_FXSAVE_LEAK,
281 [addr] "m" (tsk->thread.fpu.has_fpu));
282
280 return fpu_restore_checking(&tsk->thread.fpu);283 return fpu_restore_checking(&tsk->thread.fpu);
281}284}
282 285
283/*286/*
284 * Signal frame handlers...287 * Software FPU state helpers. Careful: these need to
288 * be preemption protection *and* they need to be
289 * properly paired with the CR0.TS changes!
285 */290 */
286extern int save_i387_xstate(void __user *buf);291static inline int __thread_has_fpu(struct task_struct *tsk)
287extern int restore_i387_xstate(void __user *buf);292{
293 return tsk->thread.fpu.has_fpu;
294}
288 295
289static inline void __unlazy_fpu(struct task_struct *tsk)296/* Must be paired with an 'stts' after! */
297static inline void __thread_clear_has_fpu(struct task_struct *tsk)
290{298{
291 if (task_thread_info(tsk)->status & TS_USEDFPU) {299 tsk->thread.fpu.has_fpu = 0;
292 __save_init_fpu(tsk);300 percpu_write(fpu_owner_task, NULL);
293 stts();301}
294 } else302
295 tsk->fpu_counter = 0;303/* Must be paired with a 'clts' before! */
304static inline void __thread_set_has_fpu(struct task_struct *tsk)
305{
306 tsk->thread.fpu.has_fpu = 1;
307 percpu_write(fpu_owner_task, tsk);
308}
309
310/*
311 * Encapsulate the CR0.TS handling together with the
312 * software flag.
313 *
314 * These generally need preemption protection to work,
315 * do try to avoid using these on their own.
316 */
317static inline void __thread_fpu_end(struct task_struct *tsk)
318{
319 __thread_clear_has_fpu(tsk);
320 stts();
321}
322
323static inline void __thread_fpu_begin(struct task_struct *tsk)
324{
325 clts();
326 __thread_set_has_fpu(tsk);
327}
328
329/*
330 * FPU state switching for scheduling.
331 *
332 * This is a two-stage process:
333 *
334 * - switch_fpu_prepare() saves the old state and
335 * sets the new state of the CR0.TS bit. This is
336 * done within the context of the old process.
337 *
338 * - switch_fpu_finish() restores the new state as
339 * necessary.
340 */
341typedef struct { int preload; } fpu_switch_t;
342
343/*
344 * FIXME! We could do a totally lazy restore, but we need to
345 * add a per-cpu "this was the task that last touched the FPU
346 * on this CPU" variable, and the task needs to have a "I last
347 * touched the FPU on this CPU" and check them.
348 *
349 * We don't do that yet, so "fpu_lazy_restore()" always returns
350 * false, but some day..
351 */
352static inline int fpu_lazy_restore(struct task_struct *new, unsigned int cpu)
353{
354 return new == percpu_read_stable(fpu_owner_task) &&
355 cpu == new->thread.fpu.last_cpu;
356}
357
358static inline fpu_switch_t switch_fpu_prepare(struct task_struct *old, struct task_struct *new, int cpu)
359{
360 fpu_switch_t fpu;
361
362 fpu.preload = tsk_used_math(new) && new->fpu_counter > 5;
363 if (__thread_has_fpu(old)) {
364 if (!__save_init_fpu(old))
365 cpu = ~0;
366 old->thread.fpu.last_cpu = cpu;
367 old->thread.fpu.has_fpu = 0; /* But leave fpu_owner_task! */
368
369 /* Don't change CR0.TS if we just switch! */
370 if (fpu.preload) {
371 new->fpu_counter++;
372 __thread_set_has_fpu(new);
373 prefetch(new->thread.fpu.state);
374 } else
375 stts();
376 } else {
377 old->fpu_counter = 0;
378 old->thread.fpu.last_cpu = ~0;
379 if (fpu.preload) {
380 new->fpu_counter++;
381 if (fpu_lazy_restore(new, cpu))
382 fpu.preload = 0;
383 else
384 prefetch(new->thread.fpu.state);
385 __thread_fpu_begin(new);
386 }
387 }
388 return fpu;
389}
390
391/*
392 * By the time this gets called, we've already cleared CR0.TS and
393 * given the process the FPU if we are going to preload the FPU
394 * state - all we need to do is to conditionally restore the register
395 * state itself.
396 */
397static inline void switch_fpu_finish(struct task_struct *new, fpu_switch_t fpu)
398{
399 if (fpu.preload) {
400 if (unlikely(restore_fpu_checking(new)))
401 __thread_fpu_end(new);
402 }
296}403}
297 404
405/*
406 * Signal frame handlers...
407 */
408extern int save_i387_xstate(void __user *buf);
409extern int restore_i387_xstate(void __user *buf);
410
298static inline void __clear_fpu(struct task_struct *tsk)411static inline void __clear_fpu(struct task_struct *tsk)
299{412{
300 if (task_thread_info(tsk)->status & TS_USEDFPU) {413 if (__thread_has_fpu(tsk)) {
301 /* Ignore delayed exceptions from user space */414 /* Ignore delayed exceptions from user space */
302 asm volatile("1: fwait\n"415 asm volatile("1: fwait\n"
303 "2:\n"416 "2:\n"
304 _ASM_EXTABLE(1b, 2b));417 _ASM_EXTABLE(1b, 2b));
305 task_thread_info(tsk)->status &= ~TS_USEDFPU;418 __thread_fpu_end(tsk);
306 stts();
307 }419 }
308}420}
309 421
422/*
423 * Were we in an interrupt that interrupted kernel mode?
424 *
425 * We can do a kernel_fpu_begin/end() pair *ONLY* if that
426 * pair does nothing at all: the thread must not have fpu (so
427 * that we don't try to save the FPU state), and TS must
428 * be set (so that the clts/stts pair does nothing that is
429 * visible in the interrupted kernel thread).
430 */
431static inline bool interrupted_kernel_fpu_idle(void)
432{
433 return !__thread_has_fpu(current) &&
434 (read_cr0() & X86_CR0_TS);
435}
436
437/*
438 * Were we in user mode (or vm86 mode) when we were
439 * interrupted?
440 *
441 * Doing kernel_fpu_begin/end() is ok if we are running
442 * in an interrupt context from user mode - we'll just
443 * save the FPU state as required.
444 */
445static inline bool interrupted_user_mode(void)
446{
447 struct pt_regs *regs = get_irq_regs();
448 return regs && user_mode_vm(regs);
449}
450
451/*
452 * Can we use the FPU in kernel mode with the
453 * whole "kernel_fpu_begin/end()" sequence?
454 *
455 * It's always ok in process context (ie "not interrupt")
456 * but it is sometimes ok even from an irq.
457 */
458static inline bool irq_fpu_usable(void)
459{
460 return !in_interrupt() ||
461 interrupted_user_mode() ||
462 interrupted_kernel_fpu_idle();
463}
464
310static inline void kernel_fpu_begin(void)465static inline void kernel_fpu_begin(void)
311{466{
312 struct thread_info *me = current_thread_info();467 struct task_struct *me = current;
468
469 WARN_ON_ONCE(!irq_fpu_usable());
313 preempt_disable();470 preempt_disable();
314 if (me->status & TS_USEDFPU)471 if (__thread_has_fpu(me)) {
315 __save_init_fpu(me->task);472 __save_init_fpu(me);
316 else473 __thread_clear_has_fpu(me);
474 /* We do 'stts()' in kernel_fpu_end() */
475 } else {
476 percpu_write(fpu_owner_task, NULL);
317 clts();477 clts();
478 }
318}479}
319 480
320static inline void kernel_fpu_end(void)481static inline void kernel_fpu_end(void)
@@ -323,14 +484,6 @@ static inline void kernel_fpu_end(void) · 2 unmodified lines
323 preempt_enable();484 preempt_enable();
324}485}
325 486
326static inline bool irq_fpu_usable(void)
327{
328 struct pt_regs *regs;
329
330 return !in_interrupt() || !(regs = get_irq_regs()) || \
331 user_mode(regs) || (read_cr0() & X86_CR0_TS);
332}
333
334/*487/*
335 * Some instructions like VIA's padlock instructions generate a spurious488 * Some instructions like VIA's padlock instructions generate a spurious
336 * DNA fault but don't modify SSE registers. And these instructions489 * DNA fault but don't modify SSE registers. And these instructions
@@ -362,21 +515,65 @@ static inline void irq_ts_restore(int TS_state) · 25 unmodified lines
362 stts();515 stts();
363}516}
364 517
518/*
519 * The question "does this thread have fpu access?"
520 * is slightly racy, since preemption could come in
521 * and revoke it immediately after the test.
522 *
523 * However, even in that very unlikely scenario,
524 * we can just assume we have FPU access - typically
525 * to save the FP state - we'll just take a #NM
526 * fault and get the FPU access back.
527 *
528 * The actual user_fpu_begin/end() functions
529 * need to be preemption-safe, though.
530 *
531 * NOTE! user_fpu_end() must be used only after you
532 * have saved the FP state, and user_fpu_begin() must
533 * be used only immediately before restoring it.
534 * These functions do not do any save/restore on
535 * their own.
536 */
537static inline int user_has_fpu(void)
538{
539 return __thread_has_fpu(current);
540}
541
542static inline void user_fpu_end(void)
543{
544 preempt_disable();
545 __thread_fpu_end(current);
546 preempt_enable();
547}
548
549static inline void user_fpu_begin(void)
550{
551 preempt_disable();
552 if (!user_has_fpu())
553 __thread_fpu_begin(current);
554 preempt_enable();
555}
556
365/*557/*
366 * These disable preemption on their own and are safe558 * These disable preemption on their own and are safe
367 */559 */
368static inline void save_init_fpu(struct task_struct *tsk)560static inline void save_init_fpu(struct task_struct *tsk)
369{561{
562 WARN_ON_ONCE(!__thread_has_fpu(tsk));
370 preempt_disable();563 preempt_disable();
371 __save_init_fpu(tsk);564 __save_init_fpu(tsk);
372 stts();565 __thread_fpu_end(tsk);
373 preempt_enable();566 preempt_enable();
374}567}
375 568
376static inline void unlazy_fpu(struct task_struct *tsk)569static inline void unlazy_fpu(struct task_struct *tsk)
377{570{
378 preempt_disable();571 preempt_disable();
379 __unlazy_fpu(tsk);572 if (__thread_has_fpu(tsk)) {
573 __save_init_fpu(tsk);
574 __thread_fpu_end(tsk);
575 } else
576 tsk->fpu_counter = 0;
380 preempt_enable();577 preempt_enable();
381}578}
382 579
arch/x86/include/asm/kvm_emulate.h+16−0
@@ -190,6 +190,9 @@ struct x86_emulate_ops { · 189 unmodified lines
190 int (*intercept)(struct x86_emulate_ctxt *ctxt,190 int (*intercept)(struct x86_emulate_ctxt *ctxt,
191 struct x86_instruction_info *info,191 struct x86_instruction_info *info,
192 enum x86_intercept_stage stage);192 enum x86_intercept_stage stage);
193
194 bool (*get_cpuid)(struct x86_emulate_ctxt *ctxt,
195 u32 *eax, u32 *ebx, u32 *ecx, u32 *edx);
193};196};
194 197
195typedef u32 __attribute__((vector_size(16))) sse128_t;198typedef u32 __attribute__((vector_size(16))) sse128_t;
@@ -298,6 +301,19 @@ struct x86_emulate_ctxt { · 102 unmodified lines
298#define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \301#define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \
299 X86EMUL_MODE_PROT64)302 X86EMUL_MODE_PROT64)
300 303
304/* CPUID vendors */
305#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx 0x68747541
306#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163
307#define X86EMUL_CPUID_VENDOR_AuthenticAMD_edx 0x69746e65
308
309#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx 0x69444d41
310#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574
311#define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273
312
313#define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547
314#define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e
315#define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69
316
301enum x86_intercept_stage {317enum x86_intercept_stage {
302 X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */318 X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */
303 X86_ICPT_PRE_EXCEPT,319 X86_ICPT_PRE_EXCEPT,
arch/x86/include/asm/processor.h+2−0
@@ -374,6 +374,8 @@ union thread_xstate { · 373 unmodified lines
374};374};
375 375
376struct fpu {376struct fpu {
377 unsigned int last_cpu;
378 unsigned int has_fpu;
377 union thread_xstate *state;379 union thread_xstate *state;
378};380};
379 381
arch/x86/include/asm/thread_info.h+0−2
@@ -247,8 +247,6 @@ static inline struct thread_info *current_thread_info(void) · 246 unmodified lines
247 * ever touches our thread-synchronous status, so we don't247 * ever touches our thread-synchronous status, so we don't
248 * have to worry about atomic accesses.248 * have to worry about atomic accesses.
249 */249 */
250#define TS_USEDFPU 0x0001 /* FPU was used by this task
251 this quantum (SMP) */
252#define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/250#define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/
253#define TS_POLLING 0x0004 /* idle task polling need_resched,251#define TS_POLLING 0x0004 /* idle task polling need_resched,
254 skip sending interrupt */252 skip sending interrupt */
arch/x86/include/asm/unistd.h+1−0
@@ -7,6 +7,7 @@ · 6 unmodified lines
7# include <asm/unistd_32.h>7# include <asm/unistd_32.h>
8# define __ARCH_WANT_IPC_PARSE_VERSION8# define __ARCH_WANT_IPC_PARSE_VERSION
9# define __ARCH_WANT_STAT649# define __ARCH_WANT_STAT64
10# define __ARCH_WANT_SYS_IPC
10# define __ARCH_WANT_SYS_OLD_MMAP11# define __ARCH_WANT_SYS_OLD_MMAP
11# define __ARCH_WANT_SYS_OLD_SELECT12# define __ARCH_WANT_SYS_OLD_SELECT
12 13
arch/x86/include/asm/uv/uv_bau.h+99−8
@@ -65,7 +65,7 @@ · 64 unmodified lines
65 * UV2: Bit 19 selects between65 * UV2: Bit 19 selects between
66 * (0): 10 microsecond timebase and66 * (0): 10 microsecond timebase and
67 * (1): 80 microseconds67 * (1): 80 microseconds
68 * we're using 655us, similar to UV1: 65 units of 10us68 * we're using 560us, similar to UV1: 65 units of 10us
69 */69 */
70#define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL)70#define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL)
71#define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL)71#define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL)
@@ -167,6 +167,7 @@ · 95 unmodified lines
167#define FLUSH_RETRY_TIMEOUT 2167#define FLUSH_RETRY_TIMEOUT 2
168#define FLUSH_GIVEUP 3168#define FLUSH_GIVEUP 3
169#define FLUSH_COMPLETE 4169#define FLUSH_COMPLETE 4
170#define FLUSH_RETRY_BUSYBUG 5
170 171
171/*172/*
172 * tuning the action when the numalink network is extremely delayed173 * tuning the action when the numalink network is extremely delayed
@@ -235,10 +236,10 @@ struct bau_msg_payload { · 62 unmodified lines
235 236
236 237
237/*238/*
238 * Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)239 * UV1 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
239 * see table 4.2.3.0.1 in broacast_assist spec.240 * see table 4.2.3.0.1 in broacast_assist spec.
240 */241 */
241struct bau_msg_header {242struct uv1_bau_msg_header {
242 unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */243 unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */
243 /* bits 5:0 */244 /* bits 5:0 */
244 unsigned int base_dest_nasid:15; /* nasid of the first bit */245 unsigned int base_dest_nasid:15; /* nasid of the first bit */
@@ -317,20 +318,88 @@ struct bau_msg_header { · 72 unmodified lines
317 /* bits 127:107 */318 /* bits 127:107 */
318};319};
319 320
321/*
322 * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
323 * see figure 9-2 of harp_sys.pdf
324 */
325struct uv2_bau_msg_header {
326 unsigned int base_dest_nasid:15; /* nasid of the first bit */
327 /* bits 14:0 */ /* in uvhub map */
328 unsigned int dest_subnodeid:5; /* must be 0x10, for the LB */
329 /* bits 19:15 */
330 unsigned int rsvd_1:1; /* must be zero */
331 /* bit 20 */
332 /* Address bits 59:21 */
333 /* bits 25:2 of address (44:21) are payload */
334 /* these next 24 bits become bytes 12-14 of msg */
335 /* bits 28:21 land in byte 12 */
336 unsigned int replied_to:1; /* sent as 0 by the source to
337 byte 12 */
338 /* bit 21 */
339 unsigned int msg_type:3; /* software type of the
340 message */
341 /* bits 24:22 */
342 unsigned int canceled:1; /* message canceled, resource
343 is to be freed*/
344 /* bit 25 */
345 unsigned int payload_1:3; /* not currently used */
346 /* bits 28:26 */
347
348 /* bits 36:29 land in byte 13 */
349 unsigned int payload_2a:3; /* not currently used */
350 unsigned int payload_2b:5; /* not currently used */
351 /* bits 36:29 */
352
353 /* bits 44:37 land in byte 14 */
354 unsigned int payload_3:8; /* not currently used */
355 /* bits 44:37 */
356
357 unsigned int rsvd_2:7; /* reserved */
358 /* bits 51:45 */
359 unsigned int swack_flag:1; /* software acknowledge flag */
360 /* bit 52 */
361 unsigned int rsvd_3a:3; /* must be zero */
362 unsigned int rsvd_3b:8; /* must be zero */
363 unsigned int rsvd_3c:8; /* must be zero */
364 unsigned int rsvd_3d:3; /* must be zero */
365 /* bits 74:53 */
366 unsigned int fairness:3; /* usually zero */
367 /* bits 77:75 */
368
369 unsigned int sequence:16; /* message sequence number */
370 /* bits 93:78 Suppl_A */
371 unsigned int chaining:1; /* next descriptor is part of
372 this activation*/
373 /* bit 94 */
374 unsigned int multilevel:1; /* multi-level multicast
375 format */
376 /* bit 95 */
377 unsigned int rsvd_4:24; /* ordered / source node /
378 source subnode / aging
379 must be zero */
380 /* bits 119:96 */
381 unsigned int command:8; /* message type */
382 /* bits 127:120 */
383};
384
320/*385/*
321 * The activation descriptor:386 * The activation descriptor:
322 * The format of the message to send, plus all accompanying control387 * The format of the message to send, plus all accompanying control
323 * Should be 64 bytes388 * Should be 64 bytes
324 */389 */
325struct bau_desc {390struct bau_desc {
326 struct pnmask distribution;391 struct pnmask distribution;
327 /*392 /*
328 * message template, consisting of header and payload:393 * message template, consisting of header and payload:
329 */394 */
330 struct bau_msg_header header;395 union bau_msg_header {
331 struct bau_msg_payload payload;396 struct uv1_bau_msg_header uv1_hdr;
397 struct uv2_bau_msg_header uv2_hdr;
398 } header;
399
400 struct bau_msg_payload payload;
332};401};
333/*402/* UV1:
334 * -payload-- ---------header------403 * -payload-- ---------header------
335 * bytes 0-11 bits 41-56 bits 58-81404 * bytes 0-11 bits 41-56 bits 58-81
336 * A B (2) C (3)405 * A B (2) C (3)
@@ -340,6 +409,16 @@ struct bau_desc { · 3 unmodified lines
340 * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)409 * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
341 * ------------payload queue-----------410 * ------------payload queue-----------
342 */411 */
412/* UV2:
413 * -payload-- ---------header------
414 * bytes 0-11 bits 70-78 bits 21-44
415 * A B (2) C (3)
416 *
417 * A/B/C are moved to:
418 * A C B
419 * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
420 * ------------payload queue-----------
421 */
343 422
344/*423/*
345 * The payload queue on the destination side is an array of these.424 * The payload queue on the destination side is an array of these.
@@ -385,7 +464,6 @@ struct bau_pq_entry { · 39 unmodified lines
385struct msg_desc {464struct msg_desc {
386 struct bau_pq_entry *msg;465 struct bau_pq_entry *msg;
387 int msg_slot;466 int msg_slot;
388 int swack_slot;
389 struct bau_pq_entry *queue_first;467 struct bau_pq_entry *queue_first;
390 struct bau_pq_entry *queue_last;468 struct bau_pq_entry *queue_last;
391};469};
@@ -405,6 +483,7 @@ struct ptc_stats { · 13 unmodified lines
405 requests */483 requests */
406 unsigned long s_stimeout; /* source side timeouts */484 unsigned long s_stimeout; /* source side timeouts */
407 unsigned long s_dtimeout; /* destination side timeouts */485 unsigned long s_dtimeout; /* destination side timeouts */
486 unsigned long s_strongnacks; /* number of strong nack's */
408 unsigned long s_time; /* time spent in sending side */487 unsigned long s_time; /* time spent in sending side */
409 unsigned long s_retriesok; /* successful retries */488 unsigned long s_retriesok; /* successful retries */
410 unsigned long s_ntargcpu; /* total number of cpu's489 unsigned long s_ntargcpu; /* total number of cpu's
@@ -439,6 +518,9 @@ struct ptc_stats { · 28 unmodified lines
439 unsigned long s_retry_messages; /* retry broadcasts */518 unsigned long s_retry_messages; /* retry broadcasts */
440 unsigned long s_bau_reenabled; /* for bau enable/disable */519 unsigned long s_bau_reenabled; /* for bau enable/disable */
441 unsigned long s_bau_disabled; /* for bau enable/disable */520 unsigned long s_bau_disabled; /* for bau enable/disable */
521 unsigned long s_uv2_wars; /* uv2 workaround, perm. busy */
522 unsigned long s_uv2_wars_hw; /* uv2 workaround, hiwater */
523 unsigned long s_uv2_war_waits; /* uv2 workaround, long waits */
442 /* destination statistics */524 /* destination statistics */
443 unsigned long d_alltlb; /* times all tlb's on this525 unsigned long d_alltlb; /* times all tlb's on this
444 cpu were flushed */526 cpu were flushed */
@@ -511,9 +593,12 @@ struct bau_control { · 66 unmodified lines
511 short osnode;593 short osnode;
512 short uvhub_cpu;594 short uvhub_cpu;
513 short uvhub;595 short uvhub;
596 short uvhub_version;
514 short cpus_in_socket;597 short cpus_in_socket;
515 short cpus_in_uvhub;598 short cpus_in_uvhub;
516 short partition_base_pnode;599 short partition_base_pnode;
600 short using_desc; /* an index, like uvhub_cpu */
601 unsigned int inuse_map;
517 unsigned short message_number;602 unsigned short message_number;
518 unsigned short uvhub_quiesce;603 unsigned short uvhub_quiesce;
519 short socket_acknowledge_count[DEST_Q_SIZE];604 short socket_acknowledge_count[DEST_Q_SIZE];
@@ -531,6 +616,7 @@ struct bau_control { · 11 unmodified lines
531 int cong_response_us;616 int cong_response_us;
532 int cong_reps;617 int cong_reps;
533 int cong_period;618 int cong_period;
619 unsigned long clocks_per_100_usec;
534 cycles_t period_time;620 cycles_t period_time;
535 long period_requests;621 long period_requests;
536 struct hub_and_pnode *thp;622 struct hub_and_pnode *thp;
@@ -591,6 +677,11 @@ static inline void write_mmr_sw_ack(unsigned long mr) · 54 unmodified lines
591 uv_write_local_mmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);677 uv_write_local_mmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);
592}678}
593 679
680static inline void write_gmmr_sw_ack(int pnode, unsigned long mr)
681{
682 write_gmmr(pnode, UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);
683}
684
594static inline unsigned long read_mmr_sw_ack(void)685static inline unsigned long read_mmr_sw_ack(void)
595{686{
596 return read_lmmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE);687 return read_lmmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE);
arch/x86/include/asm/uv/uv_hub.h+2−2
@@ -318,13 +318,13 @@ uv_gpa_in_mmr_space(unsigned long gpa) · 317 unmodified lines
318/* UV global physical address --> socket phys RAM */318/* UV global physical address --> socket phys RAM */
319static inline unsigned long uv_gpa_to_soc_phys_ram(unsigned long gpa)319static inline unsigned long uv_gpa_to_soc_phys_ram(unsigned long gpa)
320{320{
321 unsigned long paddr = gpa & uv_hub_info->gpa_mask;321 unsigned long paddr;
322 unsigned long remap_base = uv_hub_info->lowmem_remap_base;322 unsigned long remap_base = uv_hub_info->lowmem_remap_base;
323 unsigned long remap_top = uv_hub_info->lowmem_remap_top;323 unsigned long remap_top = uv_hub_info->lowmem_remap_top;
324 324
325 gpa = ((gpa << uv_hub_info->m_shift) >> uv_hub_info->m_shift) |325 gpa = ((gpa << uv_hub_info->m_shift) >> uv_hub_info->m_shift) |
326 ((gpa >> uv_hub_info->n_lshift) << uv_hub_info->m_val);326 ((gpa >> uv_hub_info->n_lshift) << uv_hub_info->m_val);
327 gpa = gpa & uv_hub_info->gpa_mask;327 paddr = gpa & uv_hub_info->gpa_mask;
328 if (paddr >= remap_base && paddr < remap_base + remap_top)328 if (paddr >= remap_base && paddr < remap_base + remap_top)
329 paddr -= remap_base;329 paddr -= remap_base;
330 return paddr;330 return paddr;
arch/x86/kernel/cpu/common.c+5−0
@@ -1044,6 +1044,9 @@ DEFINE_PER_CPU(char *, irq_stack_ptr) = · 1043 unmodified lines
1044 1044
1045DEFINE_PER_CPU(unsigned int, irq_count) = -1;1045DEFINE_PER_CPU(unsigned int, irq_count) = -1;
1046 1046
1047DEFINE_PER_CPU(struct task_struct *, fpu_owner_task);
1048EXPORT_PER_CPU_SYMBOL(fpu_owner_task);
1049
1047/*1050/*
1048 * Special IST stacks which the CPU switches to when it calls1051 * Special IST stacks which the CPU switches to when it calls
1049 * an IST-marked descriptor entry. Up to 7 stacks (hardware1052 * an IST-marked descriptor entry. Up to 7 stacks (hardware
@@ -1111,6 +1114,8 @@ void debug_stack_reset(void) · 61 unmodified lines
1111 1114
1112DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;1115DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
1113EXPORT_PER_CPU_SYMBOL(current_task);1116EXPORT_PER_CPU_SYMBOL(current_task);
1117DEFINE_PER_CPU(struct task_struct *, fpu_owner_task);
1118EXPORT_PER_CPU_SYMBOL(fpu_owner_task);
1114 1119
1115#ifdef CONFIG_CC_STACKPROTECTOR1120#ifdef CONFIG_CC_STACKPROTECTOR
1116DEFINE_PER_CPU_ALIGNED(struct stack_canary, stack_canary);1121DEFINE_PER_CPU_ALIGNED(struct stack_canary, stack_canary);
arch/x86/kernel/cpu/perf_event_intel_ds.c+0−1
@@ -439,7 +439,6 @@ void intel_pmu_pebs_enable(struct perf_event *event) · 438 unmodified lines
439 hwc->config &= ~ARCH_PERFMON_EVENTSEL_INT;439 hwc->config &= ~ARCH_PERFMON_EVENTSEL_INT;
440 440
441 cpuc->pebs_enabled |= 1ULL << hwc->idx;441 cpuc->pebs_enabled |= 1ULL << hwc->idx;
442 WARN_ON_ONCE(cpuc->enabled);
443 442
444 if (x86_pmu.intel_cap.pebs_trap && event->attr.precise_ip > 1)443 if (x86_pmu.intel_cap.pebs_trap && event->attr.precise_ip > 1)
445 intel_pmu_lbr_enable(event);444 intel_pmu_lbr_enable(event);
arch/x86/kernel/cpu/perf_event_intel_lbr.c+0−2
@@ -72,8 +72,6 @@ void intel_pmu_lbr_enable(struct perf_event *event) · 71 unmodified lines
72 if (!x86_pmu.lbr_nr)72 if (!x86_pmu.lbr_nr)
73 return;73 return;
74 74
75 WARN_ON_ONCE(cpuc->enabled);
76
77 /*75 /*
78 * Reset the LBR stack if we changed task context to76 * Reset the LBR stack if we changed task context to
79 * avoid data leaks.77 * avoid data leaks.
arch/x86/kernel/dumpstack.c+2−1
@@ -252,7 +252,8 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) · 251 unmodified lines
252 unsigned short ss;252 unsigned short ss;
253 unsigned long sp;253 unsigned long sp;
254#endif254#endif
255 printk(KERN_EMERG "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);255 printk(KERN_DEFAULT
256 "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);
256#ifdef CONFIG_PREEMPT257#ifdef CONFIG_PREEMPT
257 printk("PREEMPT ");258 printk("PREEMPT ");
258#endif259#endif
arch/x86/kernel/dumpstack_64.c+4−4
@@ -129,7 +129,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, · 128 unmodified lines
129 if (!stack) {129 if (!stack) {
130 if (regs)130 if (regs)
131 stack = (unsigned long *)regs->sp;131 stack = (unsigned long *)regs->sp;
132 else if (task && task != current)132 else if (task != current)
133 stack = (unsigned long *)task->thread.sp;133 stack = (unsigned long *)task->thread.sp;
134 else134 else
135 stack = &dummy;135 stack = &dummy;
@@ -269,11 +269,11 @@ void show_registers(struct pt_regs *regs) · 133 unmodified lines
269 unsigned char c;269 unsigned char c;
270 u8 *ip;270 u8 *ip;
271 271
272 printk(KERN_EMERG "Stack:\n");272 printk(KERN_DEFAULT "Stack:\n");
273 show_stack_log_lvl(NULL, regs, (unsigned long *)sp,273 show_stack_log_lvl(NULL, regs, (unsigned long *)sp,
274 0, KERN_EMERG);274 0, KERN_DEFAULT);
275 275
276 printk(KERN_EMERG "Code: ");276 printk(KERN_DEFAULT "Code: ");
277 277
278 ip = (u8 *)regs->ip - code_prologue;278 ip = (u8 *)regs->ip - code_prologue;
279 if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) {279 if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) {
arch/x86/kernel/e820.c+2−2
@@ -703,7 +703,7 @@ void __init e820_mark_nosave_regions(unsigned long limit_pfn) · 702 unmodified lines
703}703}
704#endif704#endif
705 705
706#ifdef CONFIG_HIBERNATION706#ifdef CONFIG_ACPI
707/**707/**
708 * Mark ACPI NVS memory region, so that we can save/restore it during708 * Mark ACPI NVS memory region, so that we can save/restore it during
709 * hibernation and the subsequent resume.709 * hibernation and the subsequent resume.
@@ -716,7 +716,7 @@ static int __init e820_mark_nvs_memory(void) · 6 unmodified lines
716 struct e820entry *ei = &e820.map[i];716 struct e820entry *ei = &e820.map[i];
717 717
718 if (ei->type == E820_NVS)718 if (ei->type == E820_NVS)
719 suspend_nvs_register(ei->addr, ei->size);719 acpi_nvs_register(ei->addr, ei->size);
720 }720 }
721 721
722 return 0;722 return 0;
arch/x86/kernel/entry_32.S+5−5
@@ -42,6 +42,7 @@ · 41 unmodified lines
42 */42 */
43 43
44#include <linux/linkage.h>44#include <linux/linkage.h>
45#include <linux/err.h>
45#include <asm/thread_info.h>46#include <asm/thread_info.h>
46#include <asm/irqflags.h>47#include <asm/irqflags.h>
47#include <asm/errno.h>48#include <asm/errno.h>
@@ -453,7 +454,7 @@ sysenter_audit: · 405 unmodified lines
453 movl %ebx,%ecx /* 3rd arg: 1st syscall arg */454 movl %ebx,%ecx /* 3rd arg: 1st syscall arg */
454 movl %eax,%edx /* 2nd arg: syscall number */455 movl %eax,%edx /* 2nd arg: syscall number */
455 movl $AUDIT_ARCH_I386,%eax /* 1st arg: audit arch */456 movl $AUDIT_ARCH_I386,%eax /* 1st arg: audit arch */
456 call audit_syscall_entry457 call __audit_syscall_entry
457 pushl_cfi %ebx458 pushl_cfi %ebx
458 movl PT_EAX(%esp),%eax /* reload syscall number */459 movl PT_EAX(%esp),%eax /* reload syscall number */
459 jmp sysenter_do_call460 jmp sysenter_do_call
@@ -464,11 +465,10 @@ sysexit_audit: · 4 unmodified lines
464 TRACE_IRQS_ON465 TRACE_IRQS_ON
465 ENABLE_INTERRUPTS(CLBR_ANY)466 ENABLE_INTERRUPTS(CLBR_ANY)
466 movl %eax,%edx /* second arg, syscall return value */467 movl %eax,%edx /* second arg, syscall return value */
467 cmpl $0,%eax /* is it < 0? */468 cmpl $-MAX_ERRNO,%eax /* is it an error ? */
468 setl %al /* 1 if so, 0 if not */469 setbe %al /* 1 if so, 0 if not */
469 movzbl %al,%eax /* zero-extend that */470 movzbl %al,%eax /* zero-extend that */
470 inc %eax /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */471 call __audit_syscall_exit
471 call audit_syscall_exit
472 DISABLE_INTERRUPTS(CLBR_ANY)472 DISABLE_INTERRUPTS(CLBR_ANY)
473 TRACE_IRQS_OFF473 TRACE_IRQS_OFF
474 movl TI_flags(%ebp), %ecx474 movl TI_flags(%ebp), %ecx
arch/x86/kernel/entry_64.S+7−7
@@ -55,6 +55,7 @@ · 54 unmodified lines
55#include <asm/paravirt.h>55#include <asm/paravirt.h>
56#include <asm/ftrace.h>56#include <asm/ftrace.h>
57#include <asm/percpu.h>57#include <asm/percpu.h>
58#include <linux/err.h>
58 59
59/* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */60/* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
60#include <linux/elf-em.h>61#include <linux/elf-em.h>
@@ -548,7 +549,7 @@ badsys: · 487 unmodified lines
548#ifdef CONFIG_AUDITSYSCALL549#ifdef CONFIG_AUDITSYSCALL
549 /*550 /*
550 * Fast path for syscall audit without full syscall trace.551 * Fast path for syscall audit without full syscall trace.
551 * We just call audit_syscall_entry() directly, and then552 * We just call __audit_syscall_entry() directly, and then
552 * jump back to the normal fast path.553 * jump back to the normal fast path.
553 */554 */
554auditsys:555auditsys:
@@ -558,22 +559,21 @@ auditsys: · 3 unmodified lines
558 movq %rdi,%rdx /* 3rd arg: 1st syscall arg */559 movq %rdi,%rdx /* 3rd arg: 1st syscall arg */
559 movq %rax,%rsi /* 2nd arg: syscall number */560 movq %rax,%rsi /* 2nd arg: syscall number */
560 movl $AUDIT_ARCH_X86_64,%edi /* 1st arg: audit arch */561 movl $AUDIT_ARCH_X86_64,%edi /* 1st arg: audit arch */
561 call audit_syscall_entry562 call __audit_syscall_entry
562 LOAD_ARGS 0 /* reload call-clobbered registers */563 LOAD_ARGS 0 /* reload call-clobbered registers */
563 jmp system_call_fastpath564 jmp system_call_fastpath
564 565
565 /*566 /*
566 * Return fast path for syscall audit. Call audit_syscall_exit()567 * Return fast path for syscall audit. Call __audit_syscall_exit()
567 * directly and then jump back to the fast path with TIF_SYSCALL_AUDIT568 * directly and then jump back to the fast path with TIF_SYSCALL_AUDIT
568 * masked off.569 * masked off.
569 */570 */
570sysret_audit:571sysret_audit:
571 movq RAX-ARGOFFSET(%rsp),%rsi /* second arg, syscall return value */572 movq RAX-ARGOFFSET(%rsp),%rsi /* second arg, syscall return value */
572 cmpq $0,%rsi /* is it < 0? */573 cmpq $-MAX_ERRNO,%rsi /* is it < -MAX_ERRNO? */
573 setl %al /* 1 if so, 0 if not */574 setbe %al /* 1 if so, 0 if not */
574 movzbl %al,%edi /* zero-extend that into %edi */575 movzbl %al,%edi /* zero-extend that into %edi */
575 inc %edi /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */576 call __audit_syscall_exit
576 call audit_syscall_exit
577 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi577 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
578 jmp sysret_check578 jmp sysret_check
579#endif /* CONFIG_AUDITSYSCALL */579#endif /* CONFIG_AUDITSYSCALL */
arch/x86/kernel/microcode_amd.c+22−2
@@ -311,13 +311,33 @@ out: · 310 unmodified lines
311 return state;311 return state;
312}312}
313 313
314/*
315 * AMD microcode firmware naming convention, up to family 15h they are in
316 * the legacy file:
317 *
318 * amd-ucode/microcode_amd.bin
319 *
320 * This legacy file is always smaller than 2K in size.
321 *
322 * Starting at family 15h they are in family specific firmware files:
323 *
324 * amd-ucode/microcode_amd_fam15h.bin
325 * amd-ucode/microcode_amd_fam16h.bin
326 * ...
327 *
328 * These might be larger than 2K.
329 */
314static enum ucode_state request_microcode_amd(int cpu, struct device *device)330static enum ucode_state request_microcode_amd(int cpu, struct device *device)
315{331{
316 const char *fw_name = "amd-ucode/microcode_amd.bin";332 char fw_name[36] = "amd-ucode/microcode_amd.bin";
317 const struct firmware *fw;333 const struct firmware *fw;
318 enum ucode_state ret = UCODE_NFOUND;334 enum ucode_state ret = UCODE_NFOUND;
335 struct cpuinfo_x86 *c = &cpu_data(cpu);
336
337 if (c->x86 >= 0x15)
338 snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
319 339
320 if (request_firmware(&fw, fw_name, device)) {340 if (request_firmware(&fw, (const char *)fw_name, device)) {
321 pr_err("failed to load file %s\n", fw_name);341 pr_err("failed to load file %s\n", fw_name);
322 goto out;342 goto out;
323 }343 }
arch/x86/kernel/process_32.c+5−21
@@ -214,6 +214,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, · 213 unmodified lines
214 214
215 task_user_gs(p) = get_user_gs(regs);215 task_user_gs(p) = get_user_gs(regs);
216 216
217 p->fpu_counter = 0;
217 p->thread.io_bitmap_ptr = NULL;218 p->thread.io_bitmap_ptr = NULL;
218 tsk = current;219 tsk = current;
219 err = -ENOMEM;220 err = -ENOMEM;
@@ -299,22 +300,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 79 unmodified lines
299 *next = &next_p->thread;300 *next = &next_p->thread;
300 int cpu = smp_processor_id();301 int cpu = smp_processor_id();
301 struct tss_struct *tss = &per_cpu(init_tss, cpu);302 struct tss_struct *tss = &per_cpu(init_tss, cpu);
302 bool preload_fpu;303 fpu_switch_t fpu;
303 304
304 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */305 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
305 306
306 /*307 fpu = switch_fpu_prepare(prev_p, next_p, cpu);
307 * If the task has used fpu the last 5 timeslices, just do a full
308 * restore of the math state immediately to avoid the trap; the
309 * chances of needing FPU soon are obviously high now
310 */
311 preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
312
313 __unlazy_fpu(prev_p);
314
315 /* we're going to use this soon, after a few expensive things */
316 if (preload_fpu)
317 prefetch(next->fpu.state);
318 308
319 /*309 /*
320 * Reload esp0.310 * Reload esp0.
@@ -354,11 +344,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 33 unmodified lines
354 task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))344 task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
355 __switch_to_xtra(prev_p, next_p, tss);345 __switch_to_xtra(prev_p, next_p, tss);
356 346
357 /* If we're going to preload the fpu context, make sure clts
358 is run while we're batching the cpu state updates. */
359 if (preload_fpu)
360 clts();
361
362 /*347 /*
363 * Leave lazy mode, flushing any hypercalls made here.348 * Leave lazy mode, flushing any hypercalls made here.
364 * This must be done before restoring TLS segments so349 * This must be done before restoring TLS segments so
@@ -368,15 +353,14 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 3 unmodified lines
368 */353 */
369 arch_end_context_switch(next_p);354 arch_end_context_switch(next_p);
370 355
371 if (preload_fpu)
372 __math_state_restore();
373
374 /*356 /*
375 * Restore %gs if needed (which is common)357 * Restore %gs if needed (which is common)
376 */358 */
377 if (prev->gs | next->gs)359 if (prev->gs | next->gs)
378 lazy_load_gs(next->gs);360 lazy_load_gs(next->gs);
379 361
362 switch_fpu_finish(next_p, fpu);
363
380 percpu_write(current_task, next_p);364 percpu_write(current_task, next_p);
381 365
382 return prev_p;366 return prev_p;
arch/x86/kernel/process_64.c+5−25
@@ -286,6 +286,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, · 285 unmodified lines
286 286
287 set_tsk_thread_flag(p, TIF_FORK);287 set_tsk_thread_flag(p, TIF_FORK);
288 288
289 p->fpu_counter = 0;
289 p->thread.io_bitmap_ptr = NULL;290 p->thread.io_bitmap_ptr = NULL;
290 291
291 savesegment(gs, p->thread.gsindex);292 savesegment(gs, p->thread.gsindex);
@@ -386,18 +387,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 94 unmodified lines
386 int cpu = smp_processor_id();387 int cpu = smp_processor_id();
387 struct tss_struct *tss = &per_cpu(init_tss, cpu);388 struct tss_struct *tss = &per_cpu(init_tss, cpu);
388 unsigned fsindex, gsindex;389 unsigned fsindex, gsindex;
389 bool preload_fpu;390 fpu_switch_t fpu;
390 391
391 /*392 fpu = switch_fpu_prepare(prev_p, next_p, cpu);
392 * If the task has used fpu the last 5 timeslices, just do a full
393 * restore of the math state immediately to avoid the trap; the
394 * chances of needing FPU soon are obviously high now
395 */
396 preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
397
398 /* we're going to use this soon, after a few expensive things */
399 if (preload_fpu)
400 prefetch(next->fpu.state);
401 393
402 /*394 /*
403 * Reload esp0, LDT and the page table pointer:395 * Reload esp0, LDT and the page table pointer:
@@ -427,13 +419,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 23 unmodified lines
427 419
428 load_TLS(next, cpu);420 load_TLS(next, cpu);
429 421
430 /* Must be after DS reload */
431 __unlazy_fpu(prev_p);
432
433 /* Make sure cpu is ready for new context */
434 if (preload_fpu)
435 clts();
436
437 /*422 /*
438 * Leave lazy mode, flushing any hypercalls made here.423 * Leave lazy mode, flushing any hypercalls made here.
439 * This must be done before restoring TLS segments so424 * This must be done before restoring TLS segments so
@@ -474,6 +459,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 34 unmodified lines
474 wrmsrl(MSR_KERNEL_GS_BASE, next->gs);459 wrmsrl(MSR_KERNEL_GS_BASE, next->gs);
475 prev->gsindex = gsindex;460 prev->gsindex = gsindex;
476 461
462 switch_fpu_finish(next_p, fpu);
463
477 /*464 /*
478 * Switch the PDA and FPU contexts.465 * Switch the PDA and FPU contexts.
479 */466 */
@@ -492,13 +479,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 12 unmodified lines
492 task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV))479 task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV))
493 __switch_to_xtra(prev_p, next_p, tss);480 __switch_to_xtra(prev_p, next_p, tss);
494 481
495 /*
496 * Preload the FPU context, now that we've determined that the
497 * task is likely to be using it.
498 */
499 if (preload_fpu)
500 __math_state_restore();
501
502 return prev_p;482 return prev_p;
503}483}
504 484
arch/x86/kernel/ptrace.c+11−14
@@ -1392,20 +1392,18 @@ long syscall_trace_enter(struct pt_regs *regs) · 1391 unmodified lines
1392 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))1392 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
1393 trace_sys_enter(regs, regs->orig_ax);1393 trace_sys_enter(regs, regs->orig_ax);
1394 1394
1395 if (unlikely(current->audit_context)) {1395 if (IS_IA32)
1396 if (IS_IA32)1396 audit_syscall_entry(AUDIT_ARCH_I386,
1397 audit_syscall_entry(AUDIT_ARCH_I386,1397 regs->orig_ax,
1398 regs->orig_ax,1398 regs->bx, regs->cx,
1399 regs->bx, regs->cx,1399 regs->dx, regs->si);
1400 regs->dx, regs->si);
1401#ifdef CONFIG_X86_641400#ifdef CONFIG_X86_64
1402 else1401 else
1403 audit_syscall_entry(AUDIT_ARCH_X86_64,1402 audit_syscall_entry(AUDIT_ARCH_X86_64,
1404 regs->orig_ax,1403 regs->orig_ax,
1405 regs->di, regs->si,1404 regs->di, regs->si,
1406 regs->dx, regs->r10);1405 regs->dx, regs->r10);
1407#endif1406#endif
1408 }
1409 1407
1410 return ret ?: regs->orig_ax;1408 return ret ?: regs->orig_ax;
1411}1409}
@@ -1414,8 +1412,7 @@ void syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
1414{1412{
1415 bool step;1413 bool step;
1416 1414
1417 if (unlikely(current->audit_context))1415 audit_syscall_exit(regs);
1418 audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax);
1419 1416
1420 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))1417 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
1421 trace_sys_exit(regs, regs->ax);1418 trace_sys_exit(regs, regs->ax);
arch/x86/kernel/reboot.c+26−10
@@ -39,6 +39,14 @@ static int reboot_mode; · 38 unmodified lines
39enum reboot_type reboot_type = BOOT_ACPI;39enum reboot_type reboot_type = BOOT_ACPI;
40int reboot_force;40int reboot_force;
41 41
42/* This variable is used privately to keep track of whether or not
43 * reboot_type is still set to its default value (i.e., reboot= hasn't
44 * been set on the command line). This is needed so that we can
45 * suppress DMI scanning for reboot quirks. Without it, it's
46 * impossible to override a faulty reboot quirk without recompiling.
47 */
48static int reboot_default = 1;
49
42#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)50#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
43static int reboot_cpu = -1;51static int reboot_cpu = -1;
44#endif52#endif
@@ -67,6 +75,12 @@ bool port_cf9_safe = false; · 22 unmodified lines
67static int __init reboot_setup(char *str)75static int __init reboot_setup(char *str)
68{76{
69 for (;;) {77 for (;;) {
78 /* Having anything passed on the command line via
79 * reboot= will cause us to disable DMI checking
80 * below.
81 */
82 reboot_default = 0;
83
70 switch (*str) {84 switch (*str) {
71 case 'w':85 case 'w':
72 reboot_mode = 0x1234;86 reboot_mode = 0x1234;
@@ -295,14 +309,6 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { · 222 unmodified lines
295 DMI_MATCH(DMI_BOARD_NAME, "P4S800"),309 DMI_MATCH(DMI_BOARD_NAME, "P4S800"),
296 },310 },
297 },311 },
298 { /* Handle problems with rebooting on VersaLogic Menlow boards */
299 .callback = set_bios_reboot,
300 .ident = "VersaLogic Menlow based board",
301 .matches = {
302 DMI_MATCH(DMI_BOARD_VENDOR, "VersaLogic Corporation"),
303 DMI_MATCH(DMI_BOARD_NAME, "VersaLogic Menlow board"),
304 },
305 },
306 { /* Handle reboot issue on Acer Aspire one */312 { /* Handle reboot issue on Acer Aspire one */
307 .callback = set_kbd_reboot,313 .callback = set_kbd_reboot,
308 .ident = "Acer Aspire One A110",314 .ident = "Acer Aspire One A110",
@@ -316,7 +322,12 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { · 7 unmodified lines
316 322
317static int __init reboot_init(void)323static int __init reboot_init(void)
318{324{
319 dmi_check_system(reboot_dmi_table);325 /* Only do the DMI check if reboot_type hasn't been overridden
326 * on the command line
327 */
328 if (reboot_default) {
329 dmi_check_system(reboot_dmi_table);
330 }
320 return 0;331 return 0;
321}332}
322core_initcall(reboot_init);333core_initcall(reboot_init);
@@ -465,7 +476,12 @@ static struct dmi_system_id __initdata pci_reboot_dmi_table[] = { · 142 unmodified lines
465 476
466static int __init pci_reboot_init(void)477static int __init pci_reboot_init(void)
467{478{
468 dmi_check_system(pci_reboot_dmi_table);479 /* Only do the DMI check if reboot_type hasn't been overridden
480 * on the command line
481 */
482 if (reboot_default) {
483 dmi_check_system(pci_reboot_dmi_table);
484 }
469 return 0;485 return 0;
470}486}
471core_initcall(pci_reboot_init);487core_initcall(pci_reboot_init);
arch/x86/kernel/traps.c+14−29
@@ -570,28 +570,6 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void) · 569 unmodified lines
570{570{
571}571}
572 572
573/*
574 * __math_state_restore assumes that cr0.TS is already clear and the
575 * fpu state is all ready for use. Used during context switch.
576 */
577void __math_state_restore(void)
578{
579 struct thread_info *thread = current_thread_info();
580 struct task_struct *tsk = thread->task;
581
582 /*
583 * Paranoid restore. send a SIGSEGV if we fail to restore the state.
584 */
585 if (unlikely(restore_fpu_checking(tsk))) {
586 stts();
587 force_sig(SIGSEGV, tsk);
588 return;
589 }
590
591 thread->status |= TS_USEDFPU; /* So we fnsave on switch_to() */
592 tsk->fpu_counter++;
593}
594
595/*573/*
596 * 'math_state_restore()' saves the current math information in the574 * 'math_state_restore()' saves the current math information in the
597 * old math state array, and gets the new ones from the current task575 * old math state array, and gets the new ones from the current task
@@ -599,13 +577,12 @@ void __math_state_restore(void) · 1 unmodified line
599 * Careful.. There are problems with IBM-designed IRQ13 behaviour.577 * Careful.. There are problems with IBM-designed IRQ13 behaviour.
600 * Don't touch unless you *really* know how it works.578 * Don't touch unless you *really* know how it works.
601 *579 *
602 * Must be called with kernel preemption disabled (in this case,580 * Must be called with kernel preemption disabled (eg with local
603 * local interrupts are disabled at the call-site in entry.S).581 * local interrupts as in the case of do_device_not_available).
604 */582 */
605asmlinkage void math_state_restore(void)583void math_state_restore(void)
606{584{
607 struct thread_info *thread = current_thread_info();585 struct task_struct *tsk = current;
608 struct task_struct *tsk = thread->task;
609 586
610 if (!tsk_used_math(tsk)) {587 if (!tsk_used_math(tsk)) {
611 local_irq_enable();588 local_irq_enable();
@@ -622,9 +599,17 @@ asmlinkage void math_state_restore(void) · 10 unmodified lines
622 local_irq_disable();599 local_irq_disable();
623 }600 }
624 601
625 clts(); /* Allow maths ops (or we recurse) */602 __thread_fpu_begin(tsk);
603 /*
604 * Paranoid restore. send a SIGSEGV if we fail to restore the state.
605 */
606 if (unlikely(restore_fpu_checking(tsk))) {
607 __thread_fpu_end(tsk);
608 force_sig(SIGSEGV, tsk);
609 return;
610 }
626 611
627 __math_state_restore();612 tsk->fpu_counter++;
628}613}
629EXPORT_SYMBOL_GPL(math_state_restore);614EXPORT_SYMBOL_GPL(math_state_restore);
630 615
arch/x86/kernel/tsc.c+6−8
@@ -290,14 +290,15 @@ static inline int pit_verify_msb(unsigned char val) · 289 unmodified lines
290static inline int pit_expect_msb(unsigned char val, u64 *tscp, unsigned long *deltap)290static inline int pit_expect_msb(unsigned char val, u64 *tscp, unsigned long *deltap)
291{291{
292 int count;292 int count;
293 u64 tsc = 0;293 u64 tsc = 0, prev_tsc = 0;
294 294
295 for (count = 0; count < 50000; count++) {295 for (count = 0; count < 50000; count++) {
296 if (!pit_verify_msb(val))296 if (!pit_verify_msb(val))
297 break;297 break;
298 prev_tsc = tsc;
298 tsc = get_cycles();299 tsc = get_cycles();
299 }300 }
300 *deltap = get_cycles() - tsc;301 *deltap = get_cycles() - prev_tsc;
301 *tscp = tsc;302 *tscp = tsc;
302 303
303 /*304 /*
@@ -311,9 +312,9 @@ static inline int pit_expect_msb(unsigned char val, u64 *tscp, unsigned long *de · 7 unmodified lines
311 * How many MSB values do we want to see? We aim for312 * How many MSB values do we want to see? We aim for
312 * a maximum error rate of 500ppm (in practice the313 * a maximum error rate of 500ppm (in practice the
313 * real error is much smaller), but refuse to spend314 * real error is much smaller), but refuse to spend
314 * more than 25ms on it.315 * more than 50ms on it.
315 */316 */
316#define MAX_QUICK_PIT_MS 25317#define MAX_QUICK_PIT_MS 50
317#define MAX_QUICK_PIT_ITERATIONS (MAX_QUICK_PIT_MS * PIT_TICK_RATE / 1000 / 256)318#define MAX_QUICK_PIT_ITERATIONS (MAX_QUICK_PIT_MS * PIT_TICK_RATE / 1000 / 256)
318 319
319static unsigned long quick_pit_calibrate(void)320static unsigned long quick_pit_calibrate(void)
@@ -383,15 +384,12 @@ success: · 63 unmodified lines
383 *384 *
384 * As a result, we can depend on there not being385 * As a result, we can depend on there not being
385 * any odd delays anywhere, and the TSC reads are386 * any odd delays anywhere, and the TSC reads are
386 * reliable (within the error). We also adjust the387 * reliable (within the error).
387 * delta to the middle of the error bars, just
388 * because it looks nicer.
389 *388 *
390 * kHz = ticks / time-in-seconds / 1000;389 * kHz = ticks / time-in-seconds / 1000;
391 * kHz = (t2 - t1) / (I * 256 / PIT_TICK_RATE) / 1000390 * kHz = (t2 - t1) / (I * 256 / PIT_TICK_RATE) / 1000
392 * kHz = ((t2 - t1) * PIT_TICK_RATE) / (I * 256 * 1000)391 * kHz = ((t2 - t1) * PIT_TICK_RATE) / (I * 256 * 1000)
393 */392 */
394 delta += (long)(d2 - d1)/2;
395 delta *= PIT_TICK_RATE;393 delta *= PIT_TICK_RATE;
396 do_div(delta, i*256*1000);394 do_div(delta, i*256*1000);
397 printk("Fast TSC calibration using PIT\n");395 printk("Fast TSC calibration using PIT\n");
arch/x86/kernel/vm86_32.c+4−2
@@ -335,9 +335,11 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk · 334 unmodified lines
335 if (info->flags & VM86_SCREEN_BITMAP)335 if (info->flags & VM86_SCREEN_BITMAP)
336 mark_screen_rdonly(tsk->mm);336 mark_screen_rdonly(tsk->mm);
337 337
338 /*call audit_syscall_exit since we do not exit via the normal paths */338 /*call __audit_syscall_exit since we do not exit via the normal paths */
339#ifdef CONFIG_AUDITSYSCALL
339 if (unlikely(current->audit_context))340 if (unlikely(current->audit_context))
340 audit_syscall_exit(AUDITSC_RESULT(0), 0);341 __audit_syscall_exit(1, 0);
342#endif
341 343
342 __asm__ __volatile__(344 __asm__ __volatile__(
343 "movl %0,%%esp\n\t"345 "movl %0,%%esp\n\t"
arch/x86/kernel/xsave.c+4−8
@@ -47,7 +47,7 @@ void __sanitize_i387_state(struct task_struct *tsk) · 46 unmodified lines
47 if (!fx)47 if (!fx)
48 return;48 return;
49 49
50 BUG_ON(task_thread_info(tsk)->status & TS_USEDFPU);50 BUG_ON(__thread_has_fpu(tsk));
51 51
52 xstate_bv = tsk->thread.fpu.state->xsave.xsave_hdr.xstate_bv;52 xstate_bv = tsk->thread.fpu.state->xsave.xsave_hdr.xstate_bv;
53 53
@@ -168,7 +168,7 @@ int save_i387_xstate(void __user *buf) · 114 unmodified lines
168 if (!used_math())168 if (!used_math())
169 return 0;169 return 0;
170 170
171 if (task_thread_info(tsk)->status & TS_USEDFPU) {171 if (user_has_fpu()) {
172 if (use_xsave())172 if (use_xsave())
173 err = xsave_user(buf);173 err = xsave_user(buf);
174 else174 else
@@ -176,8 +176,7 @@ int save_i387_xstate(void __user *buf) · 1 unmodified line
176 176
177 if (err)177 if (err)
178 return err;178 return err;
179 task_thread_info(tsk)->status &= ~TS_USEDFPU;179 user_fpu_end();
180 stts();
181 } else {180 } else {
182 sanitize_i387_state(tsk);181 sanitize_i387_state(tsk);
183 if (__copy_to_user(buf, &tsk->thread.fpu.state->fxsave,182 if (__copy_to_user(buf, &tsk->thread.fpu.state->fxsave,
@@ -292,10 +291,7 @@ int restore_i387_xstate(void __user *buf) · 108 unmodified lines
292 return err;291 return err;
293 }292 }
294 293
295 if (!(task_thread_info(current)->status & TS_USEDFPU)) {294 user_fpu_begin();
296 clts();
297 task_thread_info(current)->status |= TS_USEDFPU;
298 }
299 if (use_xsave())295 if (use_xsave())
300 err = restore_user_xstate(buf);296 err = restore_user_xstate(buf);
301 else297 else
arch/x86/kvm/emulate.c+51−0
@@ -1891,6 +1891,51 @@ setup_syscalls_segments(struct x86_emulate_ctxt *ctxt, · 1890 unmodified lines
1891 ss->p = 1;1891 ss->p = 1;
1892}1892}
1893 1893
1894static bool em_syscall_is_enabled(struct x86_emulate_ctxt *ctxt)
1895{
1896 struct x86_emulate_ops *ops = ctxt->ops;
1897 u32 eax, ebx, ecx, edx;
1898
1899 /*
1900 * syscall should always be enabled in longmode - so only become
1901 * vendor specific (cpuid) if other modes are active...
1902 */
1903 if (ctxt->mode == X86EMUL_MODE_PROT64)
1904 return true;
1905
1906 eax = 0x00000000;
1907 ecx = 0x00000000;
1908 if (ops->get_cpuid(ctxt, &eax, &ebx, &ecx, &edx)) {
1909 /*
1910 * Intel ("GenuineIntel")
1911 * remark: Intel CPUs only support "syscall" in 64bit
1912 * longmode. Also an 64bit guest with a
1913 * 32bit compat-app running will #UD !! While this
1914 * behaviour can be fixed (by emulating) into AMD
1915 * response - CPUs of AMD can't behave like Intel.
1916 */
1917 if (ebx == X86EMUL_CPUID_VENDOR_GenuineIntel_ebx &&
1918 ecx == X86EMUL_CPUID_VENDOR_GenuineIntel_ecx &&
1919 edx == X86EMUL_CPUID_VENDOR_GenuineIntel_edx)
1920 return false;
1921
1922 /* AMD ("AuthenticAMD") */
1923 if (ebx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx &&
1924 ecx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx &&
1925 edx == X86EMUL_CPUID_VENDOR_AuthenticAMD_edx)
1926 return true;
1927
1928 /* AMD ("AMDisbetter!") */
1929 if (ebx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx &&
1930 ecx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx &&
1931 edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx)
1932 return true;
1933 }
1934
1935 /* default: (not Intel, not AMD), apply Intel's stricter rules... */
1936 return false;
1937}
1938
1894static int em_syscall(struct x86_emulate_ctxt *ctxt)1939static int em_syscall(struct x86_emulate_ctxt *ctxt)
1895{1940{
1896 struct x86_emulate_ops *ops = ctxt->ops;1941 struct x86_emulate_ops *ops = ctxt->ops;
@@ -1904,9 +1949,15 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt) · 7 unmodified lines
1904 ctxt->mode == X86EMUL_MODE_VM86)1949 ctxt->mode == X86EMUL_MODE_VM86)
1905 return emulate_ud(ctxt);1950 return emulate_ud(ctxt);
1906 1951
1952 if (!(em_syscall_is_enabled(ctxt)))
1953 return emulate_ud(ctxt);
1954
1907 ops->get_msr(ctxt, MSR_EFER, &efer);1955 ops->get_msr(ctxt, MSR_EFER, &efer);
1908 setup_syscalls_segments(ctxt, &cs, &ss);1956 setup_syscalls_segments(ctxt, &cs, &ss);
1909 1957
1958 if (!(efer & EFER_SCE))
1959 return emulate_ud(ctxt);
1960
1910 ops->get_msr(ctxt, MSR_STAR, &msr_data);1961 ops->get_msr(ctxt, MSR_STAR, &msr_data);
1911 msr_data >>= 32;1962 msr_data >>= 32;
1912 cs_sel = (u16)(msr_data & 0xfffc);1963 cs_sel = (u16)(msr_data & 0xfffc);
arch/x86/kvm/vmx.c+1−1
@@ -1457,7 +1457,7 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx) · 1456 unmodified lines
1457#ifdef CONFIG_X86_641457#ifdef CONFIG_X86_64
1458 wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base);1458 wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base);
1459#endif1459#endif
1460 if (current_thread_info()->status & TS_USEDFPU)1460 if (__thread_has_fpu(current))
1461 clts();1461 clts();
1462 load_gdt(&__get_cpu_var(host_gdt));1462 load_gdt(&__get_cpu_var(host_gdt));
1463}1463}
arch/x86/kvm/x86.c+45−0
@@ -1495,6 +1495,8 @@ static void record_steal_time(struct kvm_vcpu *vcpu) · 1494 unmodified lines
1495 1495
1496int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)1496int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
1497{1497{
1498 bool pr = false;
1499
1498 switch (msr) {1500 switch (msr) {
1499 case MSR_EFER:1501 case MSR_EFER:
1500 return set_efer(vcpu, data);1502 return set_efer(vcpu, data);
@@ -1635,6 +1637,18 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data) · 134 unmodified lines
1635 pr_unimpl(vcpu, "unimplemented perfctr wrmsr: "1637 pr_unimpl(vcpu, "unimplemented perfctr wrmsr: "
1636 "0x%x data 0x%llx\n", msr, data);1638 "0x%x data 0x%llx\n", msr, data);
1637 break;1639 break;
1640 case MSR_P6_PERFCTR0:
1641 case MSR_P6_PERFCTR1:
1642 pr = true;
1643 case MSR_P6_EVNTSEL0:
1644 case MSR_P6_EVNTSEL1:
1645 if (kvm_pmu_msr(vcpu, msr))
1646 return kvm_pmu_set_msr(vcpu, msr, data);
1647
1648 if (pr || data != 0)
1649 pr_unimpl(vcpu, "disabled perfctr wrmsr: "
1650 "0x%x data 0x%llx\n", msr, data);
1651 break;
1638 case MSR_K7_CLK_CTL:1652 case MSR_K7_CLK_CTL:
1639 /*1653 /*
1640 * Ignore all writes to this no longer documented MSR.1654 * Ignore all writes to this no longer documented MSR.
@@ -1835,6 +1849,14 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) · 194 unmodified lines
1835 case MSR_FAM10H_MMIO_CONF_BASE:1849 case MSR_FAM10H_MMIO_CONF_BASE:
1836 data = 0;1850 data = 0;
1837 break;1851 break;
1852 case MSR_P6_PERFCTR0:
1853 case MSR_P6_PERFCTR1:
1854 case MSR_P6_EVNTSEL0:
1855 case MSR_P6_EVNTSEL1:
1856 if (kvm_pmu_msr(vcpu, msr))
1857 return kvm_pmu_get_msr(vcpu, msr, pdata);
1858 data = 0;
1859 break;
1838 case MSR_IA32_UCODE_REV:1860 case MSR_IA32_UCODE_REV:
1839 data = 0x100000000ULL;1861 data = 0x100000000ULL;
1840 break;1862 break;
@@ -4180,6 +4202,28 @@ static int emulator_intercept(struct x86_emulate_ctxt *ctxt, · 2339 unmodified lines
4180 return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage);4202 return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage);
4181}4203}
4182 4204
4205static bool emulator_get_cpuid(struct x86_emulate_ctxt *ctxt,
4206 u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
4207{
4208 struct kvm_cpuid_entry2 *cpuid = NULL;
4209
4210 if (eax && ecx)
4211 cpuid = kvm_find_cpuid_entry(emul_to_vcpu(ctxt),
4212 *eax, *ecx);
4213
4214 if (cpuid) {
4215 *eax = cpuid->eax;
4216 *ecx = cpuid->ecx;
4217 if (ebx)
4218 *ebx = cpuid->ebx;
4219 if (edx)
4220 *edx = cpuid->edx;
4221 return true;
4222 }
4223
4224 return false;
4225}
4226
4183static struct x86_emulate_ops emulate_ops = {4227static struct x86_emulate_ops emulate_ops = {
4184 .read_std = kvm_read_guest_virt_system,4228 .read_std = kvm_read_guest_virt_system,
4185 .write_std = kvm_write_guest_virt_system,4229 .write_std = kvm_write_guest_virt_system,
@@ -4211,6 +4255,7 @@ static struct x86_emulate_ops emulate_ops = { · 25 unmodified lines
4211 .get_fpu = emulator_get_fpu,4255 .get_fpu = emulator_get_fpu,
4212 .put_fpu = emulator_put_fpu,4256 .put_fpu = emulator_put_fpu,
4213 .intercept = emulator_intercept,4257 .intercept = emulator_intercept,
4258 .get_cpuid = emulator_get_cpuid,
4214};4259};
4215 4260
4216static void cache_all_regs(struct kvm_vcpu *vcpu)4261static void cache_all_regs(struct kvm_vcpu *vcpu)
arch/x86/lib/x86-opcode-map.txt+5−3
@@ -219,7 +219,9 @@ ab: STOS/W/D/Q Yv,rAX · 218 unmodified lines
219ac: LODS/B AL,Xb219ac: LODS/B AL,Xb
220ad: LODS/W/D/Q rAX,Xv220ad: LODS/W/D/Q rAX,Xv
221ae: SCAS/B AL,Yb221ae: SCAS/B AL,Yb
222af: SCAS/W/D/Q rAX,Xv222# Note: The May 2011 Intel manual shows Xv for the second parameter of the
223# next instruction but Yv is correct
224af: SCAS/W/D/Q rAX,Yv
223# 0xb0 - 0xbf225# 0xb0 - 0xbf
224b0: MOV AL/R8L,Ib226b0: MOV AL/R8L,Ib
225b1: MOV CL/R9L,Ib227b1: MOV CL/R9L,Ib
@@ -729,8 +731,8 @@ de: VAESDEC Vdq,Hdq,Wdq (66),(v1) · 503 unmodified lines
729df: VAESDECLAST Vdq,Hdq,Wdq (66),(v1)731df: VAESDECLAST Vdq,Hdq,Wdq (66),(v1)
730f0: MOVBE Gy,My | MOVBE Gw,Mw (66) | CRC32 Gd,Eb (F2)732f0: MOVBE Gy,My | MOVBE Gw,Mw (66) | CRC32 Gd,Eb (F2)
731f1: MOVBE My,Gy | MOVBE Mw,Gw (66) | CRC32 Gd,Ey (F2)733f1: MOVBE My,Gy | MOVBE Mw,Gw (66) | CRC32 Gd,Ey (F2)
732f3: ANDN Gy,By,Ey (v)734f2: ANDN Gy,By,Ey (v)
733f4: Grp17 (1A)735f3: Grp17 (1A)
734f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)736f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)
735f6: MULX By,Gy,rDX,Ey (F2),(v)737f6: MULX By,Gy,rDX,Ey (F2),(v)
736f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)738f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)
arch/x86/mm/fault.c+2−2
@@ -673,7 +673,7 @@ no_context(struct pt_regs *regs, unsigned long error_code, · 672 unmodified lines
673 673
674 stackend = end_of_stack(tsk);674 stackend = end_of_stack(tsk);
675 if (tsk != &init_task && *stackend != STACK_END_MAGIC)675 if (tsk != &init_task && *stackend != STACK_END_MAGIC)
676 printk(KERN_ALERT "Thread overran stack, or stack corrupted\n");676 printk(KERN_EMERG "Thread overran stack, or stack corrupted\n");
677 677
678 tsk->thread.cr2 = address;678 tsk->thread.cr2 = address;
679 tsk->thread.trap_no = 14;679 tsk->thread.trap_no = 14;
@@ -684,7 +684,7 @@ no_context(struct pt_regs *regs, unsigned long error_code, · 4 unmodified lines
684 sig = 0;684 sig = 0;
685 685
686 /* Executive summary in case the body of the oops scrolled away */686 /* Executive summary in case the body of the oops scrolled away */
687 printk(KERN_EMERG "CR2: %016lx\n", address);687 printk(KERN_DEFAULT "CR2: %016lx\n", address);
688 688
689 oops_end(flags, regs, sig);689 oops_end(flags, regs, sig);
690}690}
arch/x86/mm/srat.c+4−0
@@ -109,6 +109,8 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) · 108 unmodified lines
109 if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)109 if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
110 return;110 return;
111 pxm = pa->proximity_domain_lo;111 pxm = pa->proximity_domain_lo;
112 if (acpi_srat_revision >= 2)
113 pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8;
112 node = setup_node(pxm);114 node = setup_node(pxm);
113 if (node < 0) {115 if (node < 0) {
114 printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);116 printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
@@ -160,6 +162,8 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) · 45 unmodified lines
160 start = ma->base_address;162 start = ma->base_address;
161 end = start + ma->length;163 end = start + ma->length;
162 pxm = ma->proximity_domain;164 pxm = ma->proximity_domain;
165 if (acpi_srat_revision <= 1)
166 pxm &= 0xff;
163 node = setup_node(pxm);167 node = setup_node(pxm);
164 if (node < 0) {168 if (node < 0) {
165 printk(KERN_ERR "SRAT: Too many proximity domains.\n");169 printk(KERN_ERR "SRAT: Too many proximity domains.\n");
arch/x86/net/bpf_jit_comp.c+22−14
@@ -151,17 +151,18 @@ void bpf_jit_compile(struct sk_filter *fp) · 150 unmodified lines
151 cleanup_addr = proglen; /* epilogue address */151 cleanup_addr = proglen; /* epilogue address */
152 152
153 for (pass = 0; pass < 10; pass++) {153 for (pass = 0; pass < 10; pass++) {
154 u8 seen_or_pass0 = (pass == 0) ? (SEEN_XREG | SEEN_DATAREF | SEEN_MEM) : seen;
154 /* no prologue/epilogue for trivial filters (RET something) */155 /* no prologue/epilogue for trivial filters (RET something) */
155 proglen = 0;156 proglen = 0;
156 prog = temp;157 prog = temp;
157 158
158 if (seen) {159 if (seen_or_pass0) {
159 EMIT4(0x55, 0x48, 0x89, 0xe5); /* push %rbp; mov %rsp,%rbp */160 EMIT4(0x55, 0x48, 0x89, 0xe5); /* push %rbp; mov %rsp,%rbp */
160 EMIT4(0x48, 0x83, 0xec, 96); /* subq $96,%rsp */161 EMIT4(0x48, 0x83, 0xec, 96); /* subq $96,%rsp */
161 /* note : must save %rbx in case bpf_error is hit */162 /* note : must save %rbx in case bpf_error is hit */
162 if (seen & (SEEN_XREG | SEEN_DATAREF))163 if (seen_or_pass0 & (SEEN_XREG | SEEN_DATAREF))
163 EMIT4(0x48, 0x89, 0x5d, 0xf8); /* mov %rbx, -8(%rbp) */164 EMIT4(0x48, 0x89, 0x5d, 0xf8); /* mov %rbx, -8(%rbp) */
164 if (seen & SEEN_XREG)165 if (seen_or_pass0 & SEEN_XREG)
165 CLEAR_X(); /* make sure we dont leek kernel memory */166 CLEAR_X(); /* make sure we dont leek kernel memory */
166 167
167 /*168 /*
@@ -170,7 +171,7 @@ void bpf_jit_compile(struct sk_filter *fp) · 2 unmodified lines
170 * r9 = skb->len - skb->data_len171 * r9 = skb->len - skb->data_len
171 * r8 = skb->data172 * r8 = skb->data
172 */173 */
173 if (seen & SEEN_DATAREF) {174 if (seen_or_pass0 & SEEN_DATAREF) {
174 if (offsetof(struct sk_buff, len) <= 127)175 if (offsetof(struct sk_buff, len) <= 127)
175 /* mov off8(%rdi),%r9d */176 /* mov off8(%rdi),%r9d */
176 EMIT4(0x44, 0x8b, 0x4f, offsetof(struct sk_buff, len));177 EMIT4(0x44, 0x8b, 0x4f, offsetof(struct sk_buff, len));
@@ -260,9 +261,14 @@ void bpf_jit_compile(struct sk_filter *fp) · 83 unmodified lines
260 case BPF_S_ALU_DIV_X: /* A /= X; */261 case BPF_S_ALU_DIV_X: /* A /= X; */
261 seen |= SEEN_XREG;262 seen |= SEEN_XREG;
262 EMIT2(0x85, 0xdb); /* test %ebx,%ebx */263 EMIT2(0x85, 0xdb); /* test %ebx,%ebx */
263 if (pc_ret0 != -1)264 if (pc_ret0 > 0) {
264 EMIT_COND_JMP(X86_JE, addrs[pc_ret0] - (addrs[i] - 4));265 /* addrs[pc_ret0 - 1] is start address of target
265 else {266 * (addrs[i] - 4) is the address following this jmp
267 * ("xor %edx,%edx; div %ebx" being 4 bytes long)
268 */
269 EMIT_COND_JMP(X86_JE, addrs[pc_ret0 - 1] -
270 (addrs[i] - 4));
271 } else {
266 EMIT_COND_JMP(X86_JNE, 2 + 5);272 EMIT_COND_JMP(X86_JNE, 2 + 5);
267 CLEAR_A();273 CLEAR_A();
268 EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 4)); /* jmp .+off32 */274 EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 4)); /* jmp .+off32 */
@@ -335,12 +341,12 @@ void bpf_jit_compile(struct sk_filter *fp) · 66 unmodified lines
335 }341 }
336 /* fallinto */342 /* fallinto */
337 case BPF_S_RET_A:343 case BPF_S_RET_A:
338 if (seen) {344 if (seen_or_pass0) {
339 if (i != flen - 1) {345 if (i != flen - 1) {
340 EMIT_JMP(cleanup_addr - addrs[i]);346 EMIT_JMP(cleanup_addr - addrs[i]);
341 break;347 break;
342 }348 }
343 if (seen & SEEN_XREG)349 if (seen_or_pass0 & SEEN_XREG)
344 EMIT4(0x48, 0x8b, 0x5d, 0xf8); /* mov -8(%rbp),%rbx */350 EMIT4(0x48, 0x8b, 0x5d, 0xf8); /* mov -8(%rbp),%rbx */
345 EMIT1(0xc9); /* leaveq */351 EMIT1(0xc9); /* leaveq */
346 }352 }
@@ -483,8 +489,9 @@ common_load: seen |= SEEN_DATAREF; · 136 unmodified lines
483 goto common_load;489 goto common_load;
484 case BPF_S_LDX_B_MSH:490 case BPF_S_LDX_B_MSH:
485 if ((int)K < 0) {491 if ((int)K < 0) {
486 if (pc_ret0 != -1) {492 if (pc_ret0 > 0) {
487 EMIT_JMP(addrs[pc_ret0] - addrs[i]);493 /* addrs[pc_ret0 - 1] is the start address */
494 EMIT_JMP(addrs[pc_ret0 - 1] - addrs[i]);
488 break;495 break;
489 }496 }
490 CLEAR_A();497 CLEAR_A();
@@ -599,13 +606,14 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; · 108 unmodified lines
599 * use it to give the cleanup instruction(s) addr606 * use it to give the cleanup instruction(s) addr
600 */607 */
601 cleanup_addr = proglen - 1; /* ret */608 cleanup_addr = proglen - 1; /* ret */
602 if (seen)609 if (seen_or_pass0)
603 cleanup_addr -= 1; /* leaveq */610 cleanup_addr -= 1; /* leaveq */
604 if (seen & SEEN_XREG)611 if (seen_or_pass0 & SEEN_XREG)
605 cleanup_addr -= 4; /* mov -8(%rbp),%rbx */612 cleanup_addr -= 4; /* mov -8(%rbp),%rbx */
606 613
607 if (image) {614 if (image) {
608 WARN_ON(proglen != oldproglen);615 if (proglen != oldproglen)
616 pr_err("bpb_jit_compile proglen=%u != oldproglen=%u\n", proglen, oldproglen);
609 break;617 break;
610 }618 }
611 if (proglen == oldproglen) {619 if (proglen == oldproglen) {
arch/x86/pci/xen.c+1−1
@@ -374,7 +374,7 @@ int __init pci_xen_init(void) · 373 unmodified lines
374 374
375int __init pci_xen_hvm_init(void)375int __init pci_xen_hvm_init(void)
376{376{
377 if (!xen_feature(XENFEAT_hvm_pirqs))377 if (!xen_have_vector_callback || !xen_feature(XENFEAT_hvm_pirqs))
378 return 0;378 return 0;
379 379
380#ifdef CONFIG_ACPI380#ifdef CONFIG_ACPI
arch/x86/platform/uv/tlb_uv.c+318−72
@@ -157,13 +157,14 @@ static int __init uvhub_to_first_apicid(int uvhub) · 156 unmodified lines
157 * clear of the Timeout bit (as well) will free the resource. No reply will157 * clear of the Timeout bit (as well) will free the resource. No reply will
158 * be sent (the hardware will only do one reply per message).158 * be sent (the hardware will only do one reply per message).
159 */159 */
160static void reply_to_message(struct msg_desc *mdp, struct bau_control *bcp)160static void reply_to_message(struct msg_desc *mdp, struct bau_control *bcp,
161 int do_acknowledge)
161{162{
162 unsigned long dw;163 unsigned long dw;
163 struct bau_pq_entry *msg;164 struct bau_pq_entry *msg;
164 165
165 msg = mdp->msg;166 msg = mdp->msg;
166 if (!msg->canceled) {167 if (!msg->canceled && do_acknowledge) {
167 dw = (msg->swack_vec << UV_SW_ACK_NPENDING) | msg->swack_vec;168 dw = (msg->swack_vec << UV_SW_ACK_NPENDING) | msg->swack_vec;
168 write_mmr_sw_ack(dw);169 write_mmr_sw_ack(dw);
169 }170 }
@@ -212,8 +213,8 @@ static void bau_process_retry_msg(struct msg_desc *mdp, · 42 unmodified lines
212 if (mmr & (msg_res << UV_SW_ACK_NPENDING)) {213 if (mmr & (msg_res << UV_SW_ACK_NPENDING)) {
213 unsigned long mr;214 unsigned long mr;
214 /*215 /*
215 * is the resource timed out?216 * Is the resource timed out?
216 * make everyone ignore the cancelled message.217 * Make everyone ignore the cancelled message.
217 */218 */
218 msg2->canceled = 1;219 msg2->canceled = 1;
219 stat->d_canceled++;220 stat->d_canceled++;
@@ -231,8 +232,8 @@ static void bau_process_retry_msg(struct msg_desc *mdp, · 11 unmodified lines
231 * Do all the things a cpu should do for a TLB shootdown message.232 * Do all the things a cpu should do for a TLB shootdown message.
232 * Other cpu's may come here at the same time for this message.233 * Other cpu's may come here at the same time for this message.
233 */234 */
234static void bau_process_message(struct msg_desc *mdp,235static void bau_process_message(struct msg_desc *mdp, struct bau_control *bcp,
235 struct bau_control *bcp)236 int do_acknowledge)
236{237{
237 short socket_ack_count = 0;238 short socket_ack_count = 0;
238 short *sp;239 short *sp;
@@ -284,8 +285,9 @@ static void bau_process_message(struct msg_desc *mdp, · 45 unmodified lines
284 if (msg_ack_count == bcp->cpus_in_uvhub) {285 if (msg_ack_count == bcp->cpus_in_uvhub) {
285 /*286 /*
286 * All cpus in uvhub saw it; reply287 * All cpus in uvhub saw it; reply
288 * (unless we are in the UV2 workaround)
287 */289 */
288 reply_to_message(mdp, bcp);290 reply_to_message(mdp, bcp, do_acknowledge);
289 }291 }
290 }292 }
291 293
@@ -491,27 +493,138 @@ static int uv1_wait_completion(struct bau_desc *bau_desc, · 199 unmodified lines
491/*493/*
492 * UV2 has an extra bit of status in the ACTIVATION_STATUS_2 register.494 * UV2 has an extra bit of status in the ACTIVATION_STATUS_2 register.
493 */495 */
494static unsigned long uv2_read_status(unsigned long offset, int rshft, int cpu)496static unsigned long uv2_read_status(unsigned long offset, int rshft, int desc)
495{497{
496 unsigned long descriptor_status;498 unsigned long descriptor_status;
497 unsigned long descriptor_status2;499 unsigned long descriptor_status2;
498 500
499 descriptor_status = ((read_lmmr(offset) >> rshft) & UV_ACT_STATUS_MASK);501 descriptor_status = ((read_lmmr(offset) >> rshft) & UV_ACT_STATUS_MASK);
500 descriptor_status2 = (read_mmr_uv2_status() >> cpu) & 0x1UL;502 descriptor_status2 = (read_mmr_uv2_status() >> desc) & 0x1UL;
501 descriptor_status = (descriptor_status << 1) | descriptor_status2;503 descriptor_status = (descriptor_status << 1) | descriptor_status2;
502 return descriptor_status;504 return descriptor_status;
503}505}
504 506
507/*
508 * Return whether the status of the descriptor that is normally used for this
509 * cpu (the one indexed by its hub-relative cpu number) is busy.
510 * The status of the original 32 descriptors is always reflected in the 64
511 * bits of UVH_LB_BAU_SB_ACTIVATION_STATUS_0.
512 * The bit provided by the activation_status_2 register is irrelevant to
513 * the status if it is only being tested for busy or not busy.
514 */
515int normal_busy(struct bau_control *bcp)
516{
517 int cpu = bcp->uvhub_cpu;
518 int mmr_offset;
519 int right_shift;
520
521 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;
522 right_shift = cpu * UV_ACT_STATUS_SIZE;
523 return (((((read_lmmr(mmr_offset) >> right_shift) &
524 UV_ACT_STATUS_MASK)) << 1) == UV2H_DESC_BUSY);
525}
526
527/*
528 * Entered when a bau descriptor has gone into a permanent busy wait because
529 * of a hardware bug.
530 * Workaround the bug.
531 */
532int handle_uv2_busy(struct bau_control *bcp)
533{
534 int busy_one = bcp->using_desc;
535 int normal = bcp->uvhub_cpu;
536 int selected = -1;
537 int i;
538 unsigned long descriptor_status;
539 unsigned long status;
540 int mmr_offset;
541 struct bau_desc *bau_desc_old;
542 struct bau_desc *bau_desc_new;
543 struct bau_control *hmaster = bcp->uvhub_master;
544 struct ptc_stats *stat = bcp->statp;
545 cycles_t ttm;
546
547 stat->s_uv2_wars++;
548 spin_lock(&hmaster->uvhub_lock);
549 /* try for the original first */
550 if (busy_one != normal) {
551 if (!normal_busy(bcp))
552 selected = normal;
553 }
554 if (selected < 0) {
555 /* can't use the normal, select an alternate */
556 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;
557 descriptor_status = read_lmmr(mmr_offset);
558
559 /* scan available descriptors 32-63 */
560 for (i = 0; i < UV_CPUS_PER_AS; i++) {
561 if ((hmaster->inuse_map & (1 << i)) == 0) {
562 status = ((descriptor_status >>
563 (i * UV_ACT_STATUS_SIZE)) &
564 UV_ACT_STATUS_MASK) << 1;
565 if (status != UV2H_DESC_BUSY) {
566 selected = i + UV_CPUS_PER_AS;
567 break;
568 }
569 }
570 }
571 }
572
573 if (busy_one != normal)
574 /* mark the busy alternate as not in-use */
575 hmaster->inuse_map &= ~(1 << (busy_one - UV_CPUS_PER_AS));
576
577 if (selected >= 0) {
578 /* switch to the selected descriptor */
579 if (selected != normal) {
580 /* set the selected alternate as in-use */
581 hmaster->inuse_map |=
582 (1 << (selected - UV_CPUS_PER_AS));
583 if (selected > stat->s_uv2_wars_hw)
584 stat->s_uv2_wars_hw = selected;
585 }
586 bau_desc_old = bcp->descriptor_base;
587 bau_desc_old += (ITEMS_PER_DESC * busy_one);
588 bcp->using_desc = selected;
589 bau_desc_new = bcp->descriptor_base;
590 bau_desc_new += (ITEMS_PER_DESC * selected);
591 *bau_desc_new = *bau_desc_old;
592 } else {
593 /*
594 * All are busy. Wait for the normal one for this cpu to
595 * free up.
596 */
597 stat->s_uv2_war_waits++;
598 spin_unlock(&hmaster->uvhub_lock);
599 ttm = get_cycles();
600 do {
601 cpu_relax();
602 } while (normal_busy(bcp));
603 spin_lock(&hmaster->uvhub_lock);
604 /* switch to the original descriptor */
605 bcp->using_desc = normal;
606 bau_desc_old = bcp->descriptor_base;
607 bau_desc_old += (ITEMS_PER_DESC * bcp->using_desc);
608 bcp->using_desc = (ITEMS_PER_DESC * normal);
609 bau_desc_new = bcp->descriptor_base;
610 bau_desc_new += (ITEMS_PER_DESC * normal);
611 *bau_desc_new = *bau_desc_old; /* copy the entire descriptor */
612 }
613 spin_unlock(&hmaster->uvhub_lock);
614 return FLUSH_RETRY_BUSYBUG;
615}
616
505static int uv2_wait_completion(struct bau_desc *bau_desc,617static int uv2_wait_completion(struct bau_desc *bau_desc,
506 unsigned long mmr_offset, int right_shift,618 unsigned long mmr_offset, int right_shift,
507 struct bau_control *bcp, long try)619 struct bau_control *bcp, long try)
508{620{
509 unsigned long descriptor_stat;621 unsigned long descriptor_stat;
510 cycles_t ttm;622 cycles_t ttm;
511 int cpu = bcp->uvhub_cpu;623 int desc = bcp->using_desc;
624 long busy_reps = 0;
512 struct ptc_stats *stat = bcp->statp;625 struct ptc_stats *stat = bcp->statp;
513 626
514 descriptor_stat = uv2_read_status(mmr_offset, right_shift, cpu);627 descriptor_stat = uv2_read_status(mmr_offset, right_shift, desc);
515 628
516 /* spin on the status MMR, waiting for it to go idle */629 /* spin on the status MMR, waiting for it to go idle */
517 while (descriptor_stat != UV2H_DESC_IDLE) {630 while (descriptor_stat != UV2H_DESC_IDLE) {
@@ -522,32 +635,35 @@ static int uv2_wait_completion(struct bau_desc *bau_desc, · 4 unmodified lines
522 * our message and its state will stay IDLE.635 * our message and its state will stay IDLE.
523 */636 */
524 if ((descriptor_stat == UV2H_DESC_SOURCE_TIMEOUT) ||637 if ((descriptor_stat == UV2H_DESC_SOURCE_TIMEOUT) ||
525 (descriptor_stat == UV2H_DESC_DEST_STRONG_NACK) ||
526 (descriptor_stat == UV2H_DESC_DEST_PUT_ERR)) {638 (descriptor_stat == UV2H_DESC_DEST_PUT_ERR)) {
527 stat->s_stimeout++;639 stat->s_stimeout++;
528 return FLUSH_GIVEUP;640 return FLUSH_GIVEUP;
641 } else if (descriptor_stat == UV2H_DESC_DEST_STRONG_NACK) {
642 stat->s_strongnacks++;
643 bcp->conseccompletes = 0;
644 return FLUSH_GIVEUP;
529 } else if (descriptor_stat == UV2H_DESC_DEST_TIMEOUT) {645 } else if (descriptor_stat == UV2H_DESC_DEST_TIMEOUT) {
530 stat->s_dtimeout++;646 stat->s_dtimeout++;
531 ttm = get_cycles();
532 /*
533 * Our retries may be blocked by all destination
534 * swack resources being consumed, and a timeout
535 * pending. In that case hardware returns the
536 * ERROR that looks like a destination timeout.
537 */
538 if (cycles_2_us(ttm - bcp->send_message) < timeout_us) {
539 bcp->conseccompletes = 0;
540 return FLUSH_RETRY_PLUGGED;
541 }
542 bcp->conseccompletes = 0;647 bcp->conseccompletes = 0;
543 return FLUSH_RETRY_TIMEOUT;648 return FLUSH_RETRY_TIMEOUT;
544 } else {649 } else {
650 busy_reps++;
651 if (busy_reps > 1000000) {
652 /* not to hammer on the clock */
653 busy_reps = 0;
654 ttm = get_cycles();
655 if ((ttm - bcp->send_message) >
656 (bcp->clocks_per_100_usec)) {
657 return handle_uv2_busy(bcp);
658 }
659 }
545 /*660 /*
546 * descriptor_stat is still BUSY661 * descriptor_stat is still BUSY
547 */662 */
548 cpu_relax();663 cpu_relax();
549 }664 }
550 descriptor_stat = uv2_read_status(mmr_offset, right_shift, cpu);665 descriptor_stat = uv2_read_status(mmr_offset, right_shift,
666 desc);
551 }667 }
552 bcp->conseccompletes++;668 bcp->conseccompletes++;
553 return FLUSH_COMPLETE;669 return FLUSH_COMPLETE;
@@ -563,17 +679,17 @@ static int wait_completion(struct bau_desc *bau_desc, · 9 unmodified lines
563{679{
564 int right_shift;680 int right_shift;
565 unsigned long mmr_offset;681 unsigned long mmr_offset;
566 int cpu = bcp->uvhub_cpu;682 int desc = bcp->using_desc;
567 683
568 if (cpu < UV_CPUS_PER_AS) {684 if (desc < UV_CPUS_PER_AS) {
569 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;685 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;
570 right_shift = cpu * UV_ACT_STATUS_SIZE;686 right_shift = desc * UV_ACT_STATUS_SIZE;
571 } else {687 } else {
572 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;688 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;
573 right_shift = ((cpu - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);689 right_shift = ((desc - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);
574 }690 }
575 691
576 if (is_uv1_hub())692 if (bcp->uvhub_version == 1)
577 return uv1_wait_completion(bau_desc, mmr_offset, right_shift,693 return uv1_wait_completion(bau_desc, mmr_offset, right_shift,
578 bcp, try);694 bcp, try);
579 else695 else
@@ -752,19 +868,22 @@ static void handle_cmplt(int completion_status, struct bau_desc *bau_desc, · 172 unmodified lines
752 * Returns 1 if it gives up entirely and the original cpu mask is to be868 * Returns 1 if it gives up entirely and the original cpu mask is to be
753 * returned to the kernel.869 * returned to the kernel.
754 */870 */
755int uv_flush_send_and_wait(struct bau_desc *bau_desc,871int uv_flush_send_and_wait(struct cpumask *flush_mask, struct bau_control *bcp)
756 struct cpumask *flush_mask, struct bau_control *bcp)
757{872{
758 int seq_number = 0;873 int seq_number = 0;
759 int completion_stat = 0;874 int completion_stat = 0;
875 int uv1 = 0;
760 long try = 0;876 long try = 0;
761 unsigned long index;877 unsigned long index;
762 cycles_t time1;878 cycles_t time1;
763 cycles_t time2;879 cycles_t time2;
764 struct ptc_stats *stat = bcp->statp;880 struct ptc_stats *stat = bcp->statp;
765 struct bau_control *hmaster = bcp->uvhub_master;881 struct bau_control *hmaster = bcp->uvhub_master;
882 struct uv1_bau_msg_header *uv1_hdr = NULL;
883 struct uv2_bau_msg_header *uv2_hdr = NULL;
884 struct bau_desc *bau_desc;
766 885
767 if (is_uv1_hub())886 if (bcp->uvhub_version == 1)
768 uv1_throttle(hmaster, stat);887 uv1_throttle(hmaster, stat);
769 888
770 while (hmaster->uvhub_quiesce)889 while (hmaster->uvhub_quiesce)
@@ -772,22 +891,39 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc, · 1 unmodified line
772 891
773 time1 = get_cycles();892 time1 = get_cycles();
774 do {893 do {
775 if (try == 0) {894 bau_desc = bcp->descriptor_base;
776 bau_desc->header.msg_type = MSG_REGULAR;895 bau_desc += (ITEMS_PER_DESC * bcp->using_desc);
896 if (bcp->uvhub_version == 1) {
897 uv1 = 1;
898 uv1_hdr = &bau_desc->header.uv1_hdr;
899 } else
900 uv2_hdr = &bau_desc->header.uv2_hdr;
901 if ((try == 0) || (completion_stat == FLUSH_RETRY_BUSYBUG)) {
902 if (uv1)
903 uv1_hdr->msg_type = MSG_REGULAR;
904 else
905 uv2_hdr->msg_type = MSG_REGULAR;
777 seq_number = bcp->message_number++;906 seq_number = bcp->message_number++;
778 } else {907 } else {
779 bau_desc->header.msg_type = MSG_RETRY;908 if (uv1)
909 uv1_hdr->msg_type = MSG_RETRY;
910 else
911 uv2_hdr->msg_type = MSG_RETRY;
780 stat->s_retry_messages++;912 stat->s_retry_messages++;
781 }913 }
782 914
783 bau_desc->header.sequence = seq_number;915 if (uv1)
784 index = (1UL << AS_PUSH_SHIFT) | bcp->uvhub_cpu;916 uv1_hdr->sequence = seq_number;
917 else
918 uv2_hdr->sequence = seq_number;
919 index = (1UL << AS_PUSH_SHIFT) | bcp->using_desc;
785 bcp->send_message = get_cycles();920 bcp->send_message = get_cycles();
786 921
787 write_mmr_activation(index);922 write_mmr_activation(index);
788 923
789 try++;924 try++;
790 completion_stat = wait_completion(bau_desc, bcp, try);925 completion_stat = wait_completion(bau_desc, bcp, try);
926 /* UV2: wait_completion() may change the bcp->using_desc */
791 927
792 handle_cmplt(completion_stat, bau_desc, bcp, hmaster, stat);928 handle_cmplt(completion_stat, bau_desc, bcp, hmaster, stat);
793 929
@@ -798,6 +934,7 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc, · 4 unmodified lines
798 }934 }
799 cpu_relax();935 cpu_relax();
800 } while ((completion_stat == FLUSH_RETRY_PLUGGED) ||936 } while ((completion_stat == FLUSH_RETRY_PLUGGED) ||
937 (completion_stat == FLUSH_RETRY_BUSYBUG) ||
801 (completion_stat == FLUSH_RETRY_TIMEOUT));938 (completion_stat == FLUSH_RETRY_TIMEOUT));
802 939
803 time2 = get_cycles();940 time2 = get_cycles();
@@ -812,6 +949,7 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc, · 8 unmodified lines
812 record_send_stats(time1, time2, bcp, stat, completion_stat, try);949 record_send_stats(time1, time2, bcp, stat, completion_stat, try);
813 950
814 if (completion_stat == FLUSH_GIVEUP)951 if (completion_stat == FLUSH_GIVEUP)
952 /* FLUSH_GIVEUP will fall back to using IPI's for tlb flush */
815 return 1;953 return 1;
816 return 0;954 return 0;
817}955}
@@ -967,7 +1105,7 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, · 149 unmodified lines
967 stat->s_ntargself++;1105 stat->s_ntargself++;
968 1106
969 bau_desc = bcp->descriptor_base;1107 bau_desc = bcp->descriptor_base;
970 bau_desc += ITEMS_PER_DESC * bcp->uvhub_cpu;1108 bau_desc += (ITEMS_PER_DESC * bcp->using_desc);
971 bau_uvhubs_clear(&bau_desc->distribution, UV_DISTRIBUTION_SIZE);1109 bau_uvhubs_clear(&bau_desc->distribution, UV_DISTRIBUTION_SIZE);
972 if (set_distrib_bits(flush_mask, bcp, bau_desc, &locals, &remotes))1110 if (set_distrib_bits(flush_mask, bcp, bau_desc, &locals, &remotes))
973 return NULL;1111 return NULL;
@@ -980,12 +1118,85 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, · 6 unmodified lines
980 * uv_flush_send_and_wait returns 0 if all cpu's were messaged,1118 * uv_flush_send_and_wait returns 0 if all cpu's were messaged,
981 * or 1 if it gave up and the original cpumask should be returned.1119 * or 1 if it gave up and the original cpumask should be returned.
982 */1120 */
983 if (!uv_flush_send_and_wait(bau_desc, flush_mask, bcp))1121 if (!uv_flush_send_and_wait(flush_mask, bcp))
984 return NULL;1122 return NULL;
985 else1123 else
986 return cpumask;1124 return cpumask;
987}1125}
988 1126
1127/*
1128 * Search the message queue for any 'other' message with the same software
1129 * acknowledge resource bit vector.
1130 */
1131struct bau_pq_entry *find_another_by_swack(struct bau_pq_entry *msg,
1132 struct bau_control *bcp, unsigned char swack_vec)
1133{
1134 struct bau_pq_entry *msg_next = msg + 1;
1135
1136 if (msg_next > bcp->queue_last)
1137 msg_next = bcp->queue_first;
1138 while ((msg_next->swack_vec != 0) && (msg_next != msg)) {
1139 if (msg_next->swack_vec == swack_vec)
1140 return msg_next;
1141 msg_next++;
1142 if (msg_next > bcp->queue_last)
1143 msg_next = bcp->queue_first;
1144 }
1145 return NULL;
1146}
1147
1148/*
1149 * UV2 needs to work around a bug in which an arriving message has not
1150 * set a bit in the UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE register.
1151 * Such a message must be ignored.
1152 */
1153void process_uv2_message(struct msg_desc *mdp, struct bau_control *bcp)
1154{
1155 unsigned long mmr_image;
1156 unsigned char swack_vec;
1157 struct bau_pq_entry *msg = mdp->msg;
1158 struct bau_pq_entry *other_msg;
1159
1160 mmr_image = read_mmr_sw_ack();
1161 swack_vec = msg->swack_vec;
1162
1163 if ((swack_vec & mmr_image) == 0) {
1164 /*
1165 * This message was assigned a swack resource, but no
1166 * reserved acknowlegment is pending.
1167 * The bug has prevented this message from setting the MMR.
1168 * And no other message has used the same sw_ack resource.
1169 * Do the requested shootdown but do not reply to the msg.
1170 * (the 0 means make no acknowledge)
1171 */
1172 bau_process_message(mdp, bcp, 0);
1173 return;
1174 }
1175
1176 /*
1177 * Some message has set the MMR 'pending' bit; it might have been
1178 * another message. Look for that message.
1179 */
1180 other_msg = find_another_by_swack(msg, bcp, msg->swack_vec);
1181 if (other_msg) {
1182 /* There is another. Do not ack the current one. */
1183 bau_process_message(mdp, bcp, 0);
1184 /*
1185 * Let the natural processing of that message acknowledge
1186 * it. Don't get the processing of sw_ack's out of order.
1187 */
1188 return;
1189 }
1190
1191 /*
1192 * There is no other message using this sw_ack, so it is safe to
1193 * acknowledge it.
1194 */
1195 bau_process_message(mdp, bcp, 1);
1196
1197 return;
1198}
1199
989/*1200/*
990 * The BAU message interrupt comes here. (registered by set_intr_gate)1201 * The BAU message interrupt comes here. (registered by set_intr_gate)
991 * See entry_64.S1202 * See entry_64.S
@@ -1009,6 +1220,7 @@ void uv_bau_message_interrupt(struct pt_regs *regs) · 17 unmodified lines
1009 struct ptc_stats *stat;1220 struct ptc_stats *stat;
1010 struct msg_desc msgdesc;1221 struct msg_desc msgdesc;
1011 1222
1223 ack_APIC_irq();
1012 time_start = get_cycles();1224 time_start = get_cycles();
1013 1225
1014 bcp = &per_cpu(bau_control, smp_processor_id());1226 bcp = &per_cpu(bau_control, smp_processor_id());
@@ -1022,9 +1234,11 @@ void uv_bau_message_interrupt(struct pt_regs *regs) · 7 unmodified lines
1022 count++;1234 count++;
1023 1235
1024 msgdesc.msg_slot = msg - msgdesc.queue_first;1236 msgdesc.msg_slot = msg - msgdesc.queue_first;
1025 msgdesc.swack_slot = ffs(msg->swack_vec) - 1;
1026 msgdesc.msg = msg;1237 msgdesc.msg = msg;
1027 bau_process_message(&msgdesc, bcp);1238 if (bcp->uvhub_version == 2)
1239 process_uv2_message(&msgdesc, bcp);
1240 else
1241 bau_process_message(&msgdesc, bcp, 1);
1028 1242
1029 msg++;1243 msg++;
1030 if (msg > msgdesc.queue_last)1244 if (msg > msgdesc.queue_last)
@@ -1036,8 +1250,6 @@ void uv_bau_message_interrupt(struct pt_regs *regs) · 5 unmodified lines
1036 stat->d_nomsg++;1250 stat->d_nomsg++;
1037 else if (count > 1)1251 else if (count > 1)
1038 stat->d_multmsg++;1252 stat->d_multmsg++;
1039
1040 ack_APIC_irq();
1041}1253}
1042 1254
1043/*1255/*
@@ -1083,7 +1295,7 @@ static void __init enable_timeouts(void) · 39 unmodified lines
1083 */1295 */
1084 mmr_image |= (1L << SOFTACK_MSHIFT);1296 mmr_image |= (1L << SOFTACK_MSHIFT);
1085 if (is_uv2_hub()) {1297 if (is_uv2_hub()) {
1086 mmr_image |= (1L << UV2_LEG_SHFT);1298 mmr_image &= ~(1L << UV2_LEG_SHFT);
1087 mmr_image |= (1L << UV2_EXT_SHFT);1299 mmr_image |= (1L << UV2_EXT_SHFT);
1088 }1300 }
1089 write_mmr_misc_control(pnode, mmr_image);1301 write_mmr_misc_control(pnode, mmr_image);
@@ -1136,13 +1348,13 @@ static int ptc_seq_show(struct seq_file *file, void *data) · 46 unmodified lines
1136 seq_printf(file,1348 seq_printf(file,
1137 "remotehub numuvhubs numuvhubs16 numuvhubs8 ");1349 "remotehub numuvhubs numuvhubs16 numuvhubs8 ");
1138 seq_printf(file,1350 seq_printf(file,
1139 "numuvhubs4 numuvhubs2 numuvhubs1 dto retries rok ");1351 "numuvhubs4 numuvhubs2 numuvhubs1 dto snacks retries rok ");
1140 seq_printf(file,1352 seq_printf(file,
1141 "resetp resett giveup sto bz throt swack recv rtime ");1353 "resetp resett giveup sto bz throt swack recv rtime ");
1142 seq_printf(file,1354 seq_printf(file,
1143 "all one mult none retry canc nocan reset rcan ");1355 "all one mult none retry canc nocan reset rcan ");
1144 seq_printf(file,1356 seq_printf(file,
1145 "disable enable\n");1357 "disable enable wars warshw warwaits\n");
1146 }1358 }
1147 if (cpu < num_possible_cpus() && cpu_online(cpu)) {1359 if (cpu < num_possible_cpus() && cpu_online(cpu)) {
1148 stat = &per_cpu(ptcstats, cpu);1360 stat = &per_cpu(ptcstats, cpu);
@@ -1154,10 +1366,10 @@ static int ptc_seq_show(struct seq_file *file, void *data) · 5 unmodified lines
1154 stat->s_ntargremotes, stat->s_ntargcpu,1366 stat->s_ntargremotes, stat->s_ntargcpu,
1155 stat->s_ntarglocaluvhub, stat->s_ntargremoteuvhub,1367 stat->s_ntarglocaluvhub, stat->s_ntargremoteuvhub,
1156 stat->s_ntarguvhub, stat->s_ntarguvhub16);1368 stat->s_ntarguvhub, stat->s_ntarguvhub16);
1157 seq_printf(file, "%ld %ld %ld %ld %ld ",1369 seq_printf(file, "%ld %ld %ld %ld %ld %ld ",
1158 stat->s_ntarguvhub8, stat->s_ntarguvhub4,1370 stat->s_ntarguvhub8, stat->s_ntarguvhub4,
1159 stat->s_ntarguvhub2, stat->s_ntarguvhub1,1371 stat->s_ntarguvhub2, stat->s_ntarguvhub1,
1160 stat->s_dtimeout);1372 stat->s_dtimeout, stat->s_strongnacks);
1161 seq_printf(file, "%ld %ld %ld %ld %ld %ld %ld %ld ",1373 seq_printf(file, "%ld %ld %ld %ld %ld %ld %ld %ld ",
1162 stat->s_retry_messages, stat->s_retriesok,1374 stat->s_retry_messages, stat->s_retriesok,
1163 stat->s_resets_plug, stat->s_resets_timeout,1375 stat->s_resets_plug, stat->s_resets_timeout,
@@ -1173,8 +1385,10 @@ static int ptc_seq_show(struct seq_file *file, void *data) · 9 unmodified lines
1173 stat->d_nomsg, stat->d_retries, stat->d_canceled,1385 stat->d_nomsg, stat->d_retries, stat->d_canceled,
1174 stat->d_nocanceled, stat->d_resets,1386 stat->d_nocanceled, stat->d_resets,
1175 stat->d_rcanceled);1387 stat->d_rcanceled);
1176 seq_printf(file, "%ld %ld\n",1388 seq_printf(file, "%ld %ld %ld %ld %ld\n",
1177 stat->s_bau_disabled, stat->s_bau_reenabled);1389 stat->s_bau_disabled, stat->s_bau_reenabled,
1390 stat->s_uv2_wars, stat->s_uv2_wars_hw,
1391 stat->s_uv2_war_waits);
1178 }1392 }
1179 return 0;1393 return 0;
1180}1394}
@@ -1432,12 +1646,15 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode) · 251 unmodified lines
1432{1646{
1433 int i;1647 int i;
1434 int cpu;1648 int cpu;
1649 int uv1 = 0;
1435 unsigned long gpa;1650 unsigned long gpa;
1436 unsigned long m;1651 unsigned long m;
1437 unsigned long n;1652 unsigned long n;
1438 size_t dsize;1653 size_t dsize;
1439 struct bau_desc *bau_desc;1654 struct bau_desc *bau_desc;
1440 struct bau_desc *bd2;1655 struct bau_desc *bd2;
1656 struct uv1_bau_msg_header *uv1_hdr;
1657 struct uv2_bau_msg_header *uv2_hdr;
1441 struct bau_control *bcp;1658 struct bau_control *bcp;
1442 1659
1443 /*1660 /*
@@ -1451,6 +1668,8 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode) · 7 unmodified lines
1451 gpa = uv_gpa(bau_desc);1668 gpa = uv_gpa(bau_desc);
1452 n = uv_gpa_to_gnode(gpa);1669 n = uv_gpa_to_gnode(gpa);
1453 m = uv_gpa_to_offset(gpa);1670 m = uv_gpa_to_offset(gpa);
1671 if (is_uv1_hub())
1672 uv1 = 1;
1454 1673
1455 /* the 14-bit pnode */1674 /* the 14-bit pnode */
1456 write_mmr_descriptor_base(pnode, (n << UV_DESC_PSHIFT | m));1675 write_mmr_descriptor_base(pnode, (n << UV_DESC_PSHIFT | m));
@@ -1461,21 +1680,33 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode) · 4 unmodified lines
1461 */1680 */
1462 for (i = 0, bd2 = bau_desc; i < (ADP_SZ * ITEMS_PER_DESC); i++, bd2++) {1681 for (i = 0, bd2 = bau_desc; i < (ADP_SZ * ITEMS_PER_DESC); i++, bd2++) {
1463 memset(bd2, 0, sizeof(struct bau_desc));1682 memset(bd2, 0, sizeof(struct bau_desc));
1464 bd2->header.swack_flag = 1;1683 if (uv1) {
1465 /*1684 uv1_hdr = &bd2->header.uv1_hdr;
1466 * The base_dest_nasid set in the message header is the nasid1685 uv1_hdr->swack_flag = 1;
1467 * of the first uvhub in the partition. The bit map will1686 /*
1468 * indicate destination pnode numbers relative to that base.1687 * The base_dest_nasid set in the message header
1469 * They may not be consecutive if nasid striding is being used.1688 * is the nasid of the first uvhub in the partition.
1470 */1689 * The bit map will indicate destination pnode numbers
1471 bd2->header.base_dest_nasid = UV_PNODE_TO_NASID(base_pnode);1690 * relative to that base. They may not be consecutive
1472 bd2->header.dest_subnodeid = UV_LB_SUBNODEID;1691 * if nasid striding is being used.
1473 bd2->header.command = UV_NET_ENDPOINT_INTD;1692 */
1474 bd2->header.int_both = 1;1693 uv1_hdr->base_dest_nasid =
1475 /*1694 UV_PNODE_TO_NASID(base_pnode);
1476 * all others need to be set to zero:1695 uv1_hdr->dest_subnodeid = UV_LB_SUBNODEID;
1477 * fairness chaining multilevel count replied_to1696 uv1_hdr->command = UV_NET_ENDPOINT_INTD;
1478 */1697 uv1_hdr->int_both = 1;
1698 /*
1699 * all others need to be set to zero:
1700 * fairness chaining multilevel count replied_to
1701 */
1702 } else {
1703 uv2_hdr = &bd2->header.uv2_hdr;
1704 uv2_hdr->swack_flag = 1;
1705 uv2_hdr->base_dest_nasid =
1706 UV_PNODE_TO_NASID(base_pnode);
1707 uv2_hdr->dest_subnodeid = UV_LB_SUBNODEID;
1708 uv2_hdr->command = UV_NET_ENDPOINT_INTD;
1709 }
1479 }1710 }
1480 for_each_present_cpu(cpu) {1711 for_each_present_cpu(cpu) {
1481 if (pnode != uv_blade_to_pnode(uv_cpu_to_blade_id(cpu)))1712 if (pnode != uv_blade_to_pnode(uv_cpu_to_blade_id(cpu)))
@@ -1531,6 +1762,7 @@ static void pq_init(int node, int pnode) · 49 unmodified lines
1531 write_mmr_payload_first(pnode, pn_first);1762 write_mmr_payload_first(pnode, pn_first);
1532 write_mmr_payload_tail(pnode, first);1763 write_mmr_payload_tail(pnode, first);
1533 write_mmr_payload_last(pnode, last);1764 write_mmr_payload_last(pnode, last);
1765 write_gmmr_sw_ack(pnode, 0xffffUL);
1534 1766
1535 /* in effect, all msg_type's are set to MSG_NOOP */1767 /* in effect, all msg_type's are set to MSG_NOOP */
1536 memset(pqp, 0, sizeof(struct bau_pq_entry) * DEST_Q_SIZE);1768 memset(pqp, 0, sizeof(struct bau_pq_entry) * DEST_Q_SIZE);
@@ -1584,14 +1816,14 @@ static int calculate_destination_timeout(void) · 47 unmodified lines
1584 ts_ns = base * mult1 * mult2;1816 ts_ns = base * mult1 * mult2;
1585 ret = ts_ns / 1000;1817 ret = ts_ns / 1000;
1586 } else {1818 } else {
1587 /* 4 bits 0/1 for 10/80us, 3 bits of multiplier */1819 /* 4 bits 0/1 for 10/80us base, 3 bits of multiplier */
1588 mmr_image = uv_read_local_mmr(UVH_AGING_PRESCALE_SEL);1820 mmr_image = uv_read_local_mmr(UVH_LB_BAU_MISC_CONTROL);
1589 mmr_image = (mmr_image & UV_SA_MASK) >> UV_SA_SHFT;1821 mmr_image = (mmr_image & UV_SA_MASK) >> UV_SA_SHFT;
1590 if (mmr_image & (1L << UV2_ACK_UNITS_SHFT))1822 if (mmr_image & (1L << UV2_ACK_UNITS_SHFT))
1591 mult1 = 80;1823 base = 80;
1592 else1824 else
1593 mult1 = 10;1825 base = 10;
1594 base = mmr_image & UV2_ACK_MASK;1826 mult1 = mmr_image & UV2_ACK_MASK;
1595 ret = mult1 * base;1827 ret = mult1 * base;
1596 }1828 }
1597 return ret;1829 return ret;
@@ -1618,6 +1850,9 @@ static void __init init_per_cpu_tunables(void) · 20 unmodified lines
1618 bcp->cong_response_us = congested_respns_us;1850 bcp->cong_response_us = congested_respns_us;
1619 bcp->cong_reps = congested_reps;1851 bcp->cong_reps = congested_reps;
1620 bcp->cong_period = congested_period;1852 bcp->cong_period = congested_period;
1853 bcp->clocks_per_100_usec = usec_2_cycles(100);
1854 spin_lock_init(&bcp->queue_lock);
1855 spin_lock_init(&bcp->uvhub_lock);
1621 }1856 }
1622}1857}
1623 1858
@@ -1728,8 +1963,17 @@ static int scan_sock(struct socket_desc *sdp, struct uvhub_desc *bdp, · 104 unmodified lines
1728 bcp->cpus_in_socket = sdp->num_cpus;1963 bcp->cpus_in_socket = sdp->num_cpus;
1729 bcp->socket_master = *smasterp;1964 bcp->socket_master = *smasterp;
1730 bcp->uvhub = bdp->uvhub;1965 bcp->uvhub = bdp->uvhub;
1966 if (is_uv1_hub())
1967 bcp->uvhub_version = 1;
1968 else if (is_uv2_hub())
1969 bcp->uvhub_version = 2;
1970 else {
1971 printk(KERN_EMERG "uvhub version not 1 or 2\n");
1972 return 1;
1973 }
1731 bcp->uvhub_master = *hmasterp;1974 bcp->uvhub_master = *hmasterp;
1732 bcp->uvhub_cpu = uv_cpu_hub_info(cpu)->blade_processor_id;1975 bcp->uvhub_cpu = uv_cpu_hub_info(cpu)->blade_processor_id;
1976 bcp->using_desc = bcp->uvhub_cpu;
1733 if (bcp->uvhub_cpu >= MAX_CPUS_PER_UVHUB) {1977 if (bcp->uvhub_cpu >= MAX_CPUS_PER_UVHUB) {
1734 printk(KERN_EMERG "%d cpus per uvhub invalid\n",1978 printk(KERN_EMERG "%d cpus per uvhub invalid\n",
1735 bcp->uvhub_cpu);1979 bcp->uvhub_cpu);
@@ -1845,6 +2089,8 @@ static int __init uv_bau_init(void) · 109 unmodified lines
1845 uv_base_pnode = uv_blade_to_pnode(uvhub);2089 uv_base_pnode = uv_blade_to_pnode(uvhub);
1846 }2090 }
1847 2091
2092 enable_timeouts();
2093
1848 if (init_per_cpu(nuvhubs, uv_base_pnode)) {2094 if (init_per_cpu(nuvhubs, uv_base_pnode)) {
1849 nobau = 1;2095 nobau = 1;
1850 return 0;2096 return 0;
@@ -1855,7 +2101,6 @@ static int __init uv_bau_init(void) · 4 unmodified lines
1855 if (uv_blade_nr_possible_cpus(uvhub))2101 if (uv_blade_nr_possible_cpus(uvhub))
1856 init_uvhub(uvhub, vector, uv_base_pnode);2102 init_uvhub(uvhub, vector, uv_base_pnode);
1857 2103
1858 enable_timeouts();
1859 alloc_intr_gate(vector, uv_bau_message_intr1);2104 alloc_intr_gate(vector, uv_bau_message_intr1);
1860 2105
1861 for_each_possible_blade(uvhub) {2106 for_each_possible_blade(uvhub) {
@@ -1867,7 +2112,8 @@ static int __init uv_bau_init(void) · 5 unmodified lines
1867 val = 1L << 63;2112 val = 1L << 63;
1868 write_gmmr_activation(pnode, val);2113 write_gmmr_activation(pnode, val);
1869 mmr = 1; /* should be 1 to broadcast to both sockets */2114 mmr = 1; /* should be 1 to broadcast to both sockets */
1870 write_mmr_data_broadcast(pnode, mmr);2115 if (!is_uv1_hub())
2116 write_mmr_data_broadcast(pnode, mmr);
1871 }2117 }
1872 }2118 }
1873 2119
arch/x86/platform/uv/uv_irq.c+1−1
@@ -25,7 +25,7 @@ struct uv_irq_2_mmr_pnode{ · 24 unmodified lines
25 int irq;25 int irq;
26};26};
27 27
28static spinlock_t uv_irq_lock;28static DEFINE_SPINLOCK(uv_irq_lock);
29static struct rb_root uv_irq_root;29static struct rb_root uv_irq_root;
30 30
31static int uv_set_irq_affinity(struct irq_data *, const struct cpumask *, bool);31static int uv_set_irq_affinity(struct irq_data *, const struct cpumask *, bool);
arch/x86/um/shared/sysdep/ptrace.h+10−0
@@ -1,5 +1,15 @@
1#ifndef __SYSDEP_X86_PTRACE_H
2#define __SYSDEP_X86_PTRACE_H
3
1#ifdef __i386__4#ifdef __i386__
2#include "ptrace_32.h"5#include "ptrace_32.h"
3#else6#else
4#include "ptrace_64.h"7#include "ptrace_64.h"
5#endif8#endif
9
10static inline long regs_return_value(struct uml_pt_regs *regs)
11{
12 return UPT_SYSCALL_RET(regs);
13}
14
15#endif /* __SYSDEP_X86_PTRACE_H */
arch/x86/xen/smp.c+7−0
@@ -409,6 +409,13 @@ static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */ · 408 unmodified lines
409 play_dead_common();409 play_dead_common();
410 HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);410 HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
411 cpu_bringup();411 cpu_bringup();
412 /*
413 * Balance out the preempt calls - as we are running in cpu_idle
414 * loop which has been called at bootup from cpu_bringup_and_idle.
415 * The cpucpu_bringup_and_idle called cpu_bringup which made a
416 * preempt_disable() So this preempt_enable will balance it out.
417 */
418 preempt_enable();
412}419}
413 420
414#else /* !CONFIG_HOTPLUG_CPU */421#else /* !CONFIG_HOTPLUG_CPU */
arch/x86/xen/spinlock.c+22−5
@@ -116,9 +116,26 @@ static inline void spin_time_accum_blocked(u64 start) · 115 unmodified lines
116}116}
117#endif /* CONFIG_XEN_DEBUG_FS */117#endif /* CONFIG_XEN_DEBUG_FS */
118 118
119/*
120 * Size struct xen_spinlock so it's the same as arch_spinlock_t.
121 */
122#if NR_CPUS < 256
123typedef u8 xen_spinners_t;
124# define inc_spinners(xl) \
125 asm(LOCK_PREFIX " incb %0" : "+m" ((xl)->spinners) : : "memory");
126# define dec_spinners(xl) \
127 asm(LOCK_PREFIX " decb %0" : "+m" ((xl)->spinners) : : "memory");
128#else
129typedef u16 xen_spinners_t;
130# define inc_spinners(xl) \
131 asm(LOCK_PREFIX " incw %0" : "+m" ((xl)->spinners) : : "memory");
132# define dec_spinners(xl) \
133 asm(LOCK_PREFIX " decw %0" : "+m" ((xl)->spinners) : : "memory");
134#endif
135
119struct xen_spinlock {136struct xen_spinlock {
120 unsigned char lock; /* 0 -> free; 1 -> locked */137 unsigned char lock; /* 0 -> free; 1 -> locked */
121 unsigned short spinners; /* count of waiting cpus */138 xen_spinners_t spinners; /* count of waiting cpus */
122};139};
123 140
124static int xen_spin_is_locked(struct arch_spinlock *lock)141static int xen_spin_is_locked(struct arch_spinlock *lock)
@@ -164,8 +181,7 @@ static inline struct xen_spinlock *spinning_lock(struct xen_spinlock *xl) · 39 unmodified lines
164 181
165 wmb(); /* set lock of interest before count */182 wmb(); /* set lock of interest before count */
166 183
167 asm(LOCK_PREFIX " incw %0"184 inc_spinners(xl);
168 : "+m" (xl->spinners) : : "memory");
169 185
170 return prev;186 return prev;
171}187}
@@ -176,8 +192,7 @@ static inline struct xen_spinlock *spinning_lock(struct xen_spinlock *xl) · 4 unmodified lines
176 */192 */
177static inline void unspinning_lock(struct xen_spinlock *xl, struct xen_spinlock *prev)193static inline void unspinning_lock(struct xen_spinlock *xl, struct xen_spinlock *prev)
178{194{
179 asm(LOCK_PREFIX " decw %0"195 dec_spinners(xl);
180 : "+m" (xl->spinners) : : "memory");
181 wmb(); /* decrement count before restoring lock */196 wmb(); /* decrement count before restoring lock */
182 __this_cpu_write(lock_spinners, prev);197 __this_cpu_write(lock_spinners, prev);
183}198}
@@ -373,6 +388,8 @@ void xen_uninit_lock_cpu(int cpu) · 189 unmodified lines
373 388
374void __init xen_init_spinlocks(void)389void __init xen_init_spinlocks(void)
375{390{
391 BUILD_BUG_ON(sizeof(struct xen_spinlock) > sizeof(arch_spinlock_t));
392
376 pv_lock_ops.spin_is_locked = xen_spin_is_locked;393 pv_lock_ops.spin_is_locked = xen_spin_is_locked;
377 pv_lock_ops.spin_is_contended = xen_spin_is_contended;394 pv_lock_ops.spin_is_contended = xen_spin_is_contended;
378 pv_lock_ops.spin_lock = xen_spin_lock;395 pv_lock_ops.spin_lock = xen_spin_lock;
arch/xtensa/include/asm/string.h+0−3
@@ -118,7 +118,4 @@ extern void *memmove(void *__dest, __const__ void *__src, size_t __n); · 117 unmodified lines
118/* Don't build bcopy at all ... */118/* Don't build bcopy at all ... */
119#define __HAVE_ARCH_BCOPY119#define __HAVE_ARCH_BCOPY
120 120
121#define __HAVE_ARCH_MEMSCAN
122#define memscan memchr
123
124#endif /* _XTENSA_STRING_H */121#endif /* _XTENSA_STRING_H */
arch/xtensa/kernel/ptrace.c+1−2
@@ -334,8 +334,7 @@ void do_syscall_trace_enter(struct pt_regs *regs) · 333 unmodified lines
334 do_syscall_trace();334 do_syscall_trace();
335 335
336#if 0336#if 0
337 if (unlikely(current->audit_context))337 audit_syscall_entry(current, AUDIT_ARCH_XTENSA..);
338 audit_syscall_entry(current, AUDIT_ARCH_XTENSA..);
339#endif338#endif
340}339}
341 340
block/blk-cgroup.c+1−1
@@ -1659,7 +1659,7 @@ static void blkiocg_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, · 1658 unmodified lines
1659 ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);1659 ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);
1660 if (ioc) {1660 if (ioc) {
1661 ioc_cgroup_changed(ioc);1661 ioc_cgroup_changed(ioc);
1662 put_io_context(ioc, NULL);1662 put_io_context(ioc);
1663 }1663 }
1664 }1664 }
1665}1665}
block/blk-core.c+17−16
@@ -642,7 +642,7 @@ static inline void blk_free_request(struct request_queue *q, struct request *rq) · 641 unmodified lines
642 if (rq->cmd_flags & REQ_ELVPRIV) {642 if (rq->cmd_flags & REQ_ELVPRIV) {
643 elv_put_request(q, rq);643 elv_put_request(q, rq);
644 if (rq->elv.icq)644 if (rq->elv.icq)
645 put_io_context(rq->elv.icq->ioc, q);645 put_io_context(rq->elv.icq->ioc);
646 }646 }
647 647
648 mempool_free(rq, q->rq.rq_pool);648 mempool_free(rq, q->rq.rq_pool);
@@ -872,13 +872,15 @@ retry: · 223 unmodified lines
872 spin_unlock_irq(q->queue_lock);872 spin_unlock_irq(q->queue_lock);
873 873
874 /* create icq if missing */874 /* create icq if missing */
875 if (unlikely(et->icq_cache && !icq))875 if ((rw_flags & REQ_ELVPRIV) && unlikely(et->icq_cache && !icq)) {
876 icq = ioc_create_icq(q, gfp_mask);876 icq = ioc_create_icq(q, gfp_mask);
877 if (!icq)
878 goto fail_icq;
879 }
877 880
878 /* rqs are guaranteed to have icq on elv_set_request() if requested */881 rq = blk_alloc_request(q, icq, rw_flags, gfp_mask);
879 if (likely(!et->icq_cache || icq))
880 rq = blk_alloc_request(q, icq, rw_flags, gfp_mask);
881 882
883fail_icq:
882 if (unlikely(!rq)) {884 if (unlikely(!rq)) {
883 /*885 /*
884 * Allocation failed presumably due to memory. Undo anything886 * Allocation failed presumably due to memory. Undo anything
@@ -1210,7 +1212,6 @@ static bool bio_attempt_back_merge(struct request_queue *q, struct request *req, · 325 unmodified lines
1210 req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));1212 req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
1211 1213
1212 drive_stat_acct(req, 0);1214 drive_stat_acct(req, 0);
1213 elv_bio_merged(q, req, bio);
1214 return true;1215 return true;
1215}1216}
1216 1217
@@ -1241,7 +1242,6 @@ static bool bio_attempt_front_merge(struct request_queue *q, · 24 unmodified lines
1241 req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));1242 req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
1242 1243
1243 drive_stat_acct(req, 0);1244 drive_stat_acct(req, 0);
1244 elv_bio_merged(q, req, bio);
1245 return true;1245 return true;
1246}1246}
1247 1247
@@ -1255,13 +1255,12 @@ static bool bio_attempt_front_merge(struct request_queue *q, · 7 unmodified lines
1255 * on %current's plugged list. Returns %true if merge was successful,1255 * on %current's plugged list. Returns %true if merge was successful,
1256 * otherwise %false.1256 * otherwise %false.
1257 *1257 *
1258 * This function is called without @q->queue_lock; however, elevator is1258 * Plugging coalesces IOs from the same issuer for the same purpose without
1259 * accessed iff there already are requests on the plugged list which in1259 * going through @q->queue_lock. As such it's more of an issuing mechanism
1260 * turn guarantees validity of the elevator.1260 * than scheduling, and the request, while may have elvpriv data, is not
1261 *1261 * added on the elevator at this point. In addition, we don't have
1262 * Note that, on successful merge, elevator operation1262 * reliable access to the elevator outside queue lock. Only check basic
1263 * elevator_bio_merged_fn() will be called without queue lock. Elevator1263 * merging parameters without querying the elevator.
1264 * must be ready for this.
1265 */1264 */
1266static bool attempt_plug_merge(struct request_queue *q, struct bio *bio,1265static bool attempt_plug_merge(struct request_queue *q, struct bio *bio,
1267 unsigned int *request_count)1266 unsigned int *request_count)
@@ -1280,10 +1279,10 @@ static bool attempt_plug_merge(struct request_queue *q, struct bio *bio, · 12 unmodified lines
1280 1279
1281 (*request_count)++;1280 (*request_count)++;
1282 1281
1283 if (rq->q != q)1282 if (rq->q != q || !blk_rq_merge_ok(rq, bio))
1284 continue;1283 continue;
1285 1284
1286 el_ret = elv_try_merge(rq, bio);1285 el_ret = blk_try_merge(rq, bio);
1287 if (el_ret == ELEVATOR_BACK_MERGE) {1286 if (el_ret == ELEVATOR_BACK_MERGE) {
1288 ret = bio_attempt_back_merge(q, rq, bio);1287 ret = bio_attempt_back_merge(q, rq, bio);
1289 if (ret)1288 if (ret)
@@ -1345,12 +1344,14 @@ void blk_queue_bio(struct request_queue *q, struct bio *bio) · 55 unmodified lines
1345 el_ret = elv_merge(q, &req, bio);1344 el_ret = elv_merge(q, &req, bio);
1346 if (el_ret == ELEVATOR_BACK_MERGE) {1345 if (el_ret == ELEVATOR_BACK_MERGE) {
1347 if (bio_attempt_back_merge(q, req, bio)) {1346 if (bio_attempt_back_merge(q, req, bio)) {
1347 elv_bio_merged(q, req, bio);
1348 if (!attempt_back_merge(q, req))1348 if (!attempt_back_merge(q, req))
1349 elv_merged_request(q, req, el_ret);1349 elv_merged_request(q, req, el_ret);
1350 goto out_unlock;1350 goto out_unlock;
1351 }1351 }
1352 } else if (el_ret == ELEVATOR_FRONT_MERGE) {1352 } else if (el_ret == ELEVATOR_FRONT_MERGE) {
1353 if (bio_attempt_front_merge(q, req, bio)) {1353 if (bio_attempt_front_merge(q, req, bio)) {
1354 elv_bio_merged(q, req, bio);
1354 if (!attempt_front_merge(q, req))1355 if (!attempt_front_merge(q, req))
1355 elv_merged_request(q, req, el_ret);1356 elv_merged_request(q, req, el_ret);
1356 goto out_unlock;1357 goto out_unlock;
block/blk-ioc.c+25−86
@@ -29,21 +29,6 @@ void get_io_context(struct io_context *ioc) · 28 unmodified lines
29}29}
30EXPORT_SYMBOL(get_io_context);30EXPORT_SYMBOL(get_io_context);
31 31
32/*
33 * Releasing ioc may nest into another put_io_context() leading to nested
34 * fast path release. As the ioc's can't be the same, this is okay but
35 * makes lockdep whine. Keep track of nesting and use it as subclass.
36 */
37#ifdef CONFIG_LOCKDEP
38#define ioc_release_depth(q) ((q) ? (q)->ioc_release_depth : 0)
39#define ioc_release_depth_inc(q) (q)->ioc_release_depth++
40#define ioc_release_depth_dec(q) (q)->ioc_release_depth--
41#else
42#define ioc_release_depth(q) 0
43#define ioc_release_depth_inc(q) do { } while (0)
44#define ioc_release_depth_dec(q) do { } while (0)
45#endif
46
47static void icq_free_icq_rcu(struct rcu_head *head)32static void icq_free_icq_rcu(struct rcu_head *head)
48{33{
49 struct io_cq *icq = container_of(head, struct io_cq, __rcu_head);34 struct io_cq *icq = container_of(head, struct io_cq, __rcu_head);
@@ -75,11 +60,8 @@ static void ioc_exit_icq(struct io_cq *icq) · 25 unmodified lines
75 if (rcu_dereference_raw(ioc->icq_hint) == icq)60 if (rcu_dereference_raw(ioc->icq_hint) == icq)
76 rcu_assign_pointer(ioc->icq_hint, NULL);61 rcu_assign_pointer(ioc->icq_hint, NULL);
77 62
78 if (et->ops.elevator_exit_icq_fn) {63 if (et->ops.elevator_exit_icq_fn)
79 ioc_release_depth_inc(q);
80 et->ops.elevator_exit_icq_fn(icq);64 et->ops.elevator_exit_icq_fn(icq);
81 ioc_release_depth_dec(q);
82 }
83 65
84 /*66 /*
85 * @icq->q might have gone away by the time RCU callback runs67 * @icq->q might have gone away by the time RCU callback runs
@@ -98,8 +80,15 @@ static void ioc_release_fn(struct work_struct *work) · 12 unmodified lines
98 struct io_context *ioc = container_of(work, struct io_context,80 struct io_context *ioc = container_of(work, struct io_context,
99 release_work);81 release_work);
100 struct request_queue *last_q = NULL;82 struct request_queue *last_q = NULL;
83 unsigned long flags;
101 84
102 spin_lock_irq(&ioc->lock);85 /*
86 * Exiting icq may call into put_io_context() through elevator
87 * which will trigger lockdep warning. The ioc's are guaranteed to
88 * be different, use a different locking subclass here. Use
89 * irqsave variant as there's no spin_lock_irq_nested().
90 */
91 spin_lock_irqsave_nested(&ioc->lock, flags, 1);
103 92
104 while (!hlist_empty(&ioc->icq_list)) {93 while (!hlist_empty(&ioc->icq_list)) {
105 struct io_cq *icq = hlist_entry(ioc->icq_list.first,94 struct io_cq *icq = hlist_entry(ioc->icq_list.first,
@@ -121,15 +110,15 @@ static void ioc_release_fn(struct work_struct *work) · 15 unmodified lines
121 */110 */
122 if (last_q) {111 if (last_q) {
123 spin_unlock(last_q->queue_lock);112 spin_unlock(last_q->queue_lock);
124 spin_unlock_irq(&ioc->lock);113 spin_unlock_irqrestore(&ioc->lock, flags);
125 blk_put_queue(last_q);114 blk_put_queue(last_q);
126 } else {115 } else {
127 spin_unlock_irq(&ioc->lock);116 spin_unlock_irqrestore(&ioc->lock, flags);
128 }117 }
129 118
130 last_q = this_q;119 last_q = this_q;
131 spin_lock_irq(this_q->queue_lock);120 spin_lock_irqsave(this_q->queue_lock, flags);
132 spin_lock(&ioc->lock);121 spin_lock_nested(&ioc->lock, 1);
133 continue;122 continue;
134 }123 }
135 ioc_exit_icq(icq);124 ioc_exit_icq(icq);
@@ -137,10 +126,10 @@ static void ioc_release_fn(struct work_struct *work) · 1 unmodified line
137 126
138 if (last_q) {127 if (last_q) {
139 spin_unlock(last_q->queue_lock);128 spin_unlock(last_q->queue_lock);
140 spin_unlock_irq(&ioc->lock);129 spin_unlock_irqrestore(&ioc->lock, flags);
141 blk_put_queue(last_q);130 blk_put_queue(last_q);
142 } else {131 } else {
143 spin_unlock_irq(&ioc->lock);132 spin_unlock_irqrestore(&ioc->lock, flags);
144 }133 }
145 134
146 kmem_cache_free(iocontext_cachep, ioc);135 kmem_cache_free(iocontext_cachep, ioc);
@@ -149,79 +138,29 @@ static void ioc_release_fn(struct work_struct *work) · 2 unmodified lines
149/**138/**
150 * put_io_context - put a reference of io_context139 * put_io_context - put a reference of io_context
151 * @ioc: io_context to put140 * @ioc: io_context to put
152 * @locked_q: request_queue the caller is holding queue_lock of (hint)
153 *141 *
154 * Decrement reference count of @ioc and release it if the count reaches142 * Decrement reference count of @ioc and release it if the count reaches
155 * zero. If the caller is holding queue_lock of a queue, it can indicate143 * zero.
156 * that with @locked_q. This is an optimization hint and the caller is
157 * allowed to pass in %NULL even when it's holding a queue_lock.
158 */144 */
159void put_io_context(struct io_context *ioc, struct request_queue *locked_q)145void put_io_context(struct io_context *ioc)
160{146{
161 struct request_queue *last_q = locked_q;
162 unsigned long flags;147 unsigned long flags;
163 148
164 if (ioc == NULL)149 if (ioc == NULL)
165 return;150 return;
166 151
167 BUG_ON(atomic_long_read(&ioc->refcount) <= 0);152 BUG_ON(atomic_long_read(&ioc->refcount) <= 0);
168 if (locked_q)
169 lockdep_assert_held(locked_q->queue_lock);
170
171 if (!atomic_long_dec_and_test(&ioc->refcount))
172 return;
173 153
174 /*154 /*
175 * Destroy @ioc. This is a bit messy because icq's are chained155 * Releasing ioc requires reverse order double locking and we may
176 * from both ioc and queue, and ioc->lock nests inside queue_lock.156 * already be holding a queue_lock. Do it asynchronously from wq.
177 * The inner ioc->lock should be held to walk our icq_list and then
178 * for each icq the outer matching queue_lock should be grabbed.
179 * ie. We need to do reverse-order double lock dancing.
180 *
181 * Another twist is that we are often called with one of the
182 * matching queue_locks held as indicated by @locked_q, which
183 * prevents performing double-lock dance for other queues.
184 *
185 * So, we do it in two stages. The fast path uses the queue_lock
186 * the caller is holding and, if other queues need to be accessed,
187 * uses trylock to avoid introducing locking dependency. This can
188 * handle most cases, especially if @ioc was performing IO on only
189 * single device.
190 *
191 * If trylock doesn't cut it, we defer to @ioc->release_work which
192 * can do all the double-locking dancing.
193 */157 */
194 spin_lock_irqsave_nested(&ioc->lock, flags,158 if (atomic_long_dec_and_test(&ioc->refcount)) {
195 ioc_release_depth(locked_q));159 spin_lock_irqsave(&ioc->lock, flags);
196 160 if (!hlist_empty(&ioc->icq_list))
197 while (!hlist_empty(&ioc->icq_list)) {161 schedule_work(&ioc->release_work);
198 struct io_cq *icq = hlist_entry(ioc->icq_list.first,162 spin_unlock_irqrestore(&ioc->lock, flags);
199 struct io_cq, ioc_node);
200 struct request_queue *this_q = icq->q;
201
202 if (this_q != last_q) {
203 if (last_q && last_q != locked_q)
204 spin_unlock(last_q->queue_lock);
205 last_q = NULL;
206
207 if (!spin_trylock(this_q->queue_lock))
208 break;
209 last_q = this_q;
210 continue;
211 }
212 ioc_exit_icq(icq);
213 }163 }
214
215 if (last_q && last_q != locked_q)
216 spin_unlock(last_q->queue_lock);
217
218 spin_unlock_irqrestore(&ioc->lock, flags);
219
220 /* if no icq is left, we're done; otherwise, kick release_work */
221 if (hlist_empty(&ioc->icq_list))
222 kmem_cache_free(iocontext_cachep, ioc);
223 else
224 schedule_work(&ioc->release_work);
225}164}
226EXPORT_SYMBOL(put_io_context);165EXPORT_SYMBOL(put_io_context);
227 166
@@ -236,7 +175,7 @@ void exit_io_context(struct task_struct *task) · 8 unmodified lines
236 task_unlock(task);175 task_unlock(task);
237 176
238 atomic_dec(&ioc->nr_tasks);177 atomic_dec(&ioc->nr_tasks);
239 put_io_context(ioc, NULL);178 put_io_context(ioc);
240}179}
241 180
242/**181/**
block/blk-merge.c+37−0
@@ -471,3 +471,40 @@ int blk_attempt_req_merge(struct request_queue *q, struct request *rq, · 470 unmodified lines
471{471{
472 return attempt_merge(q, rq, next);472 return attempt_merge(q, rq, next);
473}473}
474
475bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
476{
477 if (!rq_mergeable(rq))
478 return false;
479
480 /* don't merge file system requests and discard requests */
481 if ((bio->bi_rw & REQ_DISCARD) != (rq->bio->bi_rw & REQ_DISCARD))
482 return false;
483
484 /* don't merge discard requests and secure discard requests */
485 if ((bio->bi_rw & REQ_SECURE) != (rq->bio->bi_rw & REQ_SECURE))
486 return false;
487
488 /* different data direction or already started, don't merge */
489 if (bio_data_dir(bio) != rq_data_dir(rq))
490 return false;
491
492 /* must be same device and not a special request */
493 if (rq->rq_disk != bio->bi_bdev->bd_disk || rq->special)
494 return false;
495
496 /* only merge integrity protected bio into ditto rq */
497 if (bio_integrity(bio) != blk_integrity_rq(rq))
498 return false;
499
500 return true;
501}
502
503int blk_try_merge(struct request *rq, struct bio *bio)
504{
505 if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_sector)
506 return ELEVATOR_BACK_MERGE;
507 else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_sector)
508 return ELEVATOR_FRONT_MERGE;
509 return ELEVATOR_NO_MERGE;
510}
block/blk.h+2−0
@@ -137,6 +137,8 @@ int blk_attempt_req_merge(struct request_queue *q, struct request *rq, · 136 unmodified lines
137 struct request *next);137 struct request *next);
138void blk_recalc_rq_segments(struct request *rq);138void blk_recalc_rq_segments(struct request *rq);
139void blk_rq_set_mixed_merge(struct request *rq);139void blk_rq_set_mixed_merge(struct request *rq);
140bool blk_rq_merge_ok(struct request *rq, struct bio *bio);
141int blk_try_merge(struct request *rq, struct bio *bio);
140 142
141void blk_queue_congestion_threshold(struct request_queue *q);143void blk_queue_congestion_threshold(struct request_queue *q);
142 144
block/bsg.c+2−1
@@ -983,7 +983,8 @@ void bsg_unregister_queue(struct request_queue *q) · 982 unmodified lines
983 983
984 mutex_lock(&bsg_mutex);984 mutex_lock(&bsg_mutex);
985 idr_remove(&bsg_minor_idr, bcd->minor);985 idr_remove(&bsg_minor_idr, bcd->minor);
986 sysfs_remove_link(&q->kobj, "bsg");986 if (q->kobj.sd)
987 sysfs_remove_link(&q->kobj, "bsg");
987 device_unregister(bcd->class_dev);988 device_unregister(bcd->class_dev);
988 bcd->class_dev = NULL;989 bcd->class_dev = NULL;
989 kref_put(&bcd->ref, bsg_kref_release_function);990 kref_put(&bcd->ref, bsg_kref_release_function);
block/cfq-iosched.c+7−14
@@ -1699,18 +1699,11 @@ static int cfq_allow_merge(struct request_queue *q, struct request *rq, · 1698 unmodified lines
1699 1699
1700 /*1700 /*
1701 * Lookup the cfqq that this bio will be queued with and allow1701 * Lookup the cfqq that this bio will be queued with and allow
1702 * merge only if rq is queued there. This function can be called1702 * merge only if rq is queued there.
1703 * from plug merge without queue_lock. In such cases, ioc of @rq
1704 * and %current are guaranteed to be equal. Avoid lookup which
1705 * requires queue_lock by using @rq's cic.
1706 */1703 */
1707 if (current->io_context == RQ_CIC(rq)->icq.ioc) {1704 cic = cfq_cic_lookup(cfqd, current->io_context);
1708 cic = RQ_CIC(rq);1705 if (!cic)
1709 } else {1706 return false;
1710 cic = cfq_cic_lookup(cfqd, current->io_context);
1711 if (!cic)
1712 return false;
1713 }
1714 1707
1715 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));1708 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));
1716 return cfqq == RQ_CFQQ(rq);1709 return cfqq == RQ_CFQQ(rq);
@@ -1794,7 +1787,7 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq, · 77 unmodified lines
1794 cfqd->active_queue = NULL;1787 cfqd->active_queue = NULL;
1795 1788
1796 if (cfqd->active_cic) {1789 if (cfqd->active_cic) {
1797 put_io_context(cfqd->active_cic->icq.ioc, cfqd->queue);1790 put_io_context(cfqd->active_cic->icq.ioc);
1798 cfqd->active_cic = NULL;1791 cfqd->active_cic = NULL;
1799 }1792 }
1800}1793}
@@ -3117,7 +3110,7 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, · 1316 unmodified lines
3117 */3110 */
3118static void cfq_preempt_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq)3111static void cfq_preempt_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq)
3119{3112{
3120 struct cfq_queue *old_cfqq = cfqd->active_queue;3113 enum wl_type_t old_type = cfqq_type(cfqd->active_queue);
3121 3114
3122 cfq_log_cfqq(cfqd, cfqq, "preempt");3115 cfq_log_cfqq(cfqd, cfqq, "preempt");
3123 cfq_slice_expired(cfqd, 1);3116 cfq_slice_expired(cfqd, 1);
@@ -3126,7 +3119,7 @@ static void cfq_preempt_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq) · 2 unmodified lines
3126 * workload type is changed, don't save slice, otherwise preempt3119 * workload type is changed, don't save slice, otherwise preempt
3127 * doesn't happen3120 * doesn't happen
3128 */3121 */
3129 if (cfqq_type(old_cfqq) != cfqq_type(cfqq))3122 if (old_type != cfqq_type(cfqq))
3130 cfqq->cfqg->saved_workload_slice = 0;3123 cfqq->cfqg->saved_workload_slice = 0;
3131 3124
3132 /*3125 /*
block/elevator.c+4−51
@@ -70,39 +70,9 @@ static int elv_iosched_allow_merge(struct request *rq, struct bio *bio) · 69 unmodified lines
70/*70/*
71 * can we safely merge with this request?71 * can we safely merge with this request?
72 */72 */
73int elv_rq_merge_ok(struct request *rq, struct bio *bio)73bool elv_rq_merge_ok(struct request *rq, struct bio *bio)
74{74{
75 if (!rq_mergeable(rq))75 if (!blk_rq_merge_ok(rq, bio))
76 return 0;
77
78 /*
79 * Don't merge file system requests and discard requests
80 */
81 if ((bio->bi_rw & REQ_DISCARD) != (rq->bio->bi_rw & REQ_DISCARD))
82 return 0;
83
84 /*
85 * Don't merge discard requests and secure discard requests
86 */
87 if ((bio->bi_rw & REQ_SECURE) != (rq->bio->bi_rw & REQ_SECURE))
88 return 0;
89
90 /*
91 * different data direction or already started, don't merge
92 */
93 if (bio_data_dir(bio) != rq_data_dir(rq))
94 return 0;
95
96 /*
97 * must be same device and not a special request
98 */
99 if (rq->rq_disk != bio->bi_bdev->bd_disk || rq->special)
100 return 0;
101
102 /*
103 * only merge integrity protected bio into ditto rq
104 */
105 if (bio_integrity(bio) != blk_integrity_rq(rq))
106 return 0;76 return 0;
107 77
108 if (!elv_iosched_allow_merge(rq, bio))78 if (!elv_iosched_allow_merge(rq, bio))
@@ -112,23 +82,6 @@ int elv_rq_merge_ok(struct request *rq, struct bio *bio) · 3 unmodified lines
112}82}
113EXPORT_SYMBOL(elv_rq_merge_ok);83EXPORT_SYMBOL(elv_rq_merge_ok);
114 84
115int elv_try_merge(struct request *__rq, struct bio *bio)
116{
117 int ret = ELEVATOR_NO_MERGE;
118
119 /*
120 * we can merge and sequence is ok, check if it's possible
121 */
122 if (elv_rq_merge_ok(__rq, bio)) {
123 if (blk_rq_pos(__rq) + blk_rq_sectors(__rq) == bio->bi_sector)
124 ret = ELEVATOR_BACK_MERGE;
125 else if (blk_rq_pos(__rq) - bio_sectors(bio) == bio->bi_sector)
126 ret = ELEVATOR_FRONT_MERGE;
127 }
128
129 return ret;
130}
131
132static struct elevator_type *elevator_find(const char *name)85static struct elevator_type *elevator_find(const char *name)
133{86{
134 struct elevator_type *e;87 struct elevator_type *e;
@@ -478,8 +431,8 @@ int elv_merge(struct request_queue *q, struct request **req, struct bio *bio) · 343 unmodified lines
478 /*431 /*
479 * First try one-hit cache.432 * First try one-hit cache.
480 */433 */
481 if (q->last_merge) {434 if (q->last_merge && elv_rq_merge_ok(q->last_merge, bio)) {
482 ret = elv_try_merge(q->last_merge, bio);435 ret = blk_try_merge(q->last_merge, bio);
483 if (ret != ELEVATOR_NO_MERGE) {436 if (ret != ELEVATOR_NO_MERGE) {
484 *req = q->last_merge;437 *req = q->last_merge;
485 return ret;438 return ret;
crypto/sha512_generic.c+28−31
@@ -21,8 +21,6 @@ · 20 unmodified lines
21#include <linux/percpu.h>21#include <linux/percpu.h>
22#include <asm/byteorder.h>22#include <asm/byteorder.h>
23 23
24static DEFINE_PER_CPU(u64[80], msg_schedule);
25
26static inline u64 Ch(u64 x, u64 y, u64 z)24static inline u64 Ch(u64 x, u64 y, u64 z)
27{25{
28 return z ^ (x & (y ^ z));26 return z ^ (x & (y ^ z));
@@ -33,11 +31,6 @@ static inline u64 Maj(u64 x, u64 y, u64 z) · 4 unmodified lines
33 return (x & y) | (z & (x | y));31 return (x & y) | (z & (x | y));
34}32}
35 33
36static inline u64 RORu64(u64 x, u64 y)
37{
38 return (x >> y) | (x << (64 - y));
39}
40
41static const u64 sha512_K[80] = {34static const u64 sha512_K[80] = {
42 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,35 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
43 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,36 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
@@ -68,10 +61,10 @@ static const u64 sha512_K[80] = { · 24 unmodified lines
68 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL,61 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL,
69};62};
70 63
71#define e0(x) (RORu64(x,28) ^ RORu64(x,34) ^ RORu64(x,39))64#define e0(x) (ror64(x,28) ^ ror64(x,34) ^ ror64(x,39))
72#define e1(x) (RORu64(x,14) ^ RORu64(x,18) ^ RORu64(x,41))65#define e1(x) (ror64(x,14) ^ ror64(x,18) ^ ror64(x,41))
73#define s0(x) (RORu64(x, 1) ^ RORu64(x, 8) ^ (x >> 7))66#define s0(x) (ror64(x, 1) ^ ror64(x, 8) ^ (x >> 7))
74#define s1(x) (RORu64(x,19) ^ RORu64(x,61) ^ (x >> 6))67#define s1(x) (ror64(x,19) ^ ror64(x,61) ^ (x >> 6))
75 68
76static inline void LOAD_OP(int I, u64 *W, const u8 *input)69static inline void LOAD_OP(int I, u64 *W, const u8 *input)
77{70{
@@ -80,7 +73,7 @@ static inline void LOAD_OP(int I, u64 *W, const u8 *input) · 2 unmodified lines
80 73
81static inline void BLEND_OP(int I, u64 *W)74static inline void BLEND_OP(int I, u64 *W)
82{75{
83 W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16];76 W[I & 15] += s1(W[(I-2) & 15]) + W[(I-7) & 15] + s0(W[(I-15) & 15]);
84}77}
85 78
86static void79static void
@@ -89,15 +82,7 @@ sha512_transform(u64 *state, const u8 *input) · 2 unmodified lines
89 u64 a, b, c, d, e, f, g, h, t1, t2;82 u64 a, b, c, d, e, f, g, h, t1, t2;
90 83
91 int i;84 int i;
92 u64 *W = get_cpu_var(msg_schedule);85 u64 W[16];
93
94 /* load the input */
95 for (i = 0; i < 16; i++)
96 LOAD_OP(i, W, input);
97
98 for (i = 16; i < 80; i++) {
99 BLEND_OP(i, W);
100 }
101 86
102 /* load the state into our registers */87 /* load the state into our registers */
103 a=state[0]; b=state[1]; c=state[2]; d=state[3];88 a=state[0]; b=state[1]; c=state[2]; d=state[3];
@@ -105,21 +90,35 @@ sha512_transform(u64 *state, const u8 *input) · 1 unmodified line
105 90
106 /* now iterate */91 /* now iterate */
107 for (i=0; i<80; i+=8) {92 for (i=0; i<80; i+=8) {
108 t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[i ];93 if (!(i & 8)) {
94 int j;
95
96 if (i < 16) {
97 /* load the input */
98 for (j = 0; j < 16; j++)
99 LOAD_OP(i + j, W, input);
100 } else {
101 for (j = 0; j < 16; j++) {
102 BLEND_OP(i + j, W);
103 }
104 }
105 }
106
107 t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[(i & 15)];
109 t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2;108 t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2;
110 t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[i+1];109 t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[(i & 15) + 1];
111 t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2;110 t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2;
112 t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[i+2];111 t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[(i & 15) + 2];
113 t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2;112 t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2;
114 t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[i+3];113 t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[(i & 15) + 3];
115 t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2;114 t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2;
116 t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[i+4];115 t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[(i & 15) + 4];
117 t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2;116 t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2;
118 t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[i+5];117 t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[(i & 15) + 5];
119 t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2;118 t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2;
120 t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[i+6];119 t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[(i & 15) + 6];
121 t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2;120 t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2;
122 t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[i+7];121 t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[(i & 15) + 7];
123 t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;122 t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;
124 }123 }
125 124
@@ -128,8 +127,6 @@ sha512_transform(u64 *state, const u8 *input) · 2 unmodified lines
128 127
129 /* erase our data */128 /* erase our data */
130 a = b = c = d = e = f = g = h = t1 = t2 = 0;129 a = b = c = d = e = f = g = h = t1 = t2 = 0;
131 memset(W, 0, sizeof(__get_cpu_var(msg_schedule)));
132 put_cpu_var(msg_schedule);
133}130}
134 131
135static int132static int
drivers/acpi/Makefile+2−2
@@ -19,12 +19,12 @@ obj-y += acpi.o \ · 18 unmodified lines
19 19
20# All the builtin files are in the "acpi." module_param namespace.20# All the builtin files are in the "acpi." module_param namespace.
21acpi-y += osl.o utils.o reboot.o21acpi-y += osl.o utils.o reboot.o
22acpi-y += atomicio.o22acpi-y += nvs.o
23 23
24# sleep related files24# sleep related files
25acpi-y += wakeup.o25acpi-y += wakeup.o
26acpi-y += sleep.o26acpi-y += sleep.o
27acpi-$(CONFIG_ACPI_SLEEP) += proc.o nvs.o27acpi-$(CONFIG_ACPI_SLEEP) += proc.o
28 28
29 29
30#30#
drivers/acpi/acpica/Makefile+134−24
@@ -8,41 +8,151 @@ ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT · 7 unmodified lines
8# use acpi.o to put all files here into acpi.o modparam namespace8# use acpi.o to put all files here into acpi.o modparam namespace
9obj-y += acpi.o9obj-y += acpi.o
10 10
11acpi-y := dsfield.o dsmthdat.o dsopcode.o dswexec.o dswscope.o \11acpi-y := \
12 dsmethod.o dsobject.o dsutils.o dswload.o dswstate.o \12 dsargs.o \
13 dsinit.o dsargs.o dscontrol.o dswload2.o13 dscontrol.o \
14 dsfield.o \
15 dsinit.o \
16 dsmethod.o \
17 dsmthdat.o \
18 dsobject.o \
19 dsopcode.o \
20 dsutils.o \
21 dswexec.o \
22 dswload.o \
23 dswload2.o \
24 dswscope.o \
25 dswstate.o
14 26
15acpi-y += evevent.o evregion.o evsci.o evxfevnt.o \27acpi-y += \
16 evmisc.o evrgnini.o evxface.o evxfregn.o \28 evevent.o \
17 evgpe.o evgpeblk.o evgpeinit.o evgpeutil.o evxfgpe.o evglock.o29 evgpe.o \
30 evgpeblk.o \
31 evgpeinit.o \
32 evgpeutil.o \
33 evglock.o \
34 evmisc.o \
35 evregion.o \
36 evrgnini.o \
37 evsci.o \
38 evxface.o \
39 evxfevnt.o \
40 evxfgpe.o \
41 evxfregn.o
18 42
19acpi-y += exconfig.o exfield.o exnames.o exoparg6.o exresolv.o exstorob.o\43acpi-y += \
20 exconvrt.o exfldio.o exoparg1.o exprep.o exresop.o exsystem.o\44 exconfig.o \
21 excreate.o exmisc.o exoparg2.o exregion.o exstore.o exutils.o \45 exconvrt.o \
22 exdump.o exmutex.o exoparg3.o exresnte.o exstoren.o exdebug.o46 excreate.o \
47 exdebug.o \
48 exdump.o \
49 exfield.o \
50 exfldio.o \
51 exmutex.o \
52 exnames.o \
53 exoparg1.o \
54 exoparg2.o \
55 exoparg3.o \
56 exoparg6.o \
57 exprep.o \
58 exmisc.o \
59 exregion.o \
60 exresnte.o \
61 exresolv.o \
62 exresop.o \
63 exstore.o \
64 exstoren.o \
65 exstorob.o \
66 exsystem.o \
67 exutils.o
23 68
24acpi-y += hwacpi.o hwgpe.o hwregs.o hwsleep.o hwxface.o hwvalid.o hwpci.o69acpi-y += \
70 hwacpi.o \
71 hwgpe.o \
72 hwpci.o \
73 hwregs.o \
74 hwsleep.o \
75 hwvalid.o \
76 hwxface.o
25 77
26acpi-$(ACPI_FUTURE_USAGE) += hwtimer.o78acpi-$(ACPI_FUTURE_USAGE) += hwtimer.o
27 79
28acpi-y += nsaccess.o nsload.o nssearch.o nsxfeval.o \80acpi-y += \
29 nsalloc.o nseval.o nsnames.o nsutils.o nsxfname.o \81 nsaccess.o \
30 nsdump.o nsinit.o nsobject.o nswalk.o nsxfobj.o \82 nsalloc.o \
31 nsparse.o nspredef.o nsrepair.o nsrepair2.o83 nsdump.o \
84 nseval.o \
85 nsinit.o \
86 nsload.o \
87 nsnames.o \
88 nsobject.o \
89 nsparse.o \
90 nspredef.o \
91 nsrepair.o \
92 nsrepair2.o \
93 nssearch.o \
94 nsutils.o \
95 nswalk.o \
96 nsxfeval.o \
97 nsxfname.o \
98 nsxfobj.o
32 99
33acpi-$(ACPI_FUTURE_USAGE) += nsdumpdv.o100acpi-$(ACPI_FUTURE_USAGE) += nsdumpdv.o
34 101
35acpi-y += psargs.o psparse.o psloop.o pstree.o pswalk.o \102acpi-y += \
36 psopcode.o psscope.o psutils.o psxface.o103 psargs.o \
104 psloop.o \
105 psopcode.o \
106 psparse.o \
107 psscope.o \
108 pstree.o \
109 psutils.o \
110 pswalk.o \
111 psxface.o
37 112
38acpi-y += rsaddr.o rscreate.o rsinfo.o rsio.o rslist.o rsmisc.o rsxface.o \113acpi-y += \
39 rscalc.o rsirq.o rsmemory.o rsutils.o114 rsaddr.o \
115 rscalc.o \
116 rscreate.o \
117 rsinfo.o \
118 rsio.o \
119 rsirq.o \
120 rslist.o \
121 rsmemory.o \
122 rsmisc.o \
123 rsserial.o \
124 rsutils.o \
125 rsxface.o
40 126
41acpi-$(ACPI_FUTURE_USAGE) += rsdump.o127acpi-$(ACPI_FUTURE_USAGE) += rsdump.o
42 128
43acpi-y += tbxface.o tbinstal.o tbutils.o tbfind.o tbfadt.o tbxfroot.o129acpi-y += \
130 tbfadt.o \
131 tbfind.o \
132 tbinstal.o \
133 tbutils.o \
134 tbxface.o \
135 tbxfroot.o
44 136
45acpi-y += utalloc.o utdebug.o uteval.o utinit.o utmisc.o utxface.o \137acpi-y += \
46 utcopy.o utdelete.o utglobal.o utmath.o utobject.o \138 utaddress.o \
47 utstate.o utmutex.o utobject.o utresrc.o utlock.o utids.o \139 utalloc.o \
48 utosi.o utxferror.o utdecode.o140 utcopy.o \
141 utdebug.o \
142 utdecode.o \
143 utdelete.o \
144 uteval.o \
145 utglobal.o \
146 utids.o \
147 utinit.o \
148 utlock.o \
149 utmath.o \
150 utmisc.o \
151 utmutex.o \
152 utobject.o \
153 utosi.o \
154 utresrc.o \
155 utstate.o \
156 utxface.o \
157 utxferror.o \
158 utxfmutex.o
drivers/acpi/acpica/accommon.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acconfig.h+7−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -123,6 +123,10 @@ · 111 unmodified lines
123 123
124#define ACPI_MAX_SLEEP 2000 /* Two seconds */124#define ACPI_MAX_SLEEP 2000 /* Two seconds */
125 125
126/* Address Range lists are per-space_id (Memory and I/O only) */
127
128#define ACPI_ADDRESS_RANGE_MAX 2
129
126/******************************************************************************130/******************************************************************************
127 *131 *
128 * ACPI Specification constants (Do not change unless the specification changes)132 * ACPI Specification constants (Do not change unless the specification changes)
@@ -202,9 +206,10 @@ · 73 unmodified lines
202#define ACPI_RSDP_CHECKSUM_LENGTH 20206#define ACPI_RSDP_CHECKSUM_LENGTH 20
203#define ACPI_RSDP_XCHECKSUM_LENGTH 36207#define ACPI_RSDP_XCHECKSUM_LENGTH 36
204 208
205/* SMBus and IPMI bidirectional buffer size */209/* SMBus, GSBus and IPMI bidirectional buffer size */
206 210
207#define ACPI_SMBUS_BUFFER_SIZE 34211#define ACPI_SMBUS_BUFFER_SIZE 34
212#define ACPI_GSBUS_BUFFER_SIZE 34
208#define ACPI_IPMI_BUFFER_SIZE 66213#define ACPI_IPMI_BUFFER_SIZE 66
209 214
210/* _sx_d and _sx_w control methods */215/* _sx_d and _sx_w control methods */
drivers/acpi/acpica/acdebug.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acdispat.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acevents.h+2−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -162,6 +162,7 @@ acpi_status acpi_ev_initialize_op_regions(void); · 150 unmodified lines
162 162
163acpi_status163acpi_status
164acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,164acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
165 union acpi_operand_object *field_obj,
165 u32 function,166 u32 function,
166 u32 region_offset, u32 bit_width, u64 *value);167 u32 region_offset, u32 bit_width, u64 *value);
167 168
drivers/acpi/acpica/acglobal.h+15−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -140,8 +140,19 @@ u32 acpi_gbl_trace_flags; · 128 unmodified lines
140acpi_name acpi_gbl_trace_method_name;140acpi_name acpi_gbl_trace_method_name;
141u8 acpi_gbl_system_awake_and_running;141u8 acpi_gbl_system_awake_and_running;
142 142
143/*
144 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
145 * that the ACPI hardware is no longer required. A flag in the FADT indicates
146 * a reduced HW machine, and that flag is duplicated here for convenience.
147 */
148u8 acpi_gbl_reduced_hardware;
149
143#endif150#endif
144 151
152/* Do not disassemble buffers to resource descriptors */
153
154ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_no_resource_disassembly, FALSE);
155
145/*****************************************************************************156/*****************************************************************************
146 *157 *
147 * Debug support158 * Debug support
@@ -207,7 +218,7 @@ ACPI_EXTERN struct acpi_rw_lock acpi_gbl_namespace_rw_lock; · 59 unmodified lines
207 218
208/*****************************************************************************219/*****************************************************************************
209 *220 *
210 * Mutual exlusion within ACPICA subsystem221 * Mutual exclusion within ACPICA subsystem
211 *222 *
212 ****************************************************************************/223 ****************************************************************************/
213 224
@@ -295,6 +306,8 @@ ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present; · 81 unmodified lines
295ACPI_EXTERN u8 acpi_gbl_events_initialized;306ACPI_EXTERN u8 acpi_gbl_events_initialized;
296ACPI_EXTERN u8 acpi_gbl_osi_data;307ACPI_EXTERN u8 acpi_gbl_osi_data;
297ACPI_EXTERN struct acpi_interface_info *acpi_gbl_supported_interfaces;308ACPI_EXTERN struct acpi_interface_info *acpi_gbl_supported_interfaces;
309ACPI_EXTERN struct acpi_address_range
310 *acpi_gbl_address_range_list[ACPI_ADDRESS_RANGE_MAX];
298 311
299#ifndef DEFINE_ACPI_GLOBALS312#ifndef DEFINE_ACPI_GLOBALS
300 313
drivers/acpi/acpica/achware.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acinterp.h+3−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -468,6 +468,8 @@ void acpi_ex_eisa_id_to_string(char *dest, u64 compressed_id); · 456 unmodified lines
468 468
469void acpi_ex_integer_to_string(char *dest, u64 value);469void acpi_ex_integer_to_string(char *dest, u64 value);
470 470
471u8 acpi_is_valid_space_id(u8 space_id);
472
471/*473/*
472 * exregion - default op_region handlers474 * exregion - default op_region handlers
473 */475 */
drivers/acpi/acpica/aclocal.h+21−5
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -53,7 +53,7 @@ typedef u32 acpi_mutex_handle; · 41 unmodified lines
53 53
54/* Total number of aml opcodes defined */54/* Total number of aml opcodes defined */
55 55
56#define AML_NUM_OPCODES 0x7F56#define AML_NUM_OPCODES 0x81
57 57
58/* Forward declarations */58/* Forward declarations */
59 59
@@ -249,12 +249,16 @@ struct acpi_create_field_info { · 189 unmodified lines
249 struct acpi_namespace_node *field_node;249 struct acpi_namespace_node *field_node;
250 struct acpi_namespace_node *register_node;250 struct acpi_namespace_node *register_node;
251 struct acpi_namespace_node *data_register_node;251 struct acpi_namespace_node *data_register_node;
252 struct acpi_namespace_node *connection_node;
253 u8 *resource_buffer;
252 u32 bank_value;254 u32 bank_value;
253 u32 field_bit_position;255 u32 field_bit_position;
254 u32 field_bit_length;256 u32 field_bit_length;
257 u16 resource_length;
255 u8 field_flags;258 u8 field_flags;
256 u8 attribute;259 u8 attribute;
257 u8 field_type;260 u8 field_type;
261 u8 access_length;
258};262};
259 263
260typedef264typedef
@@ -315,7 +319,8 @@ struct acpi_name_info { · 54 unmodified lines
315 319
316/*320/*
317 * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,321 * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
318 * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT322 * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT,
323 * ACPI_PTYPE2_FIX_VAR
319 */324 */
320struct acpi_package_info {325struct acpi_package_info {
321 u8 type;326 u8 type;
@@ -625,6 +630,15 @@ union acpi_generic_state { · 303 unmodified lines
625 630
626typedef acpi_status(*ACPI_EXECUTE_OP) (struct acpi_walk_state * walk_state);631typedef acpi_status(*ACPI_EXECUTE_OP) (struct acpi_walk_state * walk_state);
627 632
633/* Address Range info block */
634
635struct acpi_address_range {
636 struct acpi_address_range *next;
637 struct acpi_namespace_node *region_node;
638 acpi_physical_address start_address;
639 acpi_physical_address end_address;
640};
641
628/*****************************************************************************642/*****************************************************************************
629 *643 *
630 * Parser typedefs and structs644 * Parser typedefs and structs
@@ -951,7 +965,7 @@ struct acpi_port_info { · 320 unmodified lines
951#define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38965#define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38
952#define ACPI_RESOURCE_NAME_IO 0x40966#define ACPI_RESOURCE_NAME_IO 0x40
953#define ACPI_RESOURCE_NAME_FIXED_IO 0x48967#define ACPI_RESOURCE_NAME_FIXED_IO 0x48
954#define ACPI_RESOURCE_NAME_RESERVED_S1 0x50968#define ACPI_RESOURCE_NAME_FIXED_DMA 0x50
955#define ACPI_RESOURCE_NAME_RESERVED_S2 0x58969#define ACPI_RESOURCE_NAME_RESERVED_S2 0x58
956#define ACPI_RESOURCE_NAME_RESERVED_S3 0x60970#define ACPI_RESOURCE_NAME_RESERVED_S3 0x60
957#define ACPI_RESOURCE_NAME_RESERVED_S4 0x68971#define ACPI_RESOURCE_NAME_RESERVED_S4 0x68
@@ -973,7 +987,9 @@ struct acpi_port_info { · 15 unmodified lines
973#define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89987#define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89
974#define ACPI_RESOURCE_NAME_ADDRESS64 0x8A988#define ACPI_RESOURCE_NAME_ADDRESS64 0x8A
975#define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B989#define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B
976#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8B990#define ACPI_RESOURCE_NAME_GPIO 0x8C
991#define ACPI_RESOURCE_NAME_SERIAL_BUS 0x8E
992#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8E
977 993
978/*****************************************************************************994/*****************************************************************************
979 *995 *
drivers/acpi/acpica/acmacros.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acnamesp.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acobject.h+6−2
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -254,6 +254,7 @@ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO}; · 241 unmodified lines
254 u32 base_byte_offset; /* Byte offset within containing object */\254 u32 base_byte_offset; /* Byte offset within containing object */\
255 u32 value; /* Value to store into the Bank or Index register */\255 u32 value; /* Value to store into the Bank or Index register */\
256 u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\256 u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\
257 u8 access_length; /* For serial regions/fields */
257 258
258 259
259struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */260struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
@@ -261,7 +262,9 @@ struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and · 1 unmodified line
261};262};
262 263
263struct acpi_object_region_field {264struct acpi_object_region_field {
264 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */265 ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO u16 resource_length;
266 union acpi_operand_object *region_obj; /* Containing op_region object */
267 u8 *resource_buffer; /* resource_template for serial regions/fields */
265};268};
266 269
267struct acpi_object_bank_field {270struct acpi_object_bank_field {
@@ -358,6 +361,7 @@ typedef enum { · 90 unmodified lines
358 */361 */
359struct acpi_object_extra {362struct acpi_object_extra {
360 ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */363 ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
364 struct acpi_namespace_node *scope_node;
361 void *region_context; /* Region-specific data */365 void *region_context; /* Region-specific data */
362 u8 *aml_start;366 u8 *aml_start;
363 u32 aml_length;367 u32 aml_length;
drivers/acpi/acpica/acopcode.h+5−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -93,6 +93,7 @@ · 81 unmodified lines
93#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)93#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
94#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)94#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
95#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)95#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
96#define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
96#define ARGP_CONTINUE_OP ARG_NONE97#define ARGP_CONTINUE_OP ARG_NONE
97#define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME)98#define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME)
98#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)99#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
@@ -164,6 +165,7 @@ · 65 unmodified lines
164#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)165#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
165#define ARGP_REVISION_OP ARG_NONE166#define ARGP_REVISION_OP ARG_NONE
166#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)167#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
168#define ARGP_SERIALFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
167#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)169#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
168#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)170#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
169#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)171#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
@@ -223,6 +225,7 @@ · 53 unmodified lines
223#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)225#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
224#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)226#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
225#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)227#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
228#define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE
226#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE229#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
227#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)230#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
228#define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)231#define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
@@ -294,6 +297,7 @@ · 65 unmodified lines
294#define ARGI_RETURN_OP ARGI_INVALID_OPCODE297#define ARGI_RETURN_OP ARGI_INVALID_OPCODE
295#define ARGI_REVISION_OP ARG_NONE298#define ARGI_REVISION_OP ARG_NONE
296#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE299#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
300#define ARGI_SERIALFIELD_OP ARGI_INVALID_OPCODE
297#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)301#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
298#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)302#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
299#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)303#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
drivers/acpi/acpica/acparser.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acpredef.h+39−2
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -94,6 +94,14 @@ · 81 unmodified lines
94 * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length94 * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
95 * (Used for _ART, _FPS)95 * (Used for _ART, _FPS)
96 *96 *
97 * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements
98 * followed by an optional element
99 * object type
100 * count
101 * object type
102 * count = 0 (optional)
103 * (Used for _DLM)
104 *
97 *****************************************************************************/105 *****************************************************************************/
98 106
99enum acpi_return_package_types {107enum acpi_return_package_types {
@@ -105,7 +113,8 @@ enum acpi_return_package_types { · 5 unmodified lines
105 ACPI_PTYPE2_PKG_COUNT = 6,113 ACPI_PTYPE2_PKG_COUNT = 6,
106 ACPI_PTYPE2_FIXED = 7,114 ACPI_PTYPE2_FIXED = 7,
107 ACPI_PTYPE2_MIN = 8,115 ACPI_PTYPE2_MIN = 8,
108 ACPI_PTYPE2_REV_FIXED = 9116 ACPI_PTYPE2_REV_FIXED = 9,
117 ACPI_PTYPE2_FIX_VAR = 10
109};118};
110 119
111#ifdef ACPI_CREATE_PREDEFINED_TABLE120#ifdef ACPI_CREATE_PREDEFINED_TABLE
@@ -154,6 +163,7 @@ static const union acpi_predefined_info predefined_names[] = · 42 unmodified lines
154 {{"_AC8", 0, ACPI_RTYPE_INTEGER}},163 {{"_AC8", 0, ACPI_RTYPE_INTEGER}},
155 {{"_AC9", 0, ACPI_RTYPE_INTEGER}},164 {{"_AC9", 0, ACPI_RTYPE_INTEGER}},
156 {{"_ADR", 0, ACPI_RTYPE_INTEGER}},165 {{"_ADR", 0, ACPI_RTYPE_INTEGER}},
166 {{"_AEI", 0, ACPI_RTYPE_BUFFER}},
157 {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */167 {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
158 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},168 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
159 169
@@ -229,6 +239,13 @@ static const union acpi_predefined_info predefined_names[] = · 69 unmodified lines
229 {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */239 {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
230 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},240 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
231 241
242 {{"_CLS", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int) */
243 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
244
245 {{"_CPC", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Bufs) */
246 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0, 0}, 0,
247 0}},
248
232 {{"_CRS", 0, ACPI_RTYPE_BUFFER}},249 {{"_CRS", 0, ACPI_RTYPE_BUFFER}},
233 {{"_CRT", 0, ACPI_RTYPE_INTEGER}},250 {{"_CRT", 0, ACPI_RTYPE_INTEGER}},
234 {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */251 {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
@@ -237,12 +254,21 @@ static const union acpi_predefined_info predefined_names[] = · 2 unmodified lines
237 {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */254 {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
238 {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},255 {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
239 256
257 {{"_CWS", 1, ACPI_RTYPE_INTEGER}},
240 {{"_DCK", 1, ACPI_RTYPE_INTEGER}},258 {{"_DCK", 1, ACPI_RTYPE_INTEGER}},
241 {{"_DCS", 0, ACPI_RTYPE_INTEGER}},259 {{"_DCS", 0, ACPI_RTYPE_INTEGER}},
242 {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},260 {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
243 {{"_DDN", 0, ACPI_RTYPE_STRING}},261 {{"_DDN", 0, ACPI_RTYPE_STRING}},
262 {{"_DEP", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
263 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
264
244 {{"_DGS", 0, ACPI_RTYPE_INTEGER}},265 {{"_DGS", 0, ACPI_RTYPE_INTEGER}},
245 {{"_DIS", 0, 0}},266 {{"_DIS", 0, 0}},
267
268 {{"_DLM", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */
269 {{{ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1,
270 ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER}, 0, 0}},
271
246 {{"_DMA", 0, ACPI_RTYPE_BUFFER}},272 {{"_DMA", 0, ACPI_RTYPE_BUFFER}},
247 {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */273 {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
248 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},274 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
@@ -262,6 +288,7 @@ static const union acpi_predefined_info predefined_names[] = · 13 unmodified lines
262 {{"_EJ3", 1, 0}},288 {{"_EJ3", 1, 0}},
263 {{"_EJ4", 1, 0}},289 {{"_EJ4", 1, 0}},
264 {{"_EJD", 0, ACPI_RTYPE_STRING}},290 {{"_EJD", 0, ACPI_RTYPE_STRING}},
291 {{"_EVT", 1, 0}},
265 {{"_FDE", 0, ACPI_RTYPE_BUFFER}},292 {{"_FDE", 0, ACPI_RTYPE_BUFFER}},
266 {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */293 {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
267 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},294 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
@@ -281,14 +308,17 @@ static const union acpi_predefined_info predefined_names[] = · 13 unmodified lines
281 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},308 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
282 309
283 {{"_GAI", 0, ACPI_RTYPE_INTEGER}},310 {{"_GAI", 0, ACPI_RTYPE_INTEGER}},
311 {{"_GCP", 0, ACPI_RTYPE_INTEGER}},
284 {{"_GHL", 0, ACPI_RTYPE_INTEGER}},312 {{"_GHL", 0, ACPI_RTYPE_INTEGER}},
285 {{"_GLK", 0, ACPI_RTYPE_INTEGER}},313 {{"_GLK", 0, ACPI_RTYPE_INTEGER}},
286 {{"_GPD", 0, ACPI_RTYPE_INTEGER}},314 {{"_GPD", 0, ACPI_RTYPE_INTEGER}},
287 {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */315 {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
316 {{"_GRT", 0, ACPI_RTYPE_BUFFER}},
288 {{"_GSB", 0, ACPI_RTYPE_INTEGER}},317 {{"_GSB", 0, ACPI_RTYPE_INTEGER}},
289 {{"_GTF", 0, ACPI_RTYPE_BUFFER}},318 {{"_GTF", 0, ACPI_RTYPE_BUFFER}},
290 {{"_GTM", 0, ACPI_RTYPE_BUFFER}},319 {{"_GTM", 0, ACPI_RTYPE_BUFFER}},
291 {{"_GTS", 1, 0}},320 {{"_GTS", 1, 0}},
321 {{"_GWS", 1, ACPI_RTYPE_INTEGER}},
292 {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},322 {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
293 {{"_HOT", 0, ACPI_RTYPE_INTEGER}},323 {{"_HOT", 0, ACPI_RTYPE_INTEGER}},
294 {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */324 {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
@@ -303,6 +333,7 @@ static const union acpi_predefined_info predefined_names[] = · 8 unmodified lines
303 {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */333 {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
304 {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},334 {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
305 335
336 {{"_HRV", 0, ACPI_RTYPE_INTEGER}},
306 {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */337 {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
307 {{"_INI", 0, 0}},338 {{"_INI", 0, 0}},
308 {{"_IRC", 0, 0}},339 {{"_IRC", 0, 0}},
@@ -361,6 +392,9 @@ static const union acpi_predefined_info predefined_names[] = · 52 unmodified lines
361 {{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */392 {{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
362 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},393 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
363 394
395 {{"_PRE", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
396 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
397
364 {{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */398 {{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
365 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},399 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
366 400
@@ -391,6 +425,7 @@ static const union acpi_predefined_info predefined_names[] = · 24 unmodified lines
391 {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */425 {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
392 {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},426 {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
393 427
428 {{"_PSE", 1, 0}},
394 {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */429 {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
395 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},430 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
396 431
@@ -457,6 +492,7 @@ static const union acpi_predefined_info predefined_names[] = · 60 unmodified lines
457 {{"_SLI", 0, ACPI_RTYPE_BUFFER}},492 {{"_SLI", 0, ACPI_RTYPE_BUFFER}},
458 {{"_SPD", 1, ACPI_RTYPE_INTEGER}},493 {{"_SPD", 1, ACPI_RTYPE_INTEGER}},
459 {{"_SRS", 1, 0}},494 {{"_SRS", 1, 0}},
495 {{"_SRT", 1, ACPI_RTYPE_INTEGER}},
460 {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */496 {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
461 {{"_SST", 1, 0}},497 {{"_SST", 1, 0}},
462 {{"_STA", 0, ACPI_RTYPE_INTEGER}},498 {{"_STA", 0, ACPI_RTYPE_INTEGER}},
@@ -464,6 +500,7 @@ static const union acpi_predefined_info predefined_names[] = · 1 unmodified line
464 {{"_STP", 2, ACPI_RTYPE_INTEGER}},500 {{"_STP", 2, ACPI_RTYPE_INTEGER}},
465 {{"_STR", 0, ACPI_RTYPE_BUFFER}},501 {{"_STR", 0, ACPI_RTYPE_BUFFER}},
466 {{"_STV", 2, ACPI_RTYPE_INTEGER}},502 {{"_STV", 2, ACPI_RTYPE_INTEGER}},
503 {{"_SUB", 0, ACPI_RTYPE_STRING}},
467 {{"_SUN", 0, ACPI_RTYPE_INTEGER}},504 {{"_SUN", 0, ACPI_RTYPE_INTEGER}},
468 {{"_SWS", 0, ACPI_RTYPE_INTEGER}},505 {{"_SWS", 0, ACPI_RTYPE_INTEGER}},
469 {{"_TC1", 0, ACPI_RTYPE_INTEGER}},506 {{"_TC1", 0, ACPI_RTYPE_INTEGER}},
drivers/acpi/acpica/acresrc.h+78−37
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -73,28 +73,40 @@ typedef const struct acpi_rsconvert_info { · 61 unmodified lines
73 73
74/* Resource conversion opcodes */74/* Resource conversion opcodes */
75 75
76#define ACPI_RSC_INITGET 076typedef enum {
77#define ACPI_RSC_INITSET 177 ACPI_RSC_INITGET = 0,
78#define ACPI_RSC_FLAGINIT 278 ACPI_RSC_INITSET,
79#define ACPI_RSC_1BITFLAG 379 ACPI_RSC_FLAGINIT,
80#define ACPI_RSC_2BITFLAG 480 ACPI_RSC_1BITFLAG,
81#define ACPI_RSC_COUNT 581 ACPI_RSC_2BITFLAG,
82#define ACPI_RSC_COUNT16 682 ACPI_RSC_3BITFLAG,
83#define ACPI_RSC_LENGTH 783 ACPI_RSC_ADDRESS,
84#define ACPI_RSC_MOVE8 884 ACPI_RSC_BITMASK,
85#define ACPI_RSC_MOVE16 985 ACPI_RSC_BITMASK16,
86#define ACPI_RSC_MOVE32 1086 ACPI_RSC_COUNT,
87#define ACPI_RSC_MOVE64 1187 ACPI_RSC_COUNT16,
88#define ACPI_RSC_SET8 1288 ACPI_RSC_COUNT_GPIO_PIN,
89#define ACPI_RSC_DATA8 1389 ACPI_RSC_COUNT_GPIO_RES,
90#define ACPI_RSC_ADDRESS 1490 ACPI_RSC_COUNT_GPIO_VEN,
91#define ACPI_RSC_SOURCE 1591 ACPI_RSC_COUNT_SERIAL_RES,
92#define ACPI_RSC_SOURCEX 1692 ACPI_RSC_COUNT_SERIAL_VEN,
93#define ACPI_RSC_BITMASK 1793 ACPI_RSC_DATA8,
94#define ACPI_RSC_BITMASK16 1894 ACPI_RSC_EXIT_EQ,
95#define ACPI_RSC_EXIT_NE 1995 ACPI_RSC_EXIT_LE,
96#define ACPI_RSC_EXIT_LE 2096 ACPI_RSC_EXIT_NE,
97#define ACPI_RSC_EXIT_EQ 2197 ACPI_RSC_LENGTH,
98 ACPI_RSC_MOVE_GPIO_PIN,
99 ACPI_RSC_MOVE_GPIO_RES,
100 ACPI_RSC_MOVE_SERIAL_RES,
101 ACPI_RSC_MOVE_SERIAL_VEN,
102 ACPI_RSC_MOVE8,
103 ACPI_RSC_MOVE16,
104 ACPI_RSC_MOVE32,
105 ACPI_RSC_MOVE64,
106 ACPI_RSC_SET8,
107 ACPI_RSC_SOURCE,
108 ACPI_RSC_SOURCEX
109} ACPI_RSCONVERT_OPCODES;
98 110
99/* Resource Conversion sub-opcodes */111/* Resource Conversion sub-opcodes */
100 112
@@ -106,6 +118,9 @@ typedef const struct acpi_rsconvert_info { · 5 unmodified lines
106#define ACPI_RS_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_resource,f)118#define ACPI_RS_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_resource,f)
107#define AML_OFFSET(f) (u8) ACPI_OFFSET (union aml_resource,f)119#define AML_OFFSET(f) (u8) ACPI_OFFSET (union aml_resource,f)
108 120
121/*
122 * Individual entry for the resource dump tables
123 */
109typedef const struct acpi_rsdump_info {124typedef const struct acpi_rsdump_info {
110 u8 opcode;125 u8 opcode;
111 u8 offset;126 u8 offset;
@@ -116,20 +131,25 @@ typedef const struct acpi_rsdump_info { · 4 unmodified lines
116 131
117/* Values for the Opcode field above */132/* Values for the Opcode field above */
118 133
119#define ACPI_RSD_TITLE 0134typedef enum {
120#define ACPI_RSD_LITERAL 1135 ACPI_RSD_TITLE = 0,
121#define ACPI_RSD_STRING 2136 ACPI_RSD_1BITFLAG,
122#define ACPI_RSD_UINT8 3137 ACPI_RSD_2BITFLAG,
123#define ACPI_RSD_UINT16 4138 ACPI_RSD_3BITFLAG,
124#define ACPI_RSD_UINT32 5139 ACPI_RSD_ADDRESS,
125#define ACPI_RSD_UINT64 6140 ACPI_RSD_DWORDLIST,
126#define ACPI_RSD_1BITFLAG 7141 ACPI_RSD_LITERAL,
127#define ACPI_RSD_2BITFLAG 8142 ACPI_RSD_LONGLIST,
128#define ACPI_RSD_SHORTLIST 9143 ACPI_RSD_SHORTLIST,
129#define ACPI_RSD_LONGLIST 10144 ACPI_RSD_SHORTLISTX,
130#define ACPI_RSD_DWORDLIST 11145 ACPI_RSD_SOURCE,
131#define ACPI_RSD_ADDRESS 12146 ACPI_RSD_STRING,
132#define ACPI_RSD_SOURCE 13147 ACPI_RSD_UINT8,
148 ACPI_RSD_UINT16,
149 ACPI_RSD_UINT32,
150 ACPI_RSD_UINT64,
151 ACPI_RSD_WORDLIST
152} ACPI_RSDUMP_OPCODES;
133 153
134/* restore default alignment */154/* restore default alignment */
135 155
@@ -138,13 +158,18 @@ typedef const struct acpi_rsdump_info { · 2 unmodified lines
138/* Resource tables indexed by internal resource type */158/* Resource tables indexed by internal resource type */
139 159
140extern const u8 acpi_gbl_aml_resource_sizes[];160extern const u8 acpi_gbl_aml_resource_sizes[];
161extern const u8 acpi_gbl_aml_resource_serial_bus_sizes[];
141extern struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[];162extern struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[];
142 163
143/* Resource tables indexed by raw AML resource descriptor type */164/* Resource tables indexed by raw AML resource descriptor type */
144 165
145extern const u8 acpi_gbl_resource_struct_sizes[];166extern const u8 acpi_gbl_resource_struct_sizes[];
167extern const u8 acpi_gbl_resource_struct_serial_bus_sizes[];
146extern struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[];168extern struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[];
147 169
170extern struct acpi_rsconvert_info
171 *acpi_gbl_convert_resource_serial_bus_dispatch[];
172
148struct acpi_vendor_walk_info {173struct acpi_vendor_walk_info {
149 struct acpi_vendor_uuid *uuid;174 struct acpi_vendor_uuid *uuid;
150 struct acpi_buffer *buffer;175 struct acpi_buffer *buffer;
@@ -190,6 +215,10 @@ acpi_status · 39 unmodified lines
190acpi_rs_set_srs_method_data(struct acpi_namespace_node *node,215acpi_rs_set_srs_method_data(struct acpi_namespace_node *node,
191 struct acpi_buffer *ret_buffer);216 struct acpi_buffer *ret_buffer);
192 217
218acpi_status
219acpi_rs_get_aei_method_data(struct acpi_namespace_node *node,
220 struct acpi_buffer *ret_buffer);
221
193/*222/*
194 * rscalc223 * rscalc
195 */224 */
@@ -293,6 +322,11 @@ extern struct acpi_rsconvert_info acpi_rs_convert_address16[]; · 97 unmodified lines
293extern struct acpi_rsconvert_info acpi_rs_convert_ext_irq[];322extern struct acpi_rsconvert_info acpi_rs_convert_ext_irq[];
294extern struct acpi_rsconvert_info acpi_rs_convert_address64[];323extern struct acpi_rsconvert_info acpi_rs_convert_address64[];
295extern struct acpi_rsconvert_info acpi_rs_convert_ext_address64[];324extern struct acpi_rsconvert_info acpi_rs_convert_ext_address64[];
325extern struct acpi_rsconvert_info acpi_rs_convert_gpio[];
326extern struct acpi_rsconvert_info acpi_rs_convert_fixed_dma[];
327extern struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[];
328extern struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[];
329extern struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[];
296 330
297/* These resources require separate get/set tables */331/* These resources require separate get/set tables */
298 332
@@ -310,6 +344,7 @@ extern struct acpi_rsconvert_info acpi_rs_set_vendor[]; · 11 unmodified lines
310 * rsinfo344 * rsinfo
311 */345 */
312extern struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[];346extern struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[];
347extern struct acpi_rsdump_info *acpi_gbl_dump_serial_bus_dispatch[];
313 348
314/*349/*
315 * rsdump350 * rsdump
@@ -331,6 +366,12 @@ extern struct acpi_rsdump_info acpi_rs_dump_address64[]; · 15 unmodified lines
331extern struct acpi_rsdump_info acpi_rs_dump_ext_address64[];366extern struct acpi_rsdump_info acpi_rs_dump_ext_address64[];
332extern struct acpi_rsdump_info acpi_rs_dump_ext_irq[];367extern struct acpi_rsdump_info acpi_rs_dump_ext_irq[];
333extern struct acpi_rsdump_info acpi_rs_dump_generic_reg[];368extern struct acpi_rsdump_info acpi_rs_dump_generic_reg[];
369extern struct acpi_rsdump_info acpi_rs_dump_gpio[];
370extern struct acpi_rsdump_info acpi_rs_dump_fixed_dma[];
371extern struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[];
372extern struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[];
373extern struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[];
374extern struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[];
334#endif375#endif
335 376
336#endif /* __ACRESRC_H__ */377#endif /* __ACRESRC_H__ */
drivers/acpi/acpica/acstruct.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/actables.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acutils.h+20−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -45,6 +45,7 @@ · 33 unmodified lines
45#define _ACUTILS_H45#define _ACUTILS_H
46 46
47extern const u8 acpi_gbl_resource_aml_sizes[];47extern const u8 acpi_gbl_resource_aml_sizes[];
48extern const u8 acpi_gbl_resource_aml_serial_bus_sizes[];
48 49
49/* Strings used by the disassembler and debugger resource dump routines */50/* Strings used by the disassembler and debugger resource dump routines */
50 51
@@ -578,6 +579,24 @@ acpi_ut_create_list(char *list_name, · 527 unmodified lines
578 579
579#endif /* ACPI_DBG_TRACK_ALLOCATIONS */580#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
580 581
582/*
583 * utaddress - address range check
584 */
585acpi_status
586acpi_ut_add_address_range(acpi_adr_space_type space_id,
587 acpi_physical_address address,
588 u32 length, struct acpi_namespace_node *region_node);
589
590void
591acpi_ut_remove_address_range(acpi_adr_space_type space_id,
592 struct acpi_namespace_node *region_node);
593
594u32
595acpi_ut_check_address_range(acpi_adr_space_type space_id,
596 acpi_physical_address address, u32 length, u8 warn);
597
598void acpi_ut_delete_address_lists(void);
599
581/*600/*
582 * utxferror - various error/warning output functions601 * utxferror - various error/warning output functions
583 */602 */
drivers/acpi/acpica/amlcode.h+21−8
@@ -7,7 +7,7 @@ · 6 unmodified lines
7 *****************************************************************************/7 *****************************************************************************/
8 8
9/*9/*
10 * Copyright (C) 2000 - 2011, Intel Corp.10 * Copyright (C) 2000 - 2012, Intel Corp.
11 * All rights reserved.11 * All rights reserved.
12 *12 *
13 * Redistribution and use in source and binary forms, with or without13 * Redistribution and use in source and binary forms, with or without
@@ -188,6 +188,14 @@ · 174 unmodified lines
188#define AML_LLESSEQUAL_OP (u16) 0x9294188#define AML_LLESSEQUAL_OP (u16) 0x9294
189#define AML_LNOTEQUAL_OP (u16) 0x9293189#define AML_LNOTEQUAL_OP (u16) 0x9293
190 190
191/*
192 * Opcodes for "Field" operators
193 */
194#define AML_FIELD_OFFSET_OP (u8) 0x00
195#define AML_FIELD_ACCESS_OP (u8) 0x01
196#define AML_FIELD_CONNECTION_OP (u8) 0x02 /* ACPI 5.0 */
197#define AML_FIELD_EXT_ACCESS_OP (u8) 0x03 /* ACPI 5.0 */
198
191/*199/*
192 * Internal opcodes200 * Internal opcodes
193 * Use only "Unknown" AML opcodes, don't attempt to use201 * Use only "Unknown" AML opcodes, don't attempt to use
@@ -202,6 +210,8 @@ · 8 unmodified lines
202#define AML_INT_METHODCALL_OP (u16) 0x0035210#define AML_INT_METHODCALL_OP (u16) 0x0035
203#define AML_INT_RETURN_VALUE_OP (u16) 0x0036211#define AML_INT_RETURN_VALUE_OP (u16) 0x0036
204#define AML_INT_EVAL_SUBTREE_OP (u16) 0x0037212#define AML_INT_EVAL_SUBTREE_OP (u16) 0x0037
213#define AML_INT_CONNECTION_OP (u16) 0x0038
214#define AML_INT_EXTACCESSFIELD_OP (u16) 0x0039
205 215
206#define ARG_NONE 0x0216#define ARG_NONE 0x0
207 217
@@ -456,13 +466,16 @@ typedef enum { · 248 unmodified lines
456 * access_as keyword466 * access_as keyword
457 */467 */
458typedef enum {468typedef enum {
459 AML_FIELD_ATTRIB_SMB_QUICK = 0x02,469 AML_FIELD_ATTRIB_QUICK = 0x02,
460 AML_FIELD_ATTRIB_SMB_SEND_RCV = 0x04,470 AML_FIELD_ATTRIB_SEND_RCV = 0x04,
461 AML_FIELD_ATTRIB_SMB_BYTE = 0x06,471 AML_FIELD_ATTRIB_BYTE = 0x06,
462 AML_FIELD_ATTRIB_SMB_WORD = 0x08,472 AML_FIELD_ATTRIB_WORD = 0x08,
463 AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A,473 AML_FIELD_ATTRIB_BLOCK = 0x0A,
464 AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C,474 AML_FIELD_ATTRIB_MULTIBYTE = 0x0B,
465 AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D475 AML_FIELD_ATTRIB_WORD_CALL = 0x0C,
476 AML_FIELD_ATTRIB_BLOCK_CALL = 0x0D,
477 AML_FIELD_ATTRIB_RAW_BYTES = 0x0E,
478 AML_FIELD_ATTRIB_RAW_PROCESS = 0x0F
466} AML_ACCESS_ATTRIBUTE;479} AML_ACCESS_ATTRIBUTE;
467 480
468/* Bit fields in the AML method_flags byte */481/* Bit fields in the AML method_flags byte */
drivers/acpi/acpica/amlresrc.h+137−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -58,29 +58,48 @@ · 45 unmodified lines
58#define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT"58#define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT"
59#define ACPI_RESTAG_BASEADDRESS "_BAS"59#define ACPI_RESTAG_BASEADDRESS "_BAS"
60#define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */60#define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */
61#define ACPI_RESTAG_DEBOUNCETIME "_DBT"
61#define ACPI_RESTAG_DECODE "_DEC"62#define ACPI_RESTAG_DECODE "_DEC"
63#define ACPI_RESTAG_DEVICEPOLARITY "_DPL"
62#define ACPI_RESTAG_DMA "_DMA"64#define ACPI_RESTAG_DMA "_DMA"
63#define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */65#define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
66#define ACPI_RESTAG_DRIVESTRENGTH "_DRS"
67#define ACPI_RESTAG_ENDIANNESS "_END"
68#define ACPI_RESTAG_FLOWCONTROL "_FLC"
64#define ACPI_RESTAG_GRANULARITY "_GRA"69#define ACPI_RESTAG_GRANULARITY "_GRA"
65#define ACPI_RESTAG_INTERRUPT "_INT"70#define ACPI_RESTAG_INTERRUPT "_INT"
66#define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */71#define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */
67#define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */72#define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */
68#define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */73#define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
74#define ACPI_RESTAG_IORESTRICTION "_IOR"
69#define ACPI_RESTAG_LENGTH "_LEN"75#define ACPI_RESTAG_LENGTH "_LEN"
76#define ACPI_RESTAG_LINE "_LIN"
70#define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */77#define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
71#define ACPI_RESTAG_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */78#define ACPI_RESTAG_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
72#define ACPI_RESTAG_MAXADDR "_MAX"79#define ACPI_RESTAG_MAXADDR "_MAX"
73#define ACPI_RESTAG_MINADDR "_MIN"80#define ACPI_RESTAG_MINADDR "_MIN"
74#define ACPI_RESTAG_MAXTYPE "_MAF"81#define ACPI_RESTAG_MAXTYPE "_MAF"
75#define ACPI_RESTAG_MINTYPE "_MIF"82#define ACPI_RESTAG_MINTYPE "_MIF"
83#define ACPI_RESTAG_MODE "_MOD"
84#define ACPI_RESTAG_PARITY "_PAR"
85#define ACPI_RESTAG_PHASE "_PHA"
86#define ACPI_RESTAG_PIN "_PIN"
87#define ACPI_RESTAG_PINCONFIG "_PPI"
88#define ACPI_RESTAG_POLARITY "_POL"
76#define ACPI_RESTAG_REGISTERBITOFFSET "_RBO"89#define ACPI_RESTAG_REGISTERBITOFFSET "_RBO"
77#define ACPI_RESTAG_REGISTERBITWIDTH "_RBW"90#define ACPI_RESTAG_REGISTERBITWIDTH "_RBW"
78#define ACPI_RESTAG_RANGETYPE "_RNG"91#define ACPI_RESTAG_RANGETYPE "_RNG"
79#define ACPI_RESTAG_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */92#define ACPI_RESTAG_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */
93#define ACPI_RESTAG_LENGTH_RX "_RXL"
94#define ACPI_RESTAG_LENGTH_TX "_TXL"
95#define ACPI_RESTAG_SLAVEMODE "_SLV"
96#define ACPI_RESTAG_SPEED "_SPE"
97#define ACPI_RESTAG_STOPBITS "_STB"
80#define ACPI_RESTAG_TRANSLATION "_TRA"98#define ACPI_RESTAG_TRANSLATION "_TRA"
81#define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */99#define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
82#define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */100#define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */
83#define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8_and16(1), 16(2) */101#define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8_and16(1), 16(2) */
102#define ACPI_RESTAG_VENDORDATA "_VEN"
84 103
85/* Default sizes for "small" resource descriptors */104/* Default sizes for "small" resource descriptors */
86 105
@@ -90,6 +109,7 @@ · 3 unmodified lines
90#define ASL_RDESC_END_DEPEND_SIZE 0x00109#define ASL_RDESC_END_DEPEND_SIZE 0x00
91#define ASL_RDESC_IO_SIZE 0x07110#define ASL_RDESC_IO_SIZE 0x07
92#define ASL_RDESC_FIXED_IO_SIZE 0x03111#define ASL_RDESC_FIXED_IO_SIZE 0x03
112#define ASL_RDESC_FIXED_DMA_SIZE 0x05
93#define ASL_RDESC_END_TAG_SIZE 0x01113#define ASL_RDESC_END_TAG_SIZE 0x01
94 114
95struct asl_resource_node {115struct asl_resource_node {
@@ -164,6 +184,12 @@ struct aml_resource_end_tag { · 68 unmodified lines
164 AML_RESOURCE_SMALL_HEADER_COMMON u8 checksum;184 AML_RESOURCE_SMALL_HEADER_COMMON u8 checksum;
165};185};
166 186
187struct aml_resource_fixed_dma {
188 AML_RESOURCE_SMALL_HEADER_COMMON u16 request_lines;
189 u16 channels;
190 u8 width;
191};
192
167/*193/*
168 * LARGE descriptors194 * LARGE descriptors
169 */195 */
@@ -263,6 +289,110 @@ struct aml_resource_generic_register { · 93 unmodified lines
263 u64 address;289 u64 address;
264};290};
265 291
292/* Common descriptor for gpio_int and gpio_io (ACPI 5.0) */
293
294struct aml_resource_gpio {
295 AML_RESOURCE_LARGE_HEADER_COMMON u8 revision_id;
296 u8 connection_type;
297 u16 flags;
298 u16 int_flags;
299 u8 pin_config;
300 u16 drive_strength;
301 u16 debounce_timeout;
302 u16 pin_table_offset;
303 u8 res_source_index;
304 u16 res_source_offset;
305 u16 vendor_offset;
306 u16 vendor_length;
307 /*
308 * Optional fields follow immediately:
309 * 1) PIN list (Words)
310 * 2) Resource Source String
311 * 3) Vendor Data bytes
312 */
313};
314
315#define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */
316
317/* Values for connection_type above */
318
319#define AML_RESOURCE_GPIO_TYPE_INT 0
320#define AML_RESOURCE_GPIO_TYPE_IO 1
321#define AML_RESOURCE_MAX_GPIOTYPE 1
322
323/* Common preamble for all serial descriptors (ACPI 5.0) */
324
325#define AML_RESOURCE_SERIAL_COMMON \
326 u8 revision_id; \
327 u8 res_source_index; \
328 u8 type; \
329 u8 flags; \
330 u16 type_specific_flags; \
331 u8 type_revision_id; \
332 u16 type_data_length; \
333
334/* Values for the type field above */
335
336#define AML_RESOURCE_I2C_SERIALBUSTYPE 1
337#define AML_RESOURCE_SPI_SERIALBUSTYPE 2
338#define AML_RESOURCE_UART_SERIALBUSTYPE 3
339#define AML_RESOURCE_MAX_SERIALBUSTYPE 3
340#define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
341
342struct aml_resource_common_serialbus {
343AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_SERIAL_COMMON};
344
345struct aml_resource_i2c_serialbus {
346 AML_RESOURCE_LARGE_HEADER_COMMON
347 AML_RESOURCE_SERIAL_COMMON u32 connection_speed;
348 u16 slave_address;
349 /*
350 * Optional fields follow immediately:
351 * 1) Vendor Data bytes
352 * 2) Resource Source String
353 */
354};
355
356#define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */
357#define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */
358#define AML_RESOURCE_I2C_MIN_DATA_LEN 6
359
360struct aml_resource_spi_serialbus {
361 AML_RESOURCE_LARGE_HEADER_COMMON
362 AML_RESOURCE_SERIAL_COMMON u32 connection_speed;
363 u8 data_bit_length;
364 u8 clock_phase;
365 u8 clock_polarity;
366 u16 device_selection;
367 /*
368 * Optional fields follow immediately:
369 * 1) Vendor Data bytes
370 * 2) Resource Source String
371 */
372};
373
374#define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */
375#define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */
376#define AML_RESOURCE_SPI_MIN_DATA_LEN 9
377
378struct aml_resource_uart_serialbus {
379 AML_RESOURCE_LARGE_HEADER_COMMON
380 AML_RESOURCE_SERIAL_COMMON u32 default_baud_rate;
381 u16 rx_fifo_size;
382 u16 tx_fifo_size;
383 u8 parity;
384 u8 lines_enabled;
385 /*
386 * Optional fields follow immediately:
387 * 1) Vendor Data bytes
388 * 2) Resource Source String
389 */
390};
391
392#define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */
393#define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */
394#define AML_RESOURCE_UART_MIN_DATA_LEN 10
395
266/* restore default alignment */396/* restore default alignment */
267 397
268#pragma pack()398#pragma pack()
@@ -284,6 +414,7 @@ union aml_resource { · 15 unmodified lines
284 struct aml_resource_end_dependent end_dpf;414 struct aml_resource_end_dependent end_dpf;
285 struct aml_resource_io io;415 struct aml_resource_io io;
286 struct aml_resource_fixed_io fixed_io;416 struct aml_resource_fixed_io fixed_io;
417 struct aml_resource_fixed_dma fixed_dma;
287 struct aml_resource_vendor_small vendor_small;418 struct aml_resource_vendor_small vendor_small;
288 struct aml_resource_end_tag end_tag;419 struct aml_resource_end_tag end_tag;
289 420
@@ -299,6 +430,11 @@ union aml_resource { · 9 unmodified lines
299 struct aml_resource_address64 address64;430 struct aml_resource_address64 address64;
300 struct aml_resource_extended_address64 ext_address64;431 struct aml_resource_extended_address64 ext_address64;
301 struct aml_resource_extended_irq extended_irq;432 struct aml_resource_extended_irq extended_irq;
433 struct aml_resource_gpio gpio;
434 struct aml_resource_i2c_serialbus i2c_serial_bus;
435 struct aml_resource_spi_serialbus spi_serial_bus;
436 struct aml_resource_uart_serialbus uart_serial_bus;
437 struct aml_resource_common_serialbus common_serial_bus;
302 438
303 /* Utility overlays */439 /* Utility overlays */
304 440
drivers/acpi/acpica/dsargs.c+16−2
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -250,6 +250,13 @@ acpi_ds_get_bank_field_arguments(union acpi_operand_object *obj_desc) · 237 unmodified lines
250 status = acpi_ds_execute_arguments(node, node->parent,250 status = acpi_ds_execute_arguments(node, node->parent,
251 extra_desc->extra.aml_length,251 extra_desc->extra.aml_length,
252 extra_desc->extra.aml_start);252 extra_desc->extra.aml_start);
253 if (ACPI_FAILURE(status)) {
254 return_ACPI_STATUS(status);
255 }
256
257 status = acpi_ut_add_address_range(obj_desc->region.space_id,
258 obj_desc->region.address,
259 obj_desc->region.length, node);
253 return_ACPI_STATUS(status);260 return_ACPI_STATUS(status);
254}261}
255 262
@@ -384,8 +391,15 @@ acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *obj_desc) · 128 unmodified lines
384 391
385 /* Execute the argument AML */392 /* Execute the argument AML */
386 393
387 status = acpi_ds_execute_arguments(node, node->parent,394 status = acpi_ds_execute_arguments(node, extra_desc->extra.scope_node,
388 extra_desc->extra.aml_length,395 extra_desc->extra.aml_length,
389 extra_desc->extra.aml_start);396 extra_desc->extra.aml_start);
397 if (ACPI_FAILURE(status)) {
398 return_ACPI_STATUS(status);
399 }
400
401 status = acpi_ut_add_address_range(obj_desc->region.space_id,
402 obj_desc->region.address,
403 obj_desc->region.length, node);
390 return_ACPI_STATUS(status);404 return_ACPI_STATUS(status);
391}405}
drivers/acpi/acpica/dscontrol.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsfield.c+67−16
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -221,6 +221,7 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info, · 209 unmodified lines
221{221{
222 acpi_status status;222 acpi_status status;
223 u64 position;223 u64 position;
224 union acpi_parse_object *child;
224 225
225 ACPI_FUNCTION_TRACE_PTR(ds_get_field_names, info);226 ACPI_FUNCTION_TRACE_PTR(ds_get_field_names, info);
226 227
@@ -232,10 +233,11 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info, · 5 unmodified lines
232 233
233 while (arg) {234 while (arg) {
234 /*235 /*
235 * Three types of field elements are handled:236 * Four types of field elements are handled:
236 * 1) Offset - specifies a bit offset237 * 1) Name - Enters a new named field into the namespace
237 * 2) access_as - changes the access mode238 * 2) Offset - specifies a bit offset
238 * 3) Name - Enters a new named field into the namespace239 * 3) access_as - changes the access mode/attributes
240 * 4) Connection - Associate a resource template with the field
239 */241 */
240 switch (arg->common.aml_opcode) {242 switch (arg->common.aml_opcode) {
241 case AML_INT_RESERVEDFIELD_OP:243 case AML_INT_RESERVEDFIELD_OP:
@@ -253,21 +255,70 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info, · 11 unmodified lines
253 break;255 break;
254 256
255 case AML_INT_ACCESSFIELD_OP:257 case AML_INT_ACCESSFIELD_OP:
256 258 case AML_INT_EXTACCESSFIELD_OP:
257 /*259 /*
258 * Get a new access_type and access_attribute -- to be used for all260 * Get new access_type, access_attribute, and access_length fields
259 * field units that follow, until field end or another access_as261 * -- to be used for all field units that follow, until the
260 * keyword.262 * end-of-field or another access_as keyword is encountered.
263 * NOTE. These three bytes are encoded in the integer value
264 * of the parseop for convenience.
261 *265 *
262 * In field_flags, preserve the flag bits other than the266 * In field_flags, preserve the flag bits other than the
263 * ACCESS_TYPE bits267 * ACCESS_TYPE bits.
264 */268 */
269
270 /* access_type (byte_acc, word_acc, etc.) */
271
265 info->field_flags = (u8)272 info->field_flags = (u8)
266 ((info->273 ((info->
267 field_flags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |274 field_flags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |
268 ((u8) ((u32) arg->common.value.integer >> 8)));275 ((u8)((u32)(arg->common.value.integer & 0x07))));
276
277 /* access_attribute (attrib_quick, attrib_byte, etc.) */
278
279 info->attribute =
280 (u8)((arg->common.value.integer >> 8) & 0xFF);
281
282 /* access_length (for serial/buffer protocols) */
283
284 info->access_length =
285 (u8)((arg->common.value.integer >> 16) & 0xFF);
286 break;
287
288 case AML_INT_CONNECTION_OP:
289 /*
290 * Clear any previous connection. New connection is used for all
291 * fields that follow, similar to access_as
292 */
293 info->resource_buffer = NULL;
294 info->connection_node = NULL;
269 295
270 info->attribute = (u8) (arg->common.value.integer);296 /*
297 * A Connection() is either an actual resource descriptor (buffer)
298 * or a named reference to a resource template
299 */
300 child = arg->common.value.arg;
301 if (child->common.aml_opcode == AML_INT_BYTELIST_OP) {
302 info->resource_buffer = child->named.data;
303 info->resource_length =
304 (u16)child->named.value.integer;
305 } else {
306 /* Lookup the Connection() namepath, it should already exist */
307
308 status = acpi_ns_lookup(walk_state->scope_info,
309 child->common.value.
310 name, ACPI_TYPE_ANY,
311 ACPI_IMODE_EXECUTE,
312 ACPI_NS_DONT_OPEN_SCOPE,
313 walk_state,
314 &info->connection_node);
315 if (ACPI_FAILURE(status)) {
316 ACPI_ERROR_NAMESPACE(child->common.
317 value.name,
318 status);
319 return_ACPI_STATUS(status);
320 }
321 }
271 break;322 break;
272 323
273 case AML_INT_NAMEDFIELD_OP:324 case AML_INT_NAMEDFIELD_OP:
@@ -374,6 +425,8 @@ acpi_ds_create_field(union acpi_parse_object *op, · 100 unmodified lines
374 }425 }
375 }426 }
376 427
428 ACPI_MEMSET(&info, 0, sizeof(struct acpi_create_field_info));
429
377 /* Second arg is the field flags */430 /* Second arg is the field flags */
378 431
379 arg = arg->common.next;432 arg = arg->common.next;
@@ -386,7 +439,6 @@ acpi_ds_create_field(union acpi_parse_object *op, · 6 unmodified lines
386 info.region_node = region_node;439 info.region_node = region_node;
387 440
388 status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);441 status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);
389
390 return_ACPI_STATUS(status);442 return_ACPI_STATUS(status);
391}443}
392 444
@@ -474,8 +526,8 @@ acpi_ds_init_field_objects(union acpi_parse_object *op, · 81 unmodified lines
474 */526 */
475 while (arg) {527 while (arg) {
476 /*528 /*
477 * Ignore OFFSET and ACCESSAS terms here; we are only interested in the529 * Ignore OFFSET/ACCESSAS/CONNECTION terms here; we are only interested
478 * field names in order to enter them into the namespace.530 * in the field names in order to enter them into the namespace.
479 */531 */
480 if (arg->common.aml_opcode == AML_INT_NAMEDFIELD_OP) {532 if (arg->common.aml_opcode == AML_INT_NAMEDFIELD_OP) {
481 status = acpi_ns_lookup(walk_state->scope_info,533 status = acpi_ns_lookup(walk_state->scope_info,
@@ -651,6 +703,5 @@ acpi_ds_create_index_field(union acpi_parse_object *op, · 169 unmodified lines
651 info.region_node = region_node;703 info.region_node = region_node;
652 704
653 status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);705 status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);
654
655 return_ACPI_STATUS(status);706 return_ACPI_STATUS(status);
656}707}
drivers/acpi/acpica/dsinit.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsmethod.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsmthdat.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsobject.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsopcode.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsutils.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswexec.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswload.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswload2.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswscope.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswstate.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evevent.c+13−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -71,6 +71,12 @@ acpi_status acpi_ev_initialize_events(void) · 59 unmodified lines
71 71
72 ACPI_FUNCTION_TRACE(ev_initialize_events);72 ACPI_FUNCTION_TRACE(ev_initialize_events);
73 73
74 /* If Hardware Reduced flag is set, there are no fixed events */
75
76 if (acpi_gbl_reduced_hardware) {
77 return_ACPI_STATUS(AE_OK);
78 }
79
74 /*80 /*
75 * Initialize the Fixed and General Purpose Events. This is done prior to81 * Initialize the Fixed and General Purpose Events. This is done prior to
76 * enabling SCIs to prevent interrupts from occurring before the handlers82 * enabling SCIs to prevent interrupts from occurring before the handlers
@@ -111,6 +117,12 @@ acpi_status acpi_ev_install_xrupt_handlers(void) · 34 unmodified lines
111 117
112 ACPI_FUNCTION_TRACE(ev_install_xrupt_handlers);118 ACPI_FUNCTION_TRACE(ev_install_xrupt_handlers);
113 119
120 /* If Hardware Reduced flag is set, there is no ACPI h/w */
121
122 if (acpi_gbl_reduced_hardware) {
123 return_ACPI_STATUS(AE_OK);
124 }
125
114 /* Install the SCI handler */126 /* Install the SCI handler */
115 127
116 status = acpi_ev_install_sci_handler();128 status = acpi_ev_install_sci_handler();
drivers/acpi/acpica/evglock.c+7−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -70,6 +70,12 @@ acpi_status acpi_ev_init_global_lock_handler(void) · 58 unmodified lines
70 70
71 ACPI_FUNCTION_TRACE(ev_init_global_lock_handler);71 ACPI_FUNCTION_TRACE(ev_init_global_lock_handler);
72 72
73 /* If Hardware Reduced flag is set, there is no global lock */
74
75 if (acpi_gbl_reduced_hardware) {
76 return_ACPI_STATUS(AE_OK);
77 }
78
73 /* Attempt installation of the global lock handler */79 /* Attempt installation of the global lock handler */
74 80
75 status = acpi_install_fixed_event_handler(ACPI_EVENT_GLOBAL,81 status = acpi_install_fixed_event_handler(ACPI_EVENT_GLOBAL,
drivers/acpi/acpica/evgpe.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evgpeblk.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evgpeinit.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evgpeutil.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evmisc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evregion.c+27−4
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -329,6 +329,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function) · 317 unmodified lines
329 * FUNCTION: acpi_ev_address_space_dispatch329 * FUNCTION: acpi_ev_address_space_dispatch
330 *330 *
331 * PARAMETERS: region_obj - Internal region object331 * PARAMETERS: region_obj - Internal region object
332 * field_obj - Corresponding field. Can be NULL.
332 * Function - Read or Write operation333 * Function - Read or Write operation
333 * region_offset - Where in the region to read or write334 * region_offset - Where in the region to read or write
334 * bit_width - Field width in bits (8, 16, 32, or 64)335 * bit_width - Field width in bits (8, 16, 32, or 64)
@@ -344,6 +345,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function) · 9 unmodified lines
344 345
345acpi_status346acpi_status
346acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,347acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
348 union acpi_operand_object *field_obj,
347 u32 function,349 u32 function,
348 u32 region_offset, u32 bit_width, u64 *value)350 u32 region_offset, u32 bit_width, u64 *value)
349{351{
@@ -353,6 +355,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 3 unmodified lines
353 union acpi_operand_object *handler_desc;355 union acpi_operand_object *handler_desc;
354 union acpi_operand_object *region_obj2;356 union acpi_operand_object *region_obj2;
355 void *region_context = NULL;357 void *region_context = NULL;
358 struct acpi_connection_info *context;
356 359
357 ACPI_FUNCTION_TRACE(ev_address_space_dispatch);360 ACPI_FUNCTION_TRACE(ev_address_space_dispatch);
358 361
@@ -375,6 +378,8 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 16 unmodified lines
375 return_ACPI_STATUS(AE_NOT_EXIST);378 return_ACPI_STATUS(AE_NOT_EXIST);
376 }379 }
377 380
381 context = handler_desc->address_space.context;
382
378 /*383 /*
379 * It may be the case that the region has never been initialized.384 * It may be the case that the region has never been initialized.
380 * Some types of regions require special init code385 * Some types of regions require special init code
@@ -404,8 +409,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 23 unmodified lines
404 acpi_ex_exit_interpreter();409 acpi_ex_exit_interpreter();
405 410
406 status = region_setup(region_obj, ACPI_REGION_ACTIVATE,411 status = region_setup(region_obj, ACPI_REGION_ACTIVATE,
407 handler_desc->address_space.context,412 context, &region_context);
408 &region_context);
409 413
410 /* Re-enter the interpreter */414 /* Re-enter the interpreter */
411 415
@@ -455,6 +459,25 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 43 unmodified lines
455 acpi_ut_get_region_name(region_obj->region.459 acpi_ut_get_region_name(region_obj->region.
456 space_id)));460 space_id)));
457 461
462 /*
463 * Special handling for generic_serial_bus and general_purpose_io:
464 * There are three extra parameters that must be passed to the
465 * handler via the context:
466 * 1) Connection buffer, a resource template from Connection() op.
467 * 2) Length of the above buffer.
468 * 3) Actual access length from the access_as() op.
469 */
470 if (((region_obj->region.space_id == ACPI_ADR_SPACE_GSBUS) ||
471 (region_obj->region.space_id == ACPI_ADR_SPACE_GPIO)) &&
472 context && field_obj) {
473
474 /* Get the Connection (resource_template) buffer */
475
476 context->connection = field_obj->field.resource_buffer;
477 context->length = field_obj->field.resource_length;
478 context->access_length = field_obj->field.access_length;
479 }
480
458 if (!(handler_desc->address_space.handler_flags &481 if (!(handler_desc->address_space.handler_flags &
459 ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {482 ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {
460 /*483 /*
@@ -469,7 +492,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 8 unmodified lines
469 492
470 status = handler(function,493 status = handler(function,
471 (region_obj->region.address + region_offset),494 (region_obj->region.address + region_offset),
472 bit_width, value, handler_desc->address_space.context,495 bit_width, value, context,
473 region_obj2->extra.region_context);496 region_obj2->extra.region_context);
474 497
475 if (ACPI_FAILURE(status)) {498 if (ACPI_FAILURE(status)) {
drivers/acpi/acpica/evrgnini.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evsci.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 ******************************************************************************/6 ******************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxface.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxfevnt.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxfgpe.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxfregn.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exconfig.c+4−4
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -297,9 +297,9 @@ acpi_ex_region_read(union acpi_operand_object *obj_desc, u32 length, u8 *buffer) · 285 unmodified lines
297 /* Bytewise reads */297 /* Bytewise reads */
298 298
299 for (i = 0; i < length; i++) {299 for (i = 0; i < length; i++) {
300 status = acpi_ev_address_space_dispatch(obj_desc, ACPI_READ,300 status =
301 region_offset, 8,301 acpi_ev_address_space_dispatch(obj_desc, NULL, ACPI_READ,
302 &value);302 region_offset, 8, &value);
303 if (ACPI_FAILURE(status)) {303 if (ACPI_FAILURE(status)) {
304 return status;304 return status;
305 }305 }
drivers/acpi/acpica/exconvrt.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/excreate.c+20−11
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -267,7 +267,7 @@ acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state) · 255 unmodified lines
267 *267 *
268 * PARAMETERS: aml_start - Pointer to the region declaration AML268 * PARAMETERS: aml_start - Pointer to the region declaration AML
269 * aml_length - Max length of the declaration AML269 * aml_length - Max length of the declaration AML
270 * region_space - space_iD for the region270 * space_id - Address space ID for the region
271 * walk_state - Current state271 * walk_state - Current state
272 *272 *
273 * RETURN: Status273 * RETURN: Status
@@ -279,7 +279,7 @@ acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state) · 5 unmodified lines
279acpi_status279acpi_status
280acpi_ex_create_region(u8 * aml_start,280acpi_ex_create_region(u8 * aml_start,
281 u32 aml_length,281 u32 aml_length,
282 u8 region_space, struct acpi_walk_state *walk_state)282 u8 space_id, struct acpi_walk_state *walk_state)
283{283{
284 acpi_status status;284 acpi_status status;
285 union acpi_operand_object *obj_desc;285 union acpi_operand_object *obj_desc;
@@ -304,16 +304,19 @@ acpi_ex_create_region(u8 * aml_start, · 18 unmodified lines
304 * Space ID must be one of the predefined IDs, or in the user-defined304 * Space ID must be one of the predefined IDs, or in the user-defined
305 * range305 * range
306 */306 */
307 if ((region_space >= ACPI_NUM_PREDEFINED_REGIONS) &&307 if (!acpi_is_valid_space_id(space_id)) {
308 (region_space < ACPI_USER_REGION_BEGIN) &&308 /*
309 (region_space != ACPI_ADR_SPACE_DATA_TABLE)) {309 * Print an error message, but continue. We don't want to abort
310 ACPI_ERROR((AE_INFO, "Invalid AddressSpace type 0x%X",310 * a table load for this exception. Instead, if the region is
311 region_space));311 * actually used at runtime, abort the executing method.
312 return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);312 */
313 ACPI_ERROR((AE_INFO,
314 "Invalid/unknown Address Space ID: 0x%2.2X",
315 space_id));
313 }316 }
314 317
315 ACPI_DEBUG_PRINT((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n",318 ACPI_DEBUG_PRINT((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n",
316 acpi_ut_get_region_name(region_space), region_space));319 acpi_ut_get_region_name(space_id), space_id));
317 320
318 /* Create the region descriptor */321 /* Create the region descriptor */
319 322
@@ -330,10 +333,16 @@ acpi_ex_create_region(u8 * aml_start, · 10 unmodified lines
330 region_obj2 = obj_desc->common.next_object;333 region_obj2 = obj_desc->common.next_object;
331 region_obj2->extra.aml_start = aml_start;334 region_obj2->extra.aml_start = aml_start;
332 region_obj2->extra.aml_length = aml_length;335 region_obj2->extra.aml_length = aml_length;
336 if (walk_state->scope_info) {
337 region_obj2->extra.scope_node =
338 walk_state->scope_info->scope.node;
339 } else {
340 region_obj2->extra.scope_node = node;
341 }
333 342
334 /* Init the region from the operands */343 /* Init the region from the operands */
335 344
336 obj_desc->region.space_id = region_space;345 obj_desc->region.space_id = space_id;
337 obj_desc->region.address = 0;346 obj_desc->region.address = 0;
338 obj_desc->region.length = 0;347 obj_desc->region.length = 0;
339 obj_desc->region.node = node;348 obj_desc->region.node = node;
drivers/acpi/acpica/exdebug.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exdump.c+6−3
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -192,10 +192,13 @@ static struct acpi_exdump_info acpi_ex_dump_buffer_field[3] = { · 180 unmodified lines
192 "Buffer Object"}192 "Buffer Object"}
193};193};
194 194
195static struct acpi_exdump_info acpi_ex_dump_region_field[3] = {195static struct acpi_exdump_info acpi_ex_dump_region_field[5] = {
196 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_region_field), NULL},196 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_region_field), NULL},
197 {ACPI_EXD_FIELD, 0, NULL},197 {ACPI_EXD_FIELD, 0, NULL},
198 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.region_obj), "Region Object"}198 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(field.access_length), "AccessLength"},
199 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.region_obj), "Region Object"},
200 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.resource_buffer),
201 "ResourceBuffer"}
199};202};
200 203
201static struct acpi_exdump_info acpi_ex_dump_bank_field[5] = {204static struct acpi_exdump_info acpi_ex_dump_bank_field[5] = {
drivers/acpi/acpica/exfield.c+22−8
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -100,18 +100,25 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state, · 88 unmodified lines
100 (obj_desc->field.region_obj->region.space_id ==100 (obj_desc->field.region_obj->region.space_id ==
101 ACPI_ADR_SPACE_SMBUS101 ACPI_ADR_SPACE_SMBUS
102 || obj_desc->field.region_obj->region.space_id ==102 || obj_desc->field.region_obj->region.space_id ==
103 ACPI_ADR_SPACE_GSBUS
104 || obj_desc->field.region_obj->region.space_id ==
103 ACPI_ADR_SPACE_IPMI)) {105 ACPI_ADR_SPACE_IPMI)) {
104 /*106 /*
105 * This is an SMBus or IPMI read. We must create a buffer to hold107 * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold
106 * the data and then directly access the region handler.108 * the data and then directly access the region handler.
107 *109 *
108 * Note: Smbus protocol value is passed in upper 16-bits of Function110 * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function
109 */111 */
110 if (obj_desc->field.region_obj->region.space_id ==112 if (obj_desc->field.region_obj->region.space_id ==
111 ACPI_ADR_SPACE_SMBUS) {113 ACPI_ADR_SPACE_SMBUS) {
112 length = ACPI_SMBUS_BUFFER_SIZE;114 length = ACPI_SMBUS_BUFFER_SIZE;
113 function =115 function =
114 ACPI_READ | (obj_desc->field.attribute << 16);116 ACPI_READ | (obj_desc->field.attribute << 16);
117 } else if (obj_desc->field.region_obj->region.space_id ==
118 ACPI_ADR_SPACE_GSBUS) {
119 length = ACPI_GSBUS_BUFFER_SIZE;
120 function =
121 ACPI_READ | (obj_desc->field.attribute << 16);
115 } else { /* IPMI */122 } else { /* IPMI */
116 123
117 length = ACPI_IPMI_BUFFER_SIZE;124 length = ACPI_IPMI_BUFFER_SIZE;
@@ -248,21 +255,23 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, · 130 unmodified lines
248 (obj_desc->field.region_obj->region.space_id ==255 (obj_desc->field.region_obj->region.space_id ==
249 ACPI_ADR_SPACE_SMBUS256 ACPI_ADR_SPACE_SMBUS
250 || obj_desc->field.region_obj->region.space_id ==257 || obj_desc->field.region_obj->region.space_id ==
258 ACPI_ADR_SPACE_GSBUS
259 || obj_desc->field.region_obj->region.space_id ==
251 ACPI_ADR_SPACE_IPMI)) {260 ACPI_ADR_SPACE_IPMI)) {
252 /*261 /*
253 * This is an SMBus or IPMI write. We will bypass the entire field262 * This is an SMBus, GSBus or IPMI write. We will bypass the entire field
254 * mechanism and handoff the buffer directly to the handler. For263 * mechanism and handoff the buffer directly to the handler. For
255 * these address spaces, the buffer is bi-directional; on a write,264 * these address spaces, the buffer is bi-directional; on a write,
256 * return data is returned in the same buffer.265 * return data is returned in the same buffer.
257 *266 *
258 * Source must be a buffer of sufficient size:267 * Source must be a buffer of sufficient size:
259 * ACPI_SMBUS_BUFFER_SIZE or ACPI_IPMI_BUFFER_SIZE.268 * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE.
260 *269 *
261 * Note: SMBus protocol type is passed in upper 16-bits of Function270 * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function
262 */271 */
263 if (source_desc->common.type != ACPI_TYPE_BUFFER) {272 if (source_desc->common.type != ACPI_TYPE_BUFFER) {
264 ACPI_ERROR((AE_INFO,273 ACPI_ERROR((AE_INFO,
265 "SMBus or IPMI write requires Buffer, found type %s",274 "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s",
266 acpi_ut_get_object_type_name(source_desc)));275 acpi_ut_get_object_type_name(source_desc)));
267 276
268 return_ACPI_STATUS(AE_AML_OPERAND_TYPE);277 return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
@@ -273,6 +282,11 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, · 4 unmodified lines
273 length = ACPI_SMBUS_BUFFER_SIZE;282 length = ACPI_SMBUS_BUFFER_SIZE;
274 function =283 function =
275 ACPI_WRITE | (obj_desc->field.attribute << 16);284 ACPI_WRITE | (obj_desc->field.attribute << 16);
285 } else if (obj_desc->field.region_obj->region.space_id ==
286 ACPI_ADR_SPACE_GSBUS) {
287 length = ACPI_GSBUS_BUFFER_SIZE;
288 function =
289 ACPI_WRITE | (obj_desc->field.attribute << 16);
276 } else { /* IPMI */290 } else { /* IPMI */
277 291
278 length = ACPI_IPMI_BUFFER_SIZE;292 length = ACPI_IPMI_BUFFER_SIZE;
@@ -281,7 +295,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, · 2 unmodified lines
281 295
282 if (source_desc->buffer.length < length) {296 if (source_desc->buffer.length < length) {
283 ACPI_ERROR((AE_INFO,297 ACPI_ERROR((AE_INFO,
284 "SMBus or IPMI write requires Buffer of length %u, found length %u",298 "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u",
285 length, source_desc->buffer.length));299 length, source_desc->buffer.length));
286 300
287 return_ACPI_STATUS(AE_AML_BUFFER_LIMIT);301 return_ACPI_STATUS(AE_AML_BUFFER_LIMIT);
drivers/acpi/acpica/exfldio.c+29−9
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -86,6 +86,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc, · 74 unmodified lines
86{86{
87 acpi_status status = AE_OK;87 acpi_status status = AE_OK;
88 union acpi_operand_object *rgn_desc;88 union acpi_operand_object *rgn_desc;
89 u8 space_id;
89 90
90 ACPI_FUNCTION_TRACE_U32(ex_setup_region, field_datum_byte_offset);91 ACPI_FUNCTION_TRACE_U32(ex_setup_region, field_datum_byte_offset);
91 92
@@ -101,6 +102,17 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc, · 9 unmodified lines
101 return_ACPI_STATUS(AE_AML_OPERAND_TYPE);102 return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
102 }103 }
103 104
105 space_id = rgn_desc->region.space_id;
106
107 /* Validate the Space ID */
108
109 if (!acpi_is_valid_space_id(space_id)) {
110 ACPI_ERROR((AE_INFO,
111 "Invalid/unknown Address Space ID: 0x%2.2X",
112 space_id));
113 return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
114 }
115
104 /*116 /*
105 * If the Region Address and Length have not been previously evaluated,117 * If the Region Address and Length have not been previously evaluated,
106 * evaluate them now and save the results.118 * evaluate them now and save the results.
@@ -119,11 +131,12 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc, · 12 unmodified lines
119 }131 }
120 132
121 /*133 /*
122 * Exit now for SMBus or IPMI address space, it has a non-linear134 * Exit now for SMBus, GSBus or IPMI address space, it has a non-linear
123 * address space and the request cannot be directly validated135 * address space and the request cannot be directly validated
124 */136 */
125 if (rgn_desc->region.space_id == ACPI_ADR_SPACE_SMBUS ||137 if (space_id == ACPI_ADR_SPACE_SMBUS ||
126 rgn_desc->region.space_id == ACPI_ADR_SPACE_IPMI) {138 space_id == ACPI_ADR_SPACE_GSBUS ||
139 space_id == ACPI_ADR_SPACE_IPMI) {
127 140
128 /* SMBus or IPMI has a non-linear address space */141 /* SMBus or IPMI has a non-linear address space */
129 142
@@ -271,11 +284,12 @@ acpi_ex_access_region(union acpi_operand_object *obj_desc, · 141 unmodified lines
271 284
272 /* Invoke the appropriate address_space/op_region handler */285 /* Invoke the appropriate address_space/op_region handler */
273 286
274 status =287 status = acpi_ev_address_space_dispatch(rgn_desc, obj_desc,
275 acpi_ev_address_space_dispatch(rgn_desc, function, region_offset,288 function, region_offset,
276 ACPI_MUL_8(obj_desc->common_field.289 ACPI_MUL_8(obj_desc->
277 access_byte_width),290 common_field.
278 value);291 access_byte_width),
292 value);
279 293
280 if (ACPI_FAILURE(status)) {294 if (ACPI_FAILURE(status)) {
281 if (status == AE_NOT_IMPLEMENTED) {295 if (status == AE_NOT_IMPLEMENTED) {
@@ -316,6 +330,7 @@ acpi_ex_access_region(union acpi_operand_object *obj_desc, · 34 unmodified lines
316static u8330static u8
317acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value)331acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value)
318{332{
333 ACPI_FUNCTION_NAME(ex_register_overflow);
319 334
320 if (obj_desc->common_field.bit_length >= ACPI_INTEGER_BIT_SIZE) {335 if (obj_desc->common_field.bit_length >= ACPI_INTEGER_BIT_SIZE) {
321 /*336 /*
@@ -330,6 +345,11 @@ acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value) · 8 unmodified lines
330 * The Value is larger than the maximum value that can fit into345 * The Value is larger than the maximum value that can fit into
331 * the register.346 * the register.
332 */347 */
348 ACPI_ERROR((AE_INFO,
349 "Index value 0x%8.8X%8.8X overflows field width 0x%X",
350 ACPI_FORMAT_UINT64(value),
351 obj_desc->common_field.bit_length));
352
333 return (TRUE);353 return (TRUE);
334 }354 }
335 355
drivers/acpi/acpica/exmisc.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exmutex.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exnames.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg1.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg2.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg3.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg6.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exprep.c+26−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -47,6 +47,7 @@ · 34 unmodified lines
47#include "acinterp.h"47#include "acinterp.h"
48#include "amlcode.h"48#include "amlcode.h"
49#include "acnamesp.h"49#include "acnamesp.h"
50#include "acdispat.h"
50 51
51#define _COMPONENT ACPI_EXECUTER52#define _COMPONENT ACPI_EXECUTER
52ACPI_MODULE_NAME("exprep")53ACPI_MODULE_NAME("exprep")
@@ -455,6 +456,30 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info) · 402 unmodified lines
455 obj_desc->field.region_obj =456 obj_desc->field.region_obj =
456 acpi_ns_get_attached_object(info->region_node);457 acpi_ns_get_attached_object(info->region_node);
457 458
459 /* Fields specific to generic_serial_bus fields */
460
461 obj_desc->field.access_length = info->access_length;
462
463 if (info->connection_node) {
464 second_desc = info->connection_node->object;
465 if (!(second_desc->common.flags & AOPOBJ_DATA_VALID)) {
466 status =
467 acpi_ds_get_buffer_arguments(second_desc);
468 if (ACPI_FAILURE(status)) {
469 acpi_ut_delete_object_desc(obj_desc);
470 return_ACPI_STATUS(status);
471 }
472 }
473
474 obj_desc->field.resource_buffer =
475 second_desc->buffer.pointer;
476 obj_desc->field.resource_length =
477 (u16)second_desc->buffer.length;
478 } else if (info->resource_buffer) {
479 obj_desc->field.resource_buffer = info->resource_buffer;
480 obj_desc->field.resource_length = info->resource_length;
481 }
482
458 /* Allow full data read from EC address space */483 /* Allow full data read from EC address space */
459 484
460 if ((obj_desc->field.region_obj->region.space_id ==485 if ((obj_desc->field.region_obj->region.space_id ==
drivers/acpi/acpica/exregion.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exresnte.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exresolv.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exresop.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exstore.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exstoren.c+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7 *****************************************************************************/7 *****************************************************************************/
8 8
9/*9/*
10 * Copyright (C) 2000 - 2011, Intel Corp.10 * Copyright (C) 2000 - 2012, Intel Corp.
11 * All rights reserved.11 * All rights reserved.
12 *12 *
13 * Redistribution and use in source and binary forms, with or without13 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exstorob.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exsystem.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exutils.c+26−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -435,4 +435,29 @@ void acpi_ex_integer_to_string(char *out_string, u64 value) · 422 unmodified lines
435 }435 }
436}436}
437 437
438/*******************************************************************************
439 *
440 * FUNCTION: acpi_is_valid_space_id
441 *
442 * PARAMETERS: space_id - ID to be validated
443 *
444 * RETURN: TRUE if valid/supported ID.
445 *
446 * DESCRIPTION: Validate an operation region space_iD.
447 *
448 ******************************************************************************/
449
450u8 acpi_is_valid_space_id(u8 space_id)
451{
452
453 if ((space_id >= ACPI_NUM_PREDEFINED_REGIONS) &&
454 (space_id < ACPI_USER_REGION_BEGIN) &&
455 (space_id != ACPI_ADR_SPACE_DATA_TABLE) &&
456 (space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
457 return (FALSE);
458 }
459
460 return (TRUE);
461}
462
438#endif463#endif
drivers/acpi/acpica/hwacpi.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwgpe.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwpci.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwregs.c+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
7 ******************************************************************************/7 ******************************************************************************/
8 8
9/*9/*
10 * Copyright (C) 2000 - 2011, Intel Corp.10 * Copyright (C) 2000 - 2012, Intel Corp.
11 * All rights reserved.11 * All rights reserved.
12 *12 *
13 * Redistribution and use in source and binary forms, with or without13 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwsleep.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwtimer.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwvalid.c+3−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -134,6 +134,8 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width) · 121 unmodified lines
134 /* Supported widths are 8/16/32 */134 /* Supported widths are 8/16/32 */
135 135
136 if ((bit_width != 8) && (bit_width != 16) && (bit_width != 32)) {136 if ((bit_width != 8) && (bit_width != 16) && (bit_width != 32)) {
137 ACPI_ERROR((AE_INFO,
138 "Bad BitWidth parameter: %8.8X", bit_width));
137 return AE_BAD_PARAMETER;139 return AE_BAD_PARAMETER;
138 }140 }
139 141
drivers/acpi/acpica/hwxface.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsaccess.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsalloc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsdump.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsdumpdv.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nseval.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsinit.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsload.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsnames.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsobject.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 ******************************************************************************/6 ******************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsparse.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nspredef.c+30−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -620,6 +620,7 @@ acpi_ns_check_package(struct acpi_predefined_data *data, · 607 unmodified lines
620 case ACPI_PTYPE2_FIXED:620 case ACPI_PTYPE2_FIXED:
621 case ACPI_PTYPE2_MIN:621 case ACPI_PTYPE2_MIN:
622 case ACPI_PTYPE2_COUNT:622 case ACPI_PTYPE2_COUNT:
623 case ACPI_PTYPE2_FIX_VAR:
623 624
624 /*625 /*
625 * These types all return a single Package that consists of a626 * These types all return a single Package that consists of a
@@ -759,6 +760,34 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data, · 133 unmodified lines
759 }760 }
760 break;761 break;
761 762
763 case ACPI_PTYPE2_FIX_VAR:
764 /*
765 * Each subpackage has a fixed number of elements and an
766 * optional element
767 */
768 expected_count =
769 package->ret_info.count1 + package->ret_info.count2;
770 if (sub_package->package.count < expected_count) {
771 goto package_too_small;
772 }
773
774 status =
775 acpi_ns_check_package_elements(data, sub_elements,
776 package->ret_info.
777 object_type1,
778 package->ret_info.
779 count1,
780 package->ret_info.
781 object_type2,
782 sub_package->package.
783 count -
784 package->ret_info.
785 count1, 0);
786 if (ACPI_FAILURE(status)) {
787 return (status);
788 }
789 break;
790
762 case ACPI_PTYPE2_FIXED:791 case ACPI_PTYPE2_FIXED:
763 792
764 /* Each sub-package has a fixed length */793 /* Each sub-package has a fixed length */
drivers/acpi/acpica/nsrepair.c+2−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -634,6 +634,7 @@ acpi_ns_remove_null_elements(struct acpi_predefined_data *data, · 622 unmodified lines
634 case ACPI_PTYPE2_FIXED:634 case ACPI_PTYPE2_FIXED:
635 case ACPI_PTYPE2_MIN:635 case ACPI_PTYPE2_MIN:
636 case ACPI_PTYPE2_REV_FIXED:636 case ACPI_PTYPE2_REV_FIXED:
637 case ACPI_PTYPE2_FIX_VAR:
637 break;638 break;
638 639
639 default:640 default:
drivers/acpi/acpica/nsrepair2.c+4−3
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
@@ -467,11 +467,12 @@ acpi_ns_repair_HID(struct acpi_predefined_data *data, · 454 unmodified lines
467 }467 }
468 468
469 /*469 /*
470 * Copy and uppercase the string. From the ACPI specification:470 * Copy and uppercase the string. From the ACPI 5.0 specification:
471 *471 *
472 * A valid PNP ID must be of the form "AAA####" where A is an uppercase472 * A valid PNP ID must be of the form "AAA####" where A is an uppercase
473 * letter and # is a hex digit. A valid ACPI ID must be of the form473 * letter and # is a hex digit. A valid ACPI ID must be of the form
474 * "ACPI####" where # is a hex digit.474 * "NNNN####" where N is an uppercase letter or decimal digit, and
475 * # is a hex digit.
475 */476 */
476 for (dest = new_string->string.pointer; *source; dest++, source++) {477 for (dest = new_string->string.pointer; *source; dest++, source++) {
477 *dest = (char)ACPI_TOUPPER(*source);478 *dest = (char)ACPI_TOUPPER(*source);
drivers/acpi/acpica/nssearch.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsutils.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nswalk.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsxfeval.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 ******************************************************************************/6 ******************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsxfname.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsxfobj.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 ******************************************************************************/6 ******************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psargs.c+129−14
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -484,34 +484,54 @@ acpi_ps_get_next_simple_arg(struct acpi_parse_state *parser_state, · 472 unmodified lines
484static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state484static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
485 *parser_state)485 *parser_state)
486{486{
487 u32 aml_offset = (u32)487 u32 aml_offset;
488 ACPI_PTR_DIFF(parser_state->aml,
489 parser_state->aml_start);
490 union acpi_parse_object *field;488 union acpi_parse_object *field;
489 union acpi_parse_object *arg = NULL;
491 u16 opcode;490 u16 opcode;
492 u32 name;491 u32 name;
492 u8 access_type;
493 u8 access_attribute;
494 u8 access_length;
495 u32 pkg_length;
496 u8 *pkg_end;
497 u32 buffer_length;
493 498
494 ACPI_FUNCTION_TRACE(ps_get_next_field);499 ACPI_FUNCTION_TRACE(ps_get_next_field);
495 500
501 aml_offset =
502 (u32)ACPI_PTR_DIFF(parser_state->aml, parser_state->aml_start);
503
496 /* Determine field type */504 /* Determine field type */
497 505
498 switch (ACPI_GET8(parser_state->aml)) {506 switch (ACPI_GET8(parser_state->aml)) {
499 default:507 case AML_FIELD_OFFSET_OP:
500 508
501 opcode = AML_INT_NAMEDFIELD_OP;509 opcode = AML_INT_RESERVEDFIELD_OP;
510 parser_state->aml++;
502 break;511 break;
503 512
504 case 0x00:513 case AML_FIELD_ACCESS_OP:
505 514
506 opcode = AML_INT_RESERVEDFIELD_OP;515 opcode = AML_INT_ACCESSFIELD_OP;
507 parser_state->aml++;516 parser_state->aml++;
508 break;517 break;
509 518
510 case 0x01:519 case AML_FIELD_CONNECTION_OP:
511 520
512 opcode = AML_INT_ACCESSFIELD_OP;521 opcode = AML_INT_CONNECTION_OP;
522 parser_state->aml++;
523 break;
524
525 case AML_FIELD_EXT_ACCESS_OP:
526
527 opcode = AML_INT_EXTACCESSFIELD_OP;
513 parser_state->aml++;528 parser_state->aml++;
514 break;529 break;
530
531 default:
532
533 opcode = AML_INT_NAMEDFIELD_OP;
534 break;
515 }535 }
516 536
517 /* Allocate a new field op */537 /* Allocate a new field op */
@@ -549,16 +569,111 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state · 31 unmodified lines
549 break;569 break;
550 570
551 case AML_INT_ACCESSFIELD_OP:571 case AML_INT_ACCESSFIELD_OP:
572 case AML_INT_EXTACCESSFIELD_OP:
552 573
553 /*574 /*
554 * Get access_type and access_attrib and merge into the field Op575 * Get access_type and access_attrib and merge into the field Op
555 * access_type is first operand, access_attribute is second576 * access_type is first operand, access_attribute is second. stuff
577 * these bytes into the node integer value for convenience.
556 */578 */
557 field->common.value.integer =579
558 (((u32) ACPI_GET8(parser_state->aml) << 8));580 /* Get the two bytes (Type/Attribute) */
581
582 access_type = ACPI_GET8(parser_state->aml);
559 parser_state->aml++;583 parser_state->aml++;
560 field->common.value.integer |= ACPI_GET8(parser_state->aml);584 access_attribute = ACPI_GET8(parser_state->aml);
561 parser_state->aml++;585 parser_state->aml++;
586
587 field->common.value.integer = (u8)access_type;
588 field->common.value.integer |= (u16)(access_attribute << 8);
589
590 /* This opcode has a third byte, access_length */
591
592 if (opcode == AML_INT_EXTACCESSFIELD_OP) {
593 access_length = ACPI_GET8(parser_state->aml);
594 parser_state->aml++;
595
596 field->common.value.integer |=
597 (u32)(access_length << 16);
598 }
599 break;
600
601 case AML_INT_CONNECTION_OP:
602
603 /*
604 * Argument for Connection operator can be either a Buffer
605 * (resource descriptor), or a name_string.
606 */
607 if (ACPI_GET8(parser_state->aml) == AML_BUFFER_OP) {
608 parser_state->aml++;
609
610 pkg_end = parser_state->aml;
611 pkg_length =
612 acpi_ps_get_next_package_length(parser_state);
613 pkg_end += pkg_length;
614
615 if (parser_state->aml < pkg_end) {
616
617 /* Non-empty list */
618
619 arg = acpi_ps_alloc_op(AML_INT_BYTELIST_OP);
620 if (!arg) {
621 return_PTR(NULL);
622 }
623
624 /* Get the actual buffer length argument */
625
626 opcode = ACPI_GET8(parser_state->aml);
627 parser_state->aml++;
628
629 switch (opcode) {
630 case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
631 buffer_length =
632 ACPI_GET8(parser_state->aml);
633 parser_state->aml += 1;
634 break;
635
636 case AML_WORD_OP: /* AML_WORDDATA_ARG */
637 buffer_length =
638 ACPI_GET16(parser_state->aml);
639 parser_state->aml += 2;
640 break;
641
642 case AML_DWORD_OP: /* AML_DWORDATA_ARG */
643 buffer_length =
644 ACPI_GET32(parser_state->aml);
645 parser_state->aml += 4;
646 break;
647
648 default:
649 buffer_length = 0;
650 break;
651 }
652
653 /* Fill in bytelist data */
654
655 arg->named.value.size = buffer_length;
656 arg->named.data = parser_state->aml;
657 }
658
659 /* Skip to End of byte data */
660
661 parser_state->aml = pkg_end;
662 } else {
663 arg = acpi_ps_alloc_op(AML_INT_NAMEPATH_OP);
664 if (!arg) {
665 return_PTR(NULL);
666 }
667
668 /* Get the Namestring argument */
669
670 arg->common.value.name =
671 acpi_ps_get_next_namestring(parser_state);
672 }
673
674 /* Link the buffer/namestring to parent (CONNECTION_OP) */
675
676 acpi_ps_append_arg(field, arg);
562 break;677 break;
563 678
564 default:679 default:
drivers/acpi/acpica/psloop.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psopcode.c+12−3
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -638,7 +638,16 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = { · 626 unmodified lines
638 638
639/* 7E */ ACPI_OP("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY,639/* 7E */ ACPI_OP("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY,
640 AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R,640 AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R,
641 AML_FLAGS_EXEC_0A_0T_1R)641 AML_FLAGS_EXEC_0A_0T_1R),
642
643/* ACPI 5.0 opcodes */
644
645/* 7F */ ACPI_OP("-ConnectField-", ARGP_CONNECTFIELD_OP,
646 ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY,
647 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),
648/* 80 */ ACPI_OP("-ExtAccessField-", ARGP_CONNECTFIELD_OP,
649 ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY,
650 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0)
642 651
643/*! [End] no source code translation !*/652/*! [End] no source code translation !*/
644};653};
@@ -657,7 +666,7 @@ static const u8 acpi_gbl_short_op_index[256] = { · 12 unmodified lines
657/* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,666/* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
658/* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,667/* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
659/* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,668/* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
660/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,669/* 0x38 */ 0x7F, 0x80, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
661/* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,670/* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
662/* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,671/* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
663/* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,672/* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
drivers/acpi/acpica/psparse.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psscope.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/pstree.c+7−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -74,6 +74,12 @@ union acpi_parse_object *acpi_ps_get_arg(union acpi_parse_object *op, u32 argn) · 62 unmodified lines
74 74
75 ACPI_FUNCTION_ENTRY();75 ACPI_FUNCTION_ENTRY();
76 76
77/*
78 if (Op->Common.aml_opcode == AML_INT_CONNECTION_OP)
79 {
80 return (Op->Common.Value.Arg);
81 }
82*/
77 /* Get the info structure for this opcode */83 /* Get the info structure for this opcode */
78 84
79 op_info = acpi_ps_get_opcode_info(op->common.aml_opcode);85 op_info = acpi_ps_get_opcode_info(op->common.aml_opcode);
drivers/acpi/acpica/psutils.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/pswalk.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psxface.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rsaddr.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rscalc.c+81−8
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -313,6 +313,38 @@ acpi_rs_get_aml_length(struct acpi_resource * resource, acpi_size * size_needed) · 301 unmodified lines
313 resource_source));313 resource_source));
314 break;314 break;
315 315
316 case ACPI_RESOURCE_TYPE_GPIO:
317
318 total_size =
319 (acpi_rs_length) (total_size +
320 (resource->data.gpio.
321 pin_table_length * 2) +
322 resource->data.gpio.
323 resource_source.string_length +
324 resource->data.gpio.
325 vendor_length);
326
327 break;
328
329 case ACPI_RESOURCE_TYPE_SERIAL_BUS:
330
331 total_size =
332 acpi_gbl_aml_resource_serial_bus_sizes[resource->
333 data.
334 common_serial_bus.
335 type];
336
337 total_size = (acpi_rs_length) (total_size +
338 resource->data.
339 i2c_serial_bus.
340 resource_source.
341 string_length +
342 resource->data.
343 i2c_serial_bus.
344 vendor_length);
345
346 break;
347
316 default:348 default:
317 break;349 break;
318 }350 }
@@ -362,10 +394,11 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 43 unmodified lines
362 u32 extra_struct_bytes;394 u32 extra_struct_bytes;
363 u8 resource_index;395 u8 resource_index;
364 u8 minimum_aml_resource_length;396 u8 minimum_aml_resource_length;
397 union aml_resource *aml_resource;
365 398
366 ACPI_FUNCTION_TRACE(rs_get_list_length);399 ACPI_FUNCTION_TRACE(rs_get_list_length);
367 400
368 *size_needed = 0;401 *size_needed = ACPI_RS_SIZE_MIN; /* Minimum size is one end_tag */
369 end_aml = aml_buffer + aml_buffer_length;402 end_aml = aml_buffer + aml_buffer_length;
370 403
371 /* Walk the list of AML resource descriptors */404 /* Walk the list of AML resource descriptors */
@@ -376,9 +409,15 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 4 unmodified lines
376 409
377 status = acpi_ut_validate_resource(aml_buffer, &resource_index);410 status = acpi_ut_validate_resource(aml_buffer, &resource_index);
378 if (ACPI_FAILURE(status)) {411 if (ACPI_FAILURE(status)) {
412 /*
413 * Exit on failure. Cannot continue because the descriptor length
414 * may be bogus also.
415 */
379 return_ACPI_STATUS(status);416 return_ACPI_STATUS(status);
380 }417 }
381 418
419 aml_resource = (void *)aml_buffer;
420
382 /* Get the resource length and base (minimum) AML size */421 /* Get the resource length and base (minimum) AML size */
383 422
384 resource_length = acpi_ut_get_resource_length(aml_buffer);423 resource_length = acpi_ut_get_resource_length(aml_buffer);
@@ -422,10 +461,8 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 37 unmodified lines
422 461
423 case ACPI_RESOURCE_NAME_END_TAG:462 case ACPI_RESOURCE_NAME_END_TAG:
424 /*463 /*
425 * End Tag:464 * End Tag: This is the normal exit
426 * This is the normal exit, add size of end_tag
427 */465 */
428 *size_needed += ACPI_RS_SIZE_MIN;
429 return_ACPI_STATUS(AE_OK);466 return_ACPI_STATUS(AE_OK);
430 467
431 case ACPI_RESOURCE_NAME_ADDRESS32:468 case ACPI_RESOURCE_NAME_ADDRESS32:
@@ -457,6 +494,33 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 25 unmodified lines
457 minimum_aml_resource_length);494 minimum_aml_resource_length);
458 break;495 break;
459 496
497 case ACPI_RESOURCE_NAME_GPIO:
498
499 /* Vendor data is optional */
500
501 if (aml_resource->gpio.vendor_length) {
502 extra_struct_bytes +=
503 aml_resource->gpio.vendor_offset -
504 aml_resource->gpio.pin_table_offset +
505 aml_resource->gpio.vendor_length;
506 } else {
507 extra_struct_bytes +=
508 aml_resource->large_header.resource_length +
509 sizeof(struct aml_resource_large_header) -
510 aml_resource->gpio.pin_table_offset;
511 }
512 break;
513
514 case ACPI_RESOURCE_NAME_SERIAL_BUS:
515
516 minimum_aml_resource_length =
517 acpi_gbl_resource_aml_serial_bus_sizes
518 [aml_resource->common_serial_bus.type];
519 extra_struct_bytes +=
520 aml_resource->common_serial_bus.resource_length -
521 minimum_aml_resource_length;
522 break;
523
460 default:524 default:
461 break;525 break;
462 }526 }
@@ -467,9 +531,18 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 4 unmodified lines
467 * Important: Round the size up for the appropriate alignment. This531 * Important: Round the size up for the appropriate alignment. This
468 * is a requirement on IA64.532 * is a requirement on IA64.
469 */533 */
470 buffer_size = acpi_gbl_resource_struct_sizes[resource_index] +534 if (acpi_ut_get_resource_type(aml_buffer) ==
471 extra_struct_bytes;535 ACPI_RESOURCE_NAME_SERIAL_BUS) {
472 buffer_size = (u32) ACPI_ROUND_UP_TO_NATIVE_WORD(buffer_size);536 buffer_size =
537 acpi_gbl_resource_struct_serial_bus_sizes
538 [aml_resource->common_serial_bus.type] +
539 extra_struct_bytes;
540 } else {
541 buffer_size =
542 acpi_gbl_resource_struct_sizes[resource_index] +
543 extra_struct_bytes;
544 }
545 buffer_size = (u32)ACPI_ROUND_UP_TO_NATIVE_WORD(buffer_size);
473 546
474 *size_needed += buffer_size;547 *size_needed += buffer_size;
475 548
drivers/acpi/acpica/rscreate.c+67−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -49,6 +49,70 @@ · 37 unmodified lines
49#define _COMPONENT ACPI_RESOURCES49#define _COMPONENT ACPI_RESOURCES
50ACPI_MODULE_NAME("rscreate")50ACPI_MODULE_NAME("rscreate")
51 51
52/*******************************************************************************
53 *
54 * FUNCTION: acpi_buffer_to_resource
55 *
56 * PARAMETERS: aml_buffer - Pointer to the resource byte stream
57 * aml_buffer_length - Length of the aml_buffer
58 * resource_ptr - Where the converted resource is returned
59 *
60 * RETURN: Status
61 *
62 * DESCRIPTION: Convert a raw AML buffer to a resource list
63 *
64 ******************************************************************************/
65acpi_status
66acpi_buffer_to_resource(u8 *aml_buffer,
67 u16 aml_buffer_length,
68 struct acpi_resource **resource_ptr)
69{
70 acpi_status status;
71 acpi_size list_size_needed;
72 void *resource;
73 void *current_resource_ptr;
74
75 /*
76 * Note: we allow AE_AML_NO_RESOURCE_END_TAG, since an end tag
77 * is not required here.
78 */
79
80 /* Get the required length for the converted resource */
81
82 status = acpi_rs_get_list_length(aml_buffer, aml_buffer_length,
83 &list_size_needed);
84 if (status == AE_AML_NO_RESOURCE_END_TAG) {
85 status = AE_OK;
86 }
87 if (ACPI_FAILURE(status)) {
88 return (status);
89 }
90
91 /* Allocate a buffer for the converted resource */
92
93 resource = ACPI_ALLOCATE_ZEROED(list_size_needed);
94 current_resource_ptr = resource;
95 if (!resource) {
96 return (AE_NO_MEMORY);
97 }
98
99 /* Perform the AML-to-Resource conversion */
100
101 status = acpi_ut_walk_aml_resources(aml_buffer, aml_buffer_length,
102 acpi_rs_convert_aml_to_resources,
103 &current_resource_ptr);
104 if (status == AE_AML_NO_RESOURCE_END_TAG) {
105 status = AE_OK;
106 }
107 if (ACPI_FAILURE(status)) {
108 ACPI_FREE(resource);
109 } else {
110 *resource_ptr = resource;
111 }
112
113 return (status);
114}
115
52/*******************************************************************************116/*******************************************************************************
53 *117 *
54 * FUNCTION: acpi_rs_create_resource_list118 * FUNCTION: acpi_rs_create_resource_list
@@ -66,9 +130,10 @@ ACPI_MODULE_NAME("rscreate") · 11 unmodified lines
66 * of device resources.130 * of device resources.
67 *131 *
68 ******************************************************************************/132 ******************************************************************************/
133
69acpi_status134acpi_status
70acpi_rs_create_resource_list(union acpi_operand_object *aml_buffer,135acpi_rs_create_resource_list(union acpi_operand_object *aml_buffer,
71 struct acpi_buffer *output_buffer)136 struct acpi_buffer * output_buffer)
72{137{
73 138
74 acpi_status status;139 acpi_status status;
drivers/acpi/acpica/rsdump.c+186−10
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -61,11 +61,13 @@ static void acpi_rs_out_integer64(char *title, u64 value); · 49 unmodified lines
61 61
62static void acpi_rs_out_title(char *title);62static void acpi_rs_out_title(char *title);
63 63
64static void acpi_rs_dump_byte_list(u16 length, u8 * data);64static void acpi_rs_dump_byte_list(u16 length, u8 *data);
65 65
66static void acpi_rs_dump_dword_list(u8 length, u32 * data);66static void acpi_rs_dump_word_list(u16 length, u16 *data);
67 67
68static void acpi_rs_dump_short_byte_list(u8 length, u8 * data);68static void acpi_rs_dump_dword_list(u8 length, u32 *data);
69
70static void acpi_rs_dump_short_byte_list(u8 length, u8 *data);
69 71
70static void72static void
71acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source);73acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source);
@@ -309,6 +311,125 @@ struct acpi_rsdump_info acpi_rs_dump_generic_reg[6] = { · 237 unmodified lines
309 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(generic_reg.address), "Address", NULL}311 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(generic_reg.address), "Address", NULL}
310};312};
311 313
314struct acpi_rsdump_info acpi_rs_dump_gpio[16] = {
315 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_gpio), "GPIO", NULL},
316 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.revision_id), "RevisionId", NULL},
317 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.connection_type),
318 "ConnectionType", acpi_gbl_ct_decode},
319 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.producer_consumer),
320 "ProducerConsumer", acpi_gbl_consume_decode},
321 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.pin_config), "PinConfig",
322 acpi_gbl_ppc_decode},
323 {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.sharable), "Sharable",
324 acpi_gbl_shr_decode},
325 {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.io_restriction),
326 "IoRestriction", acpi_gbl_ior_decode},
327 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.triggering), "Triggering",
328 acpi_gbl_he_decode},
329 {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.polarity), "Polarity",
330 acpi_gbl_ll_decode},
331 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.drive_strength), "DriveStrength",
332 NULL},
333 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.debounce_timeout),
334 "DebounceTimeout", NULL},
335 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(gpio.resource_source),
336 "ResourceSource", NULL},
337 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.pin_table_length),
338 "PinTableLength", NULL},
339 {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(gpio.pin_table), "PinTable", NULL},
340 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.vendor_length), "VendorLength",
341 NULL},
342 {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(gpio.vendor_data), "VendorData",
343 NULL},
344};
345
346struct acpi_rsdump_info acpi_rs_dump_fixed_dma[4] = {
347 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_dma),
348 "FixedDma", NULL},
349 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.request_lines),
350 "RequestLines", NULL},
351 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.channels), "Channels",
352 NULL},
353 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_dma.width), "TransferWidth",
354 acpi_gbl_dts_decode},
355};
356
357#define ACPI_RS_DUMP_COMMON_SERIAL_BUS \
358 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.revision_id), "RevisionId", NULL}, \
359 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type), "Type", acpi_gbl_sbt_decode}, \
360 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.producer_consumer), "ProducerConsumer", acpi_gbl_consume_decode}, \
361 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.slave_mode), "SlaveMode", acpi_gbl_sm_decode}, \
362 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type_revision_id), "TypeRevisionId", NULL}, \
363 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.type_data_length), "TypeDataLength", NULL}, \
364 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (common_serial_bus.resource_source), "ResourceSource", NULL}, \
365 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.vendor_length), "VendorLength", NULL}, \
366 {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (common_serial_bus.vendor_data), "VendorData", NULL},
367
368struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[10] = {
369 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_common_serial_bus),
370 "Common Serial Bus", NULL},
371 ACPI_RS_DUMP_COMMON_SERIAL_BUS
372};
373
374struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[13] = {
375 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus),
376 "I2C Serial Bus", NULL},
377 ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
378 ACPI_RSD_OFFSET(i2c_serial_bus.
379 access_mode),
380 "AccessMode", acpi_gbl_am_decode},
381 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(i2c_serial_bus.connection_speed),
382 "ConnectionSpeed", NULL},
383 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(i2c_serial_bus.slave_address),
384 "SlaveAddress", NULL},
385};
386
387struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[17] = {
388 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus),
389 "Spi Serial Bus", NULL},
390 ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
391 ACPI_RSD_OFFSET(spi_serial_bus.
392 wire_mode), "WireMode",
393 acpi_gbl_wm_decode},
394 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(spi_serial_bus.device_polarity),
395 "DevicePolarity", acpi_gbl_dp_decode},
396 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.data_bit_length),
397 "DataBitLength", NULL},
398 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_phase),
399 "ClockPhase", acpi_gbl_cph_decode},
400 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_polarity),
401 "ClockPolarity", acpi_gbl_cpo_decode},
402 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(spi_serial_bus.device_selection),
403 "DeviceSelection", NULL},
404 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(spi_serial_bus.connection_speed),
405 "ConnectionSpeed", NULL},
406};
407
408struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[19] = {
409 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus),
410 "Uart Serial Bus", NULL},
411 ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG,
412 ACPI_RSD_OFFSET(uart_serial_bus.
413 flow_control),
414 "FlowControl", acpi_gbl_fc_decode},
415 {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.stop_bits),
416 "StopBits", acpi_gbl_sb_decode},
417 {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.data_bits),
418 "DataBits", acpi_gbl_bpb_decode},
419 {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.endian), "Endian",
420 acpi_gbl_ed_decode},
421 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity), "Parity",
422 acpi_gbl_pt_decode},
423 {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.lines_enabled),
424 "LinesEnabled", NULL},
425 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.rx_fifo_size),
426 "RxFifoSize", NULL},
427 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.tx_fifo_size),
428 "TxFifoSize", NULL},
429 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(uart_serial_bus.default_baud_rate),
430 "ConnectionSpeed", NULL},
431};
432
312/*433/*
313 * Tables used for common address descriptor flag fields434 * Tables used for common address descriptor flag fields
314 */435 */
@@ -413,7 +534,14 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 98 unmodified lines
413 /* Data items, 8/16/32/64 bit */534 /* Data items, 8/16/32/64 bit */
414 535
415 case ACPI_RSD_UINT8:536 case ACPI_RSD_UINT8:
416 acpi_rs_out_integer8(name, ACPI_GET8(target));537 if (table->pointer) {
538 acpi_rs_out_string(name, ACPI_CAST_PTR(char,
539 table->
540 pointer
541 [*target]));
542 } else {
543 acpi_rs_out_integer8(name, ACPI_GET8(target));
544 }
417 break;545 break;
418 546
419 case ACPI_RSD_UINT16:547 case ACPI_RSD_UINT16:
@@ -444,6 +572,13 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 24 unmodified lines
444 0x03]));572 0x03]));
445 break;573 break;
446 574
575 case ACPI_RSD_3BITFLAG:
576 acpi_rs_out_string(name, ACPI_CAST_PTR(char,
577 table->
578 pointer[*target &
579 0x07]));
580 break;
581
447 case ACPI_RSD_SHORTLIST:582 case ACPI_RSD_SHORTLIST:
448 /*583 /*
449 * Short byte list (single line output) for DMA and IRQ resources584 * Short byte list (single line output) for DMA and IRQ resources
@@ -456,6 +591,20 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 6 unmodified lines
456 }591 }
457 break;592 break;
458 593
594 case ACPI_RSD_SHORTLISTX:
595 /*
596 * Short byte list (single line output) for GPIO vendor data
597 * Note: The list length is obtained from the previous table entry
598 */
599 if (previous_target) {
600 acpi_rs_out_title(name);
601 acpi_rs_dump_short_byte_list(*previous_target,
602 *
603 (ACPI_CAST_INDIRECT_PTR
604 (u8, target)));
605 }
606 break;
607
459 case ACPI_RSD_LONGLIST:608 case ACPI_RSD_LONGLIST:
460 /*609 /*
461 * Long byte list for Vendor resource data610 * Long byte list for Vendor resource data
@@ -480,6 +629,18 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 18 unmodified lines
480 }629 }
481 break;630 break;
482 631
632 case ACPI_RSD_WORDLIST:
633 /*
634 * Word list for GPIO Pin Table
635 * Note: The list length is obtained from the previous table entry
636 */
637 if (previous_target) {
638 acpi_rs_dump_word_list(*previous_target,
639 *(ACPI_CAST_INDIRECT_PTR
640 (u16, target)));
641 }
642 break;
643
483 case ACPI_RSD_ADDRESS:644 case ACPI_RSD_ADDRESS:
484 /*645 /*
485 * Common flags for all Address resources646 * Common flags for all Address resources
@@ -627,14 +788,20 @@ void acpi_rs_dump_resource_list(struct acpi_resource *resource_list) · 141 unmodified lines
627 788
628 /* Dump the resource descriptor */789 /* Dump the resource descriptor */
629 790
630 acpi_rs_dump_descriptor(&resource_list->data,791 if (type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
631 acpi_gbl_dump_resource_dispatch[type]);792 acpi_rs_dump_descriptor(&resource_list->data,
793 acpi_gbl_dump_serial_bus_dispatch
794 [resource_list->data.
795 common_serial_bus.type]);
796 } else {
797 acpi_rs_dump_descriptor(&resource_list->data,
798 acpi_gbl_dump_resource_dispatch
799 [type]);
800 }
632 801
633 /* Point to the next resource structure */802 /* Point to the next resource structure */
634 803
635 resource_list =804 resource_list = ACPI_NEXT_RESOURCE(resource_list);
636 ACPI_ADD_PTR(struct acpi_resource, resource_list,
637 resource_list->length);
638 805
639 /* Exit when END_TAG descriptor is reached */806 /* Exit when END_TAG descriptor is reached */
640 807
@@ -768,4 +935,13 @@ static void acpi_rs_dump_dword_list(u8 length, u32 * data) · 127 unmodified lines
768 }935 }
769}936}
770 937
938static void acpi_rs_dump_word_list(u16 length, u16 *data)
939{
940 u16 i;
941
942 for (i = 0; i < length; i++) {
943 acpi_os_printf("%25s%2.2X : %4.4X\n", "Word", i, data[i]);
944 }
945}
946
771#endif947#endif
drivers/acpi/acpica/rsinfo.c+51−7
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -76,7 +76,10 @@ struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[] = { · 64 unmodified lines
76 acpi_rs_convert_address64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */76 acpi_rs_convert_address64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */
77 acpi_rs_convert_ext_address64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */77 acpi_rs_convert_ext_address64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
78 acpi_rs_convert_ext_irq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */78 acpi_rs_convert_ext_irq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
79 acpi_rs_convert_generic_reg /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */79 acpi_rs_convert_generic_reg, /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
80 acpi_rs_convert_gpio, /* 0x11, ACPI_RESOURCE_TYPE_GPIO */
81 acpi_rs_convert_fixed_dma, /* 0x12, ACPI_RESOURCE_TYPE_FIXED_DMA */
82 NULL, /* 0x13, ACPI_RESOURCE_TYPE_SERIAL_BUS - Use subtype table below */
80};83};
81 84
82/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */85/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */
@@ -94,7 +97,7 @@ struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[] = { · 11 unmodified lines
94 acpi_rs_convert_end_dpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */97 acpi_rs_convert_end_dpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */
95 acpi_rs_convert_io, /* 0x08, ACPI_RESOURCE_NAME_IO */98 acpi_rs_convert_io, /* 0x08, ACPI_RESOURCE_NAME_IO */
96 acpi_rs_convert_fixed_io, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */99 acpi_rs_convert_fixed_io, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */
97 NULL, /* 0x0A, Reserved */100 acpi_rs_convert_fixed_dma, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */
98 NULL, /* 0x0B, Reserved */101 NULL, /* 0x0B, Reserved */
99 NULL, /* 0x0C, Reserved */102 NULL, /* 0x0C, Reserved */
100 NULL, /* 0x0D, Reserved */103 NULL, /* 0x0D, Reserved */
@@ -114,7 +117,19 @@ struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[] = { · 13 unmodified lines
114 acpi_rs_convert_address16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */117 acpi_rs_convert_address16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */
115 acpi_rs_convert_ext_irq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */118 acpi_rs_convert_ext_irq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */
116 acpi_rs_convert_address64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */119 acpi_rs_convert_address64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */
117 acpi_rs_convert_ext_address64 /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */120 acpi_rs_convert_ext_address64, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */
121 acpi_rs_convert_gpio, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */
122 NULL, /* 0x0D, Reserved */
123 NULL, /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use subtype table below */
124};
125
126/* Subtype table for serial_bus -- I2C, SPI, and UART */
127
128struct acpi_rsconvert_info *acpi_gbl_convert_resource_serial_bus_dispatch[] = {
129 NULL,
130 acpi_rs_convert_i2c_serial_bus,
131 acpi_rs_convert_spi_serial_bus,
132 acpi_rs_convert_uart_serial_bus,
118};133};
119 134
120#ifdef ACPI_FUTURE_USAGE135#ifdef ACPI_FUTURE_USAGE
@@ -140,6 +155,16 @@ struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[] = { · 19 unmodified lines
140 acpi_rs_dump_ext_address64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */155 acpi_rs_dump_ext_address64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
141 acpi_rs_dump_ext_irq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */156 acpi_rs_dump_ext_irq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
142 acpi_rs_dump_generic_reg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */157 acpi_rs_dump_generic_reg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
158 acpi_rs_dump_gpio, /* ACPI_RESOURCE_TYPE_GPIO */
159 acpi_rs_dump_fixed_dma, /* ACPI_RESOURCE_TYPE_FIXED_DMA */
160 NULL, /* ACPI_RESOURCE_TYPE_SERIAL_BUS */
161};
162
163struct acpi_rsdump_info *acpi_gbl_dump_serial_bus_dispatch[] = {
164 NULL,
165 acpi_rs_dump_i2c_serial_bus, /* AML_RESOURCE_I2C_BUS_TYPE */
166 acpi_rs_dump_spi_serial_bus, /* AML_RESOURCE_SPI_BUS_TYPE */
167 acpi_rs_dump_uart_serial_bus, /* AML_RESOURCE_UART_BUS_TYPE */
143};168};
144#endif169#endif
145 170
@@ -166,7 +191,10 @@ const u8 acpi_gbl_aml_resource_sizes[] = { · 20 unmodified lines
166 sizeof(struct aml_resource_address64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */191 sizeof(struct aml_resource_address64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */
167 sizeof(struct aml_resource_extended_address64), /*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */192 sizeof(struct aml_resource_extended_address64), /*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
168 sizeof(struct aml_resource_extended_irq), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */193 sizeof(struct aml_resource_extended_irq), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
169 sizeof(struct aml_resource_generic_register) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */194 sizeof(struct aml_resource_generic_register), /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
195 sizeof(struct aml_resource_gpio), /* ACPI_RESOURCE_TYPE_GPIO */
196 sizeof(struct aml_resource_fixed_dma), /* ACPI_RESOURCE_TYPE_FIXED_DMA */
197 sizeof(struct aml_resource_common_serialbus), /* ACPI_RESOURCE_TYPE_SERIAL_BUS */
170};198};
171 199
172const u8 acpi_gbl_resource_struct_sizes[] = {200const u8 acpi_gbl_resource_struct_sizes[] = {
@@ -182,7 +210,7 @@ const u8 acpi_gbl_resource_struct_sizes[] = { · 9 unmodified lines
182 ACPI_RS_SIZE_MIN,210 ACPI_RS_SIZE_MIN,
183 ACPI_RS_SIZE(struct acpi_resource_io),211 ACPI_RS_SIZE(struct acpi_resource_io),
184 ACPI_RS_SIZE(struct acpi_resource_fixed_io),212 ACPI_RS_SIZE(struct acpi_resource_fixed_io),
185 0,213 ACPI_RS_SIZE(struct acpi_resource_fixed_dma),
186 0,214 0,
187 0,215 0,
188 0,216 0,
@@ -202,5 +230,21 @@ const u8 acpi_gbl_resource_struct_sizes[] = { · 13 unmodified lines
202 ACPI_RS_SIZE(struct acpi_resource_address16),230 ACPI_RS_SIZE(struct acpi_resource_address16),
203 ACPI_RS_SIZE(struct acpi_resource_extended_irq),231 ACPI_RS_SIZE(struct acpi_resource_extended_irq),
204 ACPI_RS_SIZE(struct acpi_resource_address64),232 ACPI_RS_SIZE(struct acpi_resource_address64),
205 ACPI_RS_SIZE(struct acpi_resource_extended_address64)233 ACPI_RS_SIZE(struct acpi_resource_extended_address64),
234 ACPI_RS_SIZE(struct acpi_resource_gpio),
235 ACPI_RS_SIZE(struct acpi_resource_common_serialbus)
236};
237
238const u8 acpi_gbl_aml_resource_serial_bus_sizes[] = {
239 0,
240 sizeof(struct aml_resource_i2c_serialbus),
241 sizeof(struct aml_resource_spi_serialbus),
242 sizeof(struct aml_resource_uart_serialbus),
243};
244
245const u8 acpi_gbl_resource_struct_serial_bus_sizes[] = {
246 0,
247 ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus),
248 ACPI_RS_SIZE(struct acpi_resource_spi_serialbus),
249 ACPI_RS_SIZE(struct acpi_resource_uart_serialbus),
206};250};
drivers/acpi/acpica/rsio.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rsirq.c+32−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -264,3 +264,34 @@ struct acpi_rsconvert_info acpi_rs_convert_dma[6] = { · 252 unmodified lines
264 AML_OFFSET(dma.dma_channel_mask),264 AML_OFFSET(dma.dma_channel_mask),
265 ACPI_RS_OFFSET(data.dma.channel_count)}265 ACPI_RS_OFFSET(data.dma.channel_count)}
266};266};
267
268/*******************************************************************************
269 *
270 * acpi_rs_convert_fixed_dma
271 *
272 ******************************************************************************/
273
274struct acpi_rsconvert_info acpi_rs_convert_fixed_dma[4] = {
275 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_DMA,
276 ACPI_RS_SIZE(struct acpi_resource_fixed_dma),
277 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_fixed_dma)},
278
279 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_DMA,
280 sizeof(struct aml_resource_fixed_dma),
281 0},
282
283 /*
284 * These fields are contiguous in both the source and destination:
285 * request_lines
286 * Channels
287 */
288
289 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.fixed_dma.request_lines),
290 AML_OFFSET(fixed_dma.request_lines),
291 2},
292
293 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.fixed_dma.width),
294 AML_OFFSET(fixed_dma.width),
295 1},
296
297};
drivers/acpi/acpica/rslist.c+62−15
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -70,6 +70,8 @@ acpi_rs_convert_aml_to_resources(u8 * aml, · 58 unmodified lines
70 struct acpi_resource **resource_ptr =70 struct acpi_resource **resource_ptr =
71 ACPI_CAST_INDIRECT_PTR(struct acpi_resource, context);71 ACPI_CAST_INDIRECT_PTR(struct acpi_resource, context);
72 struct acpi_resource *resource;72 struct acpi_resource *resource;
73 union aml_resource *aml_resource;
74 struct acpi_rsconvert_info *conversion_table;
73 acpi_status status;75 acpi_status status;
74 76
75 ACPI_FUNCTION_TRACE(rs_convert_aml_to_resources);77 ACPI_FUNCTION_TRACE(rs_convert_aml_to_resources);
@@ -84,14 +86,37 @@ acpi_rs_convert_aml_to_resources(u8 * aml, · 8 unmodified lines
84 "Misaligned resource pointer %p", resource));86 "Misaligned resource pointer %p", resource));
85 }87 }
86 88
89 /* Get the appropriate conversion info table */
90
91 aml_resource = ACPI_CAST_PTR(union aml_resource, aml);
92 if (acpi_ut_get_resource_type(aml) == ACPI_RESOURCE_NAME_SERIAL_BUS) {
93 if (aml_resource->common_serial_bus.type >
94 AML_RESOURCE_MAX_SERIALBUSTYPE) {
95 conversion_table = NULL;
96 } else {
97 /* This is an I2C, SPI, or UART serial_bus descriptor */
98
99 conversion_table =
100 acpi_gbl_convert_resource_serial_bus_dispatch
101 [aml_resource->common_serial_bus.type];
102 }
103 } else {
104 conversion_table =
105 acpi_gbl_get_resource_dispatch[resource_index];
106 }
107
108 if (!conversion_table) {
109 ACPI_ERROR((AE_INFO,
110 "Invalid/unsupported resource descriptor: Type 0x%2.2X",
111 resource_index));
112 return (AE_AML_INVALID_RESOURCE_TYPE);
113 }
114
87 /* Convert the AML byte stream resource to a local resource struct */115 /* Convert the AML byte stream resource to a local resource struct */
88 116
89 status =117 status =
90 acpi_rs_convert_aml_to_resource(resource,118 acpi_rs_convert_aml_to_resource(resource, aml_resource,
91 ACPI_CAST_PTR(union aml_resource,119 conversion_table);
92 aml),
93 acpi_gbl_get_resource_dispatch
94 [resource_index]);
95 if (ACPI_FAILURE(status)) {120 if (ACPI_FAILURE(status)) {
96 ACPI_EXCEPTION((AE_INFO, status,121 ACPI_EXCEPTION((AE_INFO, status,
97 "Could not convert AML resource (Type 0x%X)",122 "Could not convert AML resource (Type 0x%X)",
@@ -106,7 +131,7 @@ acpi_rs_convert_aml_to_resources(u8 * aml, · 8 unmodified lines
106 131
107 /* Point to the next structure in the output buffer */132 /* Point to the next structure in the output buffer */
108 133
109 *resource_ptr = ACPI_ADD_PTR(void, resource, resource->length);134 *resource_ptr = ACPI_NEXT_RESOURCE(resource);
110 return_ACPI_STATUS(AE_OK);135 return_ACPI_STATUS(AE_OK);
111}136}
112 137
@@ -135,6 +160,7 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, · 22 unmodified lines
135{160{
136 u8 *aml = output_buffer;161 u8 *aml = output_buffer;
137 u8 *end_aml = output_buffer + aml_size_needed;162 u8 *end_aml = output_buffer + aml_size_needed;
163 struct acpi_rsconvert_info *conversion_table;
138 acpi_status status;164 acpi_status status;
139 165
140 ACPI_FUNCTION_TRACE(rs_convert_resources_to_aml);166 ACPI_FUNCTION_TRACE(rs_convert_resources_to_aml);
@@ -154,11 +180,34 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, · 13 unmodified lines
154 180
155 /* Perform the conversion */181 /* Perform the conversion */
156 182
157 status = acpi_rs_convert_resource_to_aml(resource, ACPI_CAST_PTR(union183 if (resource->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
158 aml_resource,184 if (resource->data.common_serial_bus.type >
159 aml),185 AML_RESOURCE_MAX_SERIALBUSTYPE) {
160 acpi_gbl_set_resource_dispatch186 conversion_table = NULL;
161 [resource->type]);187 } else {
188 /* This is an I2C, SPI, or UART serial_bus descriptor */
189
190 conversion_table =
191 acpi_gbl_convert_resource_serial_bus_dispatch
192 [resource->data.common_serial_bus.type];
193 }
194 } else {
195 conversion_table =
196 acpi_gbl_set_resource_dispatch[resource->type];
197 }
198
199 if (!conversion_table) {
200 ACPI_ERROR((AE_INFO,
201 "Invalid/unsupported resource descriptor: Type 0x%2.2X",
202 resource->type));
203 return (AE_AML_INVALID_RESOURCE_TYPE);
204 }
205
206 status = acpi_rs_convert_resource_to_aml(resource,
207 ACPI_CAST_PTR(union
208 aml_resource,
209 aml),
210 conversion_table);
162 if (ACPI_FAILURE(status)) {211 if (ACPI_FAILURE(status)) {
163 ACPI_EXCEPTION((AE_INFO, status,212 ACPI_EXCEPTION((AE_INFO, status,
164 "Could not convert resource (type 0x%X) to AML",213 "Could not convert resource (type 0x%X) to AML",
@@ -192,9 +241,7 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, · 27 unmodified lines
192 241
193 /* Point to the next input resource descriptor */242 /* Point to the next input resource descriptor */
194 243
195 resource =244 resource = ACPI_NEXT_RESOURCE(resource);
196 ACPI_ADD_PTR(struct acpi_resource, resource,
197 resource->length);
198 }245 }
199 246
200 /* Completed buffer, but did not find an end_tag resource descriptor */247 /* Completed buffer, but did not find an end_tag resource descriptor */
drivers/acpi/acpica/rsmemory.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rsmisc.c+263−6
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -83,6 +83,10 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 71 unmodified lines
83 83
84 ACPI_FUNCTION_TRACE(rs_convert_aml_to_resource);84 ACPI_FUNCTION_TRACE(rs_convert_aml_to_resource);
85 85
86 if (!info) {
87 return_ACPI_STATUS(AE_BAD_PARAMETER);
88 }
89
86 if (((acpi_size) resource) & 0x3) {90 if (((acpi_size) resource) & 0x3) {
87 91
88 /* Each internal resource struct is expected to be 32-bit aligned */92 /* Each internal resource struct is expected to be 32-bit aligned */
@@ -101,7 +105,6 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 12 unmodified lines
101 * table length (# of table entries)105 * table length (# of table entries)
102 */106 */
103 count = INIT_TABLE_LENGTH(info);107 count = INIT_TABLE_LENGTH(info);
104
105 while (count) {108 while (count) {
106 /*109 /*
107 * Source is the external AML byte stream buffer,110 * Source is the external AML byte stream buffer,
@@ -145,6 +148,14 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 37 unmodified lines
145 ((ACPI_GET8(source) >> info->value) & 0x03);148 ((ACPI_GET8(source) >> info->value) & 0x03);
146 break;149 break;
147 150
151 case ACPI_RSC_3BITFLAG:
152 /*
153 * Mask and shift the flag bits
154 */
155 ACPI_SET8(destination) = (u8)
156 ((ACPI_GET8(source) >> info->value) & 0x07);
157 break;
158
148 case ACPI_RSC_COUNT:159 case ACPI_RSC_COUNT:
149 160
150 item_count = ACPI_GET8(source);161 item_count = ACPI_GET8(source);
@@ -163,6 +174,69 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 12 unmodified lines
163 (info->value * (item_count - 1));174 (info->value * (item_count - 1));
164 break;175 break;
165 176
177 case ACPI_RSC_COUNT_GPIO_PIN:
178
179 target = ACPI_ADD_PTR(void, aml, info->value);
180 item_count = ACPI_GET16(target) - ACPI_GET16(source);
181
182 resource->length = resource->length + item_count;
183 item_count = item_count / 2;
184 ACPI_SET16(destination) = item_count;
185 break;
186
187 case ACPI_RSC_COUNT_GPIO_VEN:
188
189 item_count = ACPI_GET8(source);
190 ACPI_SET8(destination) = (u8)item_count;
191
192 resource->length = resource->length +
193 (info->value * item_count);
194 break;
195
196 case ACPI_RSC_COUNT_GPIO_RES:
197
198 /*
199 * Vendor data is optional (length/offset may both be zero)
200 * Examine vendor data length field first
201 */
202 target = ACPI_ADD_PTR(void, aml, (info->value + 2));
203 if (ACPI_GET16(target)) {
204
205 /* Use vendor offset to get resource source length */
206
207 target = ACPI_ADD_PTR(void, aml, info->value);
208 item_count =
209 ACPI_GET16(target) - ACPI_GET16(source);
210 } else {
211 /* No vendor data to worry about */
212
213 item_count = aml->large_header.resource_length +
214 sizeof(struct aml_resource_large_header) -
215 ACPI_GET16(source);
216 }
217
218 resource->length = resource->length + item_count;
219 ACPI_SET16(destination) = item_count;
220 break;
221
222 case ACPI_RSC_COUNT_SERIAL_VEN:
223
224 item_count = ACPI_GET16(source) - info->value;
225
226 resource->length = resource->length + item_count;
227 ACPI_SET16(destination) = item_count;
228 break;
229
230 case ACPI_RSC_COUNT_SERIAL_RES:
231
232 item_count = (aml_resource_length +
233 sizeof(struct aml_resource_large_header))
234 - ACPI_GET16(source) - info->value;
235
236 resource->length = resource->length + item_count;
237 ACPI_SET16(destination) = item_count;
238 break;
239
166 case ACPI_RSC_LENGTH:240 case ACPI_RSC_LENGTH:
167 241
168 resource->length = resource->length + info->value;242 resource->length = resource->length + info->value;
@@ -183,6 +257,72 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 14 unmodified lines
183 info->opcode);257 info->opcode);
184 break;258 break;
185 259
260 case ACPI_RSC_MOVE_GPIO_PIN:
261
262 /* Generate and set the PIN data pointer */
263
264 target = (char *)ACPI_ADD_PTR(void, resource,
265 (resource->length -
266 item_count * 2));
267 *(u16 **)destination = ACPI_CAST_PTR(u16, target);
268
269 /* Copy the PIN data */
270
271 source = ACPI_ADD_PTR(void, aml, ACPI_GET16(source));
272 acpi_rs_move_data(target, source, item_count,
273 info->opcode);
274 break;
275
276 case ACPI_RSC_MOVE_GPIO_RES:
277
278 /* Generate and set the resource_source string pointer */
279
280 target = (char *)ACPI_ADD_PTR(void, resource,
281 (resource->length -
282 item_count));
283 *(u8 **)destination = ACPI_CAST_PTR(u8, target);
284
285 /* Copy the resource_source string */
286
287 source = ACPI_ADD_PTR(void, aml, ACPI_GET16(source));
288 acpi_rs_move_data(target, source, item_count,
289 info->opcode);
290 break;
291
292 case ACPI_RSC_MOVE_SERIAL_VEN:
293
294 /* Generate and set the Vendor Data pointer */
295
296 target = (char *)ACPI_ADD_PTR(void, resource,
297 (resource->length -
298 item_count));
299 *(u8 **)destination = ACPI_CAST_PTR(u8, target);
300
301 /* Copy the Vendor Data */
302
303 source = ACPI_ADD_PTR(void, aml, info->value);
304 acpi_rs_move_data(target, source, item_count,
305 info->opcode);
306 break;
307
308 case ACPI_RSC_MOVE_SERIAL_RES:
309
310 /* Generate and set the resource_source string pointer */
311
312 target = (char *)ACPI_ADD_PTR(void, resource,
313 (resource->length -
314 item_count));
315 *(u8 **)destination = ACPI_CAST_PTR(u8, target);
316
317 /* Copy the resource_source string */
318
319 source =
320 ACPI_ADD_PTR(void, aml,
321 (ACPI_GET16(source) + info->value));
322 acpi_rs_move_data(target, source, item_count,
323 info->opcode);
324 break;
325
186 case ACPI_RSC_SET8:326 case ACPI_RSC_SET8:
187 327
188 ACPI_MEMSET(destination, info->aml_offset, info->value);328 ACPI_MEMSET(destination, info->aml_offset, info->value);
@@ -219,13 +359,18 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 30 unmodified lines
219 * Optional resource_source (Index and String). This is the more359 * Optional resource_source (Index and String). This is the more
220 * complicated case used by the Interrupt() macro360 * complicated case used by the Interrupt() macro
221 */361 */
222 target =362 target = ACPI_ADD_PTR(char, resource,
223 ACPI_ADD_PTR(char, resource,363 info->aml_offset +
224 info->aml_offset + (item_count * 4));364 (item_count * 4));
225 365
226 resource->length +=366 resource->length +=
227 acpi_rs_get_resource_source(aml_resource_length,367 acpi_rs_get_resource_source(aml_resource_length,
228 (acpi_rs_length) (((item_count - 1) * sizeof(u32)) + info->value), destination, aml, target);368 (acpi_rs_length)
369 (((item_count -
370 1) * sizeof(u32)) +
371 info->value),
372 destination, aml,
373 target);
229 break;374 break;
230 375
231 case ACPI_RSC_BITMASK:376 case ACPI_RSC_BITMASK:
@@ -327,6 +472,7 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 95 unmodified lines
327{472{
328 void *source = NULL;473 void *source = NULL;
329 void *destination;474 void *destination;
475 char *target;
330 acpi_rsdesc_size aml_length = 0;476 acpi_rsdesc_size aml_length = 0;
331 u8 count;477 u8 count;
332 u16 temp16 = 0;478 u16 temp16 = 0;
@@ -334,6 +480,10 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 1 unmodified line
334 480
335 ACPI_FUNCTION_TRACE(rs_convert_resource_to_aml);481 ACPI_FUNCTION_TRACE(rs_convert_resource_to_aml);
336 482
483 if (!info) {
484 return_ACPI_STATUS(AE_BAD_PARAMETER);
485 }
486
337 /*487 /*
338 * First table entry must be ACPI_RSC_INITxxx and must contain the488 * First table entry must be ACPI_RSC_INITxxx and must contain the
339 * table length (# of table entries)489 * table length (# of table entries)
@@ -383,6 +533,14 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 43 unmodified lines
383 ((ACPI_GET8(source) & 0x03) << info->value);533 ((ACPI_GET8(source) & 0x03) << info->value);
384 break;534 break;
385 535
536 case ACPI_RSC_3BITFLAG:
537 /*
538 * Mask and shift the flag bits
539 */
540 ACPI_SET8(destination) |= (u8)
541 ((ACPI_GET8(source) & 0x07) << info->value);
542 break;
543
386 case ACPI_RSC_COUNT:544 case ACPI_RSC_COUNT:
387 545
388 item_count = ACPI_GET8(source);546 item_count = ACPI_GET8(source);
@@ -400,6 +558,63 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 11 unmodified lines
400 acpi_rs_set_resource_length(aml_length, aml);558 acpi_rs_set_resource_length(aml_length, aml);
401 break;559 break;
402 560
561 case ACPI_RSC_COUNT_GPIO_PIN:
562
563 item_count = ACPI_GET16(source);
564 ACPI_SET16(destination) = (u16)aml_length;
565
566 aml_length = (u16)(aml_length + item_count * 2);
567 target = ACPI_ADD_PTR(void, aml, info->value);
568 ACPI_SET16(target) = (u16)aml_length;
569 acpi_rs_set_resource_length(aml_length, aml);
570 break;
571
572 case ACPI_RSC_COUNT_GPIO_VEN:
573
574 item_count = ACPI_GET16(source);
575 ACPI_SET16(destination) = (u16)item_count;
576
577 aml_length =
578 (u16)(aml_length + (info->value * item_count));
579 acpi_rs_set_resource_length(aml_length, aml);
580 break;
581
582 case ACPI_RSC_COUNT_GPIO_RES:
583
584 /* Set resource source string length */
585
586 item_count = ACPI_GET16(source);
587 ACPI_SET16(destination) = (u16)aml_length;
588
589 /* Compute offset for the Vendor Data */
590
591 aml_length = (u16)(aml_length + item_count);
592 target = ACPI_ADD_PTR(void, aml, info->value);
593
594 /* Set vendor offset only if there is vendor data */
595
596 if (resource->data.gpio.vendor_length) {
597 ACPI_SET16(target) = (u16)aml_length;
598 }
599
600 acpi_rs_set_resource_length(aml_length, aml);
601 break;
602
603 case ACPI_RSC_COUNT_SERIAL_VEN:
604
605 item_count = ACPI_GET16(source);
606 ACPI_SET16(destination) = item_count + info->value;
607 aml_length = (u16)(aml_length + item_count);
608 acpi_rs_set_resource_length(aml_length, aml);
609 break;
610
611 case ACPI_RSC_COUNT_SERIAL_RES:
612
613 item_count = ACPI_GET16(source);
614 aml_length = (u16)(aml_length + item_count);
615 acpi_rs_set_resource_length(aml_length, aml);
616 break;
617
403 case ACPI_RSC_LENGTH:618 case ACPI_RSC_LENGTH:
404 619
405 acpi_rs_set_resource_length(info->value, aml);620 acpi_rs_set_resource_length(info->value, aml);
@@ -417,6 +632,48 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 11 unmodified lines
417 info->opcode);632 info->opcode);
418 break;633 break;
419 634
635 case ACPI_RSC_MOVE_GPIO_PIN:
636
637 destination = (char *)ACPI_ADD_PTR(void, aml,
638 ACPI_GET16
639 (destination));
640 source = *(u16 **)source;
641 acpi_rs_move_data(destination, source, item_count,
642 info->opcode);
643 break;
644
645 case ACPI_RSC_MOVE_GPIO_RES:
646
647 /* Used for both resource_source string and vendor_data */
648
649 destination = (char *)ACPI_ADD_PTR(void, aml,
650 ACPI_GET16
651 (destination));
652 source = *(u8 **)source;
653 acpi_rs_move_data(destination, source, item_count,
654 info->opcode);
655 break;
656
657 case ACPI_RSC_MOVE_SERIAL_VEN:
658
659 destination = (char *)ACPI_ADD_PTR(void, aml,
660 (aml_length -
661 item_count));
662 source = *(u8 **)source;
663 acpi_rs_move_data(destination, source, item_count,
664 info->opcode);
665 break;
666
667 case ACPI_RSC_MOVE_SERIAL_RES:
668
669 destination = (char *)ACPI_ADD_PTR(void, aml,
670 (aml_length -
671 item_count));
672 source = *(u8 **)source;
673 acpi_rs_move_data(destination, source, item_count,
674 info->opcode);
675 break;
676
420 case ACPI_RSC_ADDRESS:677 case ACPI_RSC_ADDRESS:
421 678
422 /* Set the Resource Type, General Flags, and Type-Specific Flags */679 /* Set the Resource Type, General Flags, and Type-Specific Flags */
drivers/acpi/acpica/rsserial.c+441−0
@@ -0,0 +1,441 @@
1/*******************************************************************************
2 *
3 * Module Name: rsserial - GPIO/serial_bus resource descriptors
4 *
5 ******************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#include <acpi/acpi.h>
45#include "accommon.h"
46#include "acresrc.h"
47
48#define _COMPONENT ACPI_RESOURCES
49ACPI_MODULE_NAME("rsserial")
50
51/*******************************************************************************
52 *
53 * acpi_rs_convert_gpio
54 *
55 ******************************************************************************/
56struct acpi_rsconvert_info acpi_rs_convert_gpio[17] = {
57 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GPIO,
58 ACPI_RS_SIZE(struct acpi_resource_gpio),
59 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_gpio)},
60
61 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GPIO,
62 sizeof(struct aml_resource_gpio),
63 0},
64
65 /*
66 * These fields are contiguous in both the source and destination:
67 * revision_id
68 * connection_type
69 */
70 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.revision_id),
71 AML_OFFSET(gpio.revision_id),
72 2},
73
74 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.producer_consumer),
75 AML_OFFSET(gpio.flags),
76 0},
77
78 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.sharable),
79 AML_OFFSET(gpio.int_flags),
80 3},
81
82 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.io_restriction),
83 AML_OFFSET(gpio.int_flags),
84 0},
85
86 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.triggering),
87 AML_OFFSET(gpio.int_flags),
88 0},
89
90 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.polarity),
91 AML_OFFSET(gpio.int_flags),
92 1},
93
94 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.pin_config),
95 AML_OFFSET(gpio.pin_config),
96 1},
97
98 /*
99 * These fields are contiguous in both the source and destination:
100 * drive_strength
101 * debounce_timeout
102 */
103 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.gpio.drive_strength),
104 AML_OFFSET(gpio.drive_strength),
105 2},
106
107 /* Pin Table */
108
109 {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table_length),
110 AML_OFFSET(gpio.pin_table_offset),
111 AML_OFFSET(gpio.res_source_offset)},
112
113 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table),
114 AML_OFFSET(gpio.pin_table_offset),
115 0},
116
117 /* Resource Source */
118
119 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.resource_source.index),
120 AML_OFFSET(gpio.res_source_index),
121 1},
122
123 {ACPI_RSC_COUNT_GPIO_RES,
124 ACPI_RS_OFFSET(data.gpio.resource_source.string_length),
125 AML_OFFSET(gpio.res_source_offset),
126 AML_OFFSET(gpio.vendor_offset)},
127
128 {ACPI_RSC_MOVE_GPIO_RES,
129 ACPI_RS_OFFSET(data.gpio.resource_source.string_ptr),
130 AML_OFFSET(gpio.res_source_offset),
131 0},
132
133 /* Vendor Data */
134
135 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.gpio.vendor_length),
136 AML_OFFSET(gpio.vendor_length),
137 1},
138
139 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.gpio.vendor_data),
140 AML_OFFSET(gpio.vendor_offset),
141 0},
142};
143
144/*******************************************************************************
145 *
146 * acpi_rs_convert_i2c_serial_bus
147 *
148 ******************************************************************************/
149
150struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[16] = {
151 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
152 ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus),
153 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_i2c_serial_bus)},
154
155 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
156 sizeof(struct aml_resource_i2c_serialbus),
157 0},
158
159 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
160 AML_OFFSET(common_serial_bus.revision_id),
161 1},
162
163 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
164 AML_OFFSET(common_serial_bus.type),
165 1},
166
167 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
168 AML_OFFSET(common_serial_bus.flags),
169 0},
170
171 {ACPI_RSC_1BITFLAG,
172 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
173 AML_OFFSET(common_serial_bus.flags),
174 1},
175
176 {ACPI_RSC_MOVE8,
177 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
178 AML_OFFSET(common_serial_bus.type_revision_id),
179 1},
180
181 {ACPI_RSC_MOVE16,
182 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
183 AML_OFFSET(common_serial_bus.type_data_length),
184 1},
185
186 /* Vendor data */
187
188 {ACPI_RSC_COUNT_SERIAL_VEN,
189 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
190 AML_OFFSET(common_serial_bus.type_data_length),
191 AML_RESOURCE_I2C_MIN_DATA_LEN},
192
193 {ACPI_RSC_MOVE_SERIAL_VEN,
194 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
195 0,
196 sizeof(struct aml_resource_i2c_serialbus)},
197
198 /* Resource Source */
199
200 {ACPI_RSC_MOVE8,
201 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
202 AML_OFFSET(common_serial_bus.res_source_index),
203 1},
204
205 {ACPI_RSC_COUNT_SERIAL_RES,
206 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
207 AML_OFFSET(common_serial_bus.type_data_length),
208 sizeof(struct aml_resource_common_serialbus)},
209
210 {ACPI_RSC_MOVE_SERIAL_RES,
211 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
212 AML_OFFSET(common_serial_bus.type_data_length),
213 sizeof(struct aml_resource_common_serialbus)},
214
215 /* I2C bus type specific */
216
217 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
218 AML_OFFSET(i2c_serial_bus.type_specific_flags),
219 0},
220
221 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
222 AML_OFFSET(i2c_serial_bus.connection_speed),
223 1},
224
225 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
226 AML_OFFSET(i2c_serial_bus.slave_address),
227 1},
228};
229
230/*******************************************************************************
231 *
232 * acpi_rs_convert_spi_serial_bus
233 *
234 ******************************************************************************/
235
236struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[20] = {
237 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
238 ACPI_RS_SIZE(struct acpi_resource_spi_serialbus),
239 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_spi_serial_bus)},
240
241 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
242 sizeof(struct aml_resource_spi_serialbus),
243 0},
244
245 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
246 AML_OFFSET(common_serial_bus.revision_id),
247 1},
248
249 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
250 AML_OFFSET(common_serial_bus.type),
251 1},
252
253 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
254 AML_OFFSET(common_serial_bus.flags),
255 0},
256
257 {ACPI_RSC_1BITFLAG,
258 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
259 AML_OFFSET(common_serial_bus.flags),
260 1},
261
262 {ACPI_RSC_MOVE8,
263 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
264 AML_OFFSET(common_serial_bus.type_revision_id),
265 1},
266
267 {ACPI_RSC_MOVE16,
268 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
269 AML_OFFSET(common_serial_bus.type_data_length),
270 1},
271
272 /* Vendor data */
273
274 {ACPI_RSC_COUNT_SERIAL_VEN,
275 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
276 AML_OFFSET(common_serial_bus.type_data_length),
277 AML_RESOURCE_SPI_MIN_DATA_LEN},
278
279 {ACPI_RSC_MOVE_SERIAL_VEN,
280 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
281 0,
282 sizeof(struct aml_resource_spi_serialbus)},
283
284 /* Resource Source */
285
286 {ACPI_RSC_MOVE8,
287 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
288 AML_OFFSET(common_serial_bus.res_source_index),
289 1},
290
291 {ACPI_RSC_COUNT_SERIAL_RES,
292 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
293 AML_OFFSET(common_serial_bus.type_data_length),
294 sizeof(struct aml_resource_common_serialbus)},
295
296 {ACPI_RSC_MOVE_SERIAL_RES,
297 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
298 AML_OFFSET(common_serial_bus.type_data_length),
299 sizeof(struct aml_resource_common_serialbus)},
300
301 /* Spi bus type specific */
302
303 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
304 AML_OFFSET(spi_serial_bus.type_specific_flags),
305 0},
306
307 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
308 AML_OFFSET(spi_serial_bus.type_specific_flags),
309 1},
310
311 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
312 AML_OFFSET(spi_serial_bus.data_bit_length),
313 1},
314
315 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
316 AML_OFFSET(spi_serial_bus.clock_phase),
317 1},
318
319 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
320 AML_OFFSET(spi_serial_bus.clock_polarity),
321 1},
322
323 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
324 AML_OFFSET(spi_serial_bus.device_selection),
325 1},
326
327 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
328 AML_OFFSET(spi_serial_bus.connection_speed),
329 1},
330};
331
332/*******************************************************************************
333 *
334 * acpi_rs_convert_uart_serial_bus
335 *
336 ******************************************************************************/
337
338struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[22] = {
339 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
340 ACPI_RS_SIZE(struct acpi_resource_uart_serialbus),
341 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_uart_serial_bus)},
342
343 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
344 sizeof(struct aml_resource_uart_serialbus),
345 0},
346
347 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
348 AML_OFFSET(common_serial_bus.revision_id),
349 1},
350
351 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
352 AML_OFFSET(common_serial_bus.type),
353 1},
354
355 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
356 AML_OFFSET(common_serial_bus.flags),
357 0},
358
359 {ACPI_RSC_1BITFLAG,
360 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
361 AML_OFFSET(common_serial_bus.flags),
362 1},
363
364 {ACPI_RSC_MOVE8,
365 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
366 AML_OFFSET(common_serial_bus.type_revision_id),
367 1},
368
369 {ACPI_RSC_MOVE16,
370 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
371 AML_OFFSET(common_serial_bus.type_data_length),
372 1},
373
374 /* Vendor data */
375
376 {ACPI_RSC_COUNT_SERIAL_VEN,
377 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
378 AML_OFFSET(common_serial_bus.type_data_length),
379 AML_RESOURCE_UART_MIN_DATA_LEN},
380
381 {ACPI_RSC_MOVE_SERIAL_VEN,
382 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
383 0,
384 sizeof(struct aml_resource_uart_serialbus)},
385
386 /* Resource Source */
387
388 {ACPI_RSC_MOVE8,
389 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
390 AML_OFFSET(common_serial_bus.res_source_index),
391 1},
392
393 {ACPI_RSC_COUNT_SERIAL_RES,
394 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
395 AML_OFFSET(common_serial_bus.type_data_length),
396 sizeof(struct aml_resource_common_serialbus)},
397
398 {ACPI_RSC_MOVE_SERIAL_RES,
399 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
400 AML_OFFSET(common_serial_bus.type_data_length),
401 sizeof(struct aml_resource_common_serialbus)},
402
403 /* Uart bus type specific */
404
405 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
406 AML_OFFSET(uart_serial_bus.type_specific_flags),
407 0},
408
409 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
410 AML_OFFSET(uart_serial_bus.type_specific_flags),
411 2},
412
413 {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
414 AML_OFFSET(uart_serial_bus.type_specific_flags),
415 4},
416
417 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
418 AML_OFFSET(uart_serial_bus.type_specific_flags),
419 7},
420
421 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
422 AML_OFFSET(uart_serial_bus.parity),
423 1},
424
425 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
426 AML_OFFSET(uart_serial_bus.lines_enabled),
427 1},
428
429 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
430 AML_OFFSET(uart_serial_bus.rx_fifo_size),
431 1},
432
433 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
434 AML_OFFSET(uart_serial_bus.tx_fifo_size),
435 1},
436
437 {ACPI_RSC_MOVE32,
438 ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
439 AML_OFFSET(uart_serial_bus.default_baud_rate),
440 1},
441};
drivers/acpi/acpica/rsutils.c+55−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -144,6 +144,9 @@ acpi_rs_move_data(void *destination, void *source, u16 item_count, u8 move_type) · 132 unmodified lines
144 * since there are no alignment or endian issues144 * since there are no alignment or endian issues
145 */145 */
146 case ACPI_RSC_MOVE8:146 case ACPI_RSC_MOVE8:
147 case ACPI_RSC_MOVE_GPIO_RES:
148 case ACPI_RSC_MOVE_SERIAL_VEN:
149 case ACPI_RSC_MOVE_SERIAL_RES:
147 ACPI_MEMCPY(destination, source, item_count);150 ACPI_MEMCPY(destination, source, item_count);
148 return;151 return;
149 152
@@ -153,6 +156,7 @@ acpi_rs_move_data(void *destination, void *source, u16 item_count, u8 move_type) · 3 unmodified lines
153 * misaligned memory transfers156 * misaligned memory transfers
154 */157 */
155 case ACPI_RSC_MOVE16:158 case ACPI_RSC_MOVE16:
159 case ACPI_RSC_MOVE_GPIO_PIN:
156 ACPI_MOVE_16_TO_16(&ACPI_CAST_PTR(u16, destination)[i],160 ACPI_MOVE_16_TO_16(&ACPI_CAST_PTR(u16, destination)[i],
157 &ACPI_CAST_PTR(u16, source)[i]);161 &ACPI_CAST_PTR(u16, source)[i]);
158 break;162 break;
@@ -588,6 +592,56 @@ acpi_rs_get_prs_method_data(struct acpi_namespace_node *node, · 429 unmodified lines
588}592}
589#endif /* ACPI_FUTURE_USAGE */593#endif /* ACPI_FUTURE_USAGE */
590 594
595/*******************************************************************************
596 *
597 * FUNCTION: acpi_rs_get_aei_method_data
598 *
599 * PARAMETERS: Node - Device node
600 * ret_buffer - Pointer to a buffer structure for the
601 * results
602 *
603 * RETURN: Status
604 *
605 * DESCRIPTION: This function is called to get the _AEI value of an object
606 * contained in an object specified by the handle passed in
607 *
608 * If the function fails an appropriate status will be returned
609 * and the contents of the callers buffer is undefined.
610 *
611 ******************************************************************************/
612
613acpi_status
614acpi_rs_get_aei_method_data(struct acpi_namespace_node *node,
615 struct acpi_buffer *ret_buffer)
616{
617 union acpi_operand_object *obj_desc;
618 acpi_status status;
619
620 ACPI_FUNCTION_TRACE(rs_get_aei_method_data);
621
622 /* Parameters guaranteed valid by caller */
623
624 /* Execute the method, no parameters */
625
626 status = acpi_ut_evaluate_object(node, METHOD_NAME__AEI,
627 ACPI_BTYPE_BUFFER, &obj_desc);
628 if (ACPI_FAILURE(status)) {
629 return_ACPI_STATUS(status);
630 }
631
632 /*
633 * Make the call to create a resource linked list from the
634 * byte stream buffer that comes back from the _CRS method
635 * execution.
636 */
637 status = acpi_rs_create_resource_list(obj_desc, ret_buffer);
638
639 /* On exit, we must delete the object returned by evaluate_object */
640
641 acpi_ut_remove_reference(obj_desc);
642 return_ACPI_STATUS(status);
643}
644
591/*******************************************************************************645/*******************************************************************************
592 *646 *
593 * FUNCTION: acpi_rs_get_method_data647 * FUNCTION: acpi_rs_get_method_data
drivers/acpi/acpica/rsxface.c+47−5
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -307,6 +307,46 @@ acpi_set_current_resources(acpi_handle device_handle, · 295 unmodified lines
307 307
308ACPI_EXPORT_SYMBOL(acpi_set_current_resources)308ACPI_EXPORT_SYMBOL(acpi_set_current_resources)
309 309
310/*******************************************************************************
311 *
312 * FUNCTION: acpi_get_event_resources
313 *
314 * PARAMETERS: device_handle - Handle to the device object for the
315 * device we are getting resources
316 * in_buffer - Pointer to a buffer containing the
317 * resources to be set for the device
318 *
319 * RETURN: Status
320 *
321 * DESCRIPTION: This function is called to get the event resources for a
322 * specific device. The caller must first acquire a handle for
323 * the desired device. The resource data is passed to the routine
324 * the buffer pointed to by the in_buffer variable. Uses the
325 * _AEI method.
326 *
327 ******************************************************************************/
328acpi_status
329acpi_get_event_resources(acpi_handle device_handle,
330 struct acpi_buffer *ret_buffer)
331{
332 acpi_status status;
333 struct acpi_namespace_node *node;
334
335 ACPI_FUNCTION_TRACE(acpi_get_event_resources);
336
337 /* Validate parameters then dispatch to internal routine */
338
339 status = acpi_rs_validate_parameters(device_handle, ret_buffer, &node);
340 if (ACPI_FAILURE(status)) {
341 return_ACPI_STATUS(status);
342 }
343
344 status = acpi_rs_get_aei_method_data(node, ret_buffer);
345 return_ACPI_STATUS(status);
346}
347
348ACPI_EXPORT_SYMBOL(acpi_get_event_resources)
349
310/******************************************************************************350/******************************************************************************
311 *351 *
312 * FUNCTION: acpi_resource_to_address64352 * FUNCTION: acpi_resource_to_address64
@@ -486,8 +526,9 @@ acpi_rs_match_vendor_resource(struct acpi_resource *resource, void *context) · 173 unmodified lines
486 *526 *
487 * PARAMETERS: device_handle - Handle to the device object for the527 * PARAMETERS: device_handle - Handle to the device object for the
488 * device we are querying528 * device we are querying
489 * Name - Method name of the resources we want529 * Name - Method name of the resources we want.
490 * (METHOD_NAME__CRS or METHOD_NAME__PRS)530 * (METHOD_NAME__CRS, METHOD_NAME__PRS, or
531 * METHOD_NAME__AEI)
491 * user_function - Called for each resource532 * user_function - Called for each resource
492 * Context - Passed to user_function533 * Context - Passed to user_function
493 *534 *
@@ -514,11 +555,12 @@ acpi_walk_resources(acpi_handle device_handle, · 20 unmodified lines
514 555
515 if (!device_handle || !user_function || !name ||556 if (!device_handle || !user_function || !name ||
516 (!ACPI_COMPARE_NAME(name, METHOD_NAME__CRS) &&557 (!ACPI_COMPARE_NAME(name, METHOD_NAME__CRS) &&
517 !ACPI_COMPARE_NAME(name, METHOD_NAME__PRS))) {558 !ACPI_COMPARE_NAME(name, METHOD_NAME__PRS) &&
559 !ACPI_COMPARE_NAME(name, METHOD_NAME__AEI))) {
518 return_ACPI_STATUS(AE_BAD_PARAMETER);560 return_ACPI_STATUS(AE_BAD_PARAMETER);
519 }561 }
520 562
521 /* Get the _CRS or _PRS resource list */563 /* Get the _CRS/_PRS/_AEI resource list */
522 564
523 buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;565 buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;
524 status = acpi_rs_get_method_data(device_handle, name, &buffer);566 status = acpi_rs_get_method_data(device_handle, name, &buffer);
drivers/acpi/acpica/tbfadt.c+30−11
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -63,14 +63,15 @@ static void acpi_tb_setup_fadt_registers(void); · 51 unmodified lines
63 63
64typedef struct acpi_fadt_info {64typedef struct acpi_fadt_info {
65 char *name;65 char *name;
66 u8 address64;66 u16 address64;
67 u8 address32;67 u16 address32;
68 u8 length;68 u16 length;
69 u8 default_length;69 u8 default_length;
70 u8 type;70 u8 type;
71 71
72} acpi_fadt_info;72} acpi_fadt_info;
73 73
74#define ACPI_FADT_OPTIONAL 0
74#define ACPI_FADT_REQUIRED 175#define ACPI_FADT_REQUIRED 1
75#define ACPI_FADT_SEPARATE_LENGTH 276#define ACPI_FADT_SEPARATE_LENGTH 2
76 77
@@ -87,7 +88,7 @@ static struct acpi_fadt_info fadt_info_table[] = { · 10 unmodified lines
87 ACPI_FADT_OFFSET(pm1b_event_block),88 ACPI_FADT_OFFSET(pm1b_event_block),
88 ACPI_FADT_OFFSET(pm1_event_length),89 ACPI_FADT_OFFSET(pm1_event_length),
89 ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */90 ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */
90 0},91 ACPI_FADT_OPTIONAL},
91 92
92 {"Pm1aControlBlock",93 {"Pm1aControlBlock",
93 ACPI_FADT_OFFSET(xpm1a_control_block),94 ACPI_FADT_OFFSET(xpm1a_control_block),
@@ -101,7 +102,7 @@ static struct acpi_fadt_info fadt_info_table[] = { · 7 unmodified lines
101 ACPI_FADT_OFFSET(pm1b_control_block),102 ACPI_FADT_OFFSET(pm1b_control_block),
102 ACPI_FADT_OFFSET(pm1_control_length),103 ACPI_FADT_OFFSET(pm1_control_length),
103 ACPI_PM1_REGISTER_WIDTH,104 ACPI_PM1_REGISTER_WIDTH,
104 0},105 ACPI_FADT_OPTIONAL},
105 106
106 {"Pm2ControlBlock",107 {"Pm2ControlBlock",
107 ACPI_FADT_OFFSET(xpm2_control_block),108 ACPI_FADT_OFFSET(xpm2_control_block),
@@ -139,7 +140,7 @@ static struct acpi_fadt_info fadt_info_table[] = { · 31 unmodified lines
139 140
140typedef struct acpi_fadt_pm_info {141typedef struct acpi_fadt_pm_info {
141 struct acpi_generic_address *target;142 struct acpi_generic_address *target;
142 u8 source;143 u16 source;
143 u8 register_num;144 u8 register_num;
144 145
145} acpi_fadt_pm_info;146} acpi_fadt_pm_info;
@@ -253,8 +254,13 @@ void acpi_tb_parse_fadt(u32 table_index) · 107 unmodified lines
253 acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xdsdt,254 acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xdsdt,
254 ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT);255 ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT);
255 256
256 acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xfacs,257 /* If Hardware Reduced flag is set, there is no FACS */
257 ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS);258
259 if (!acpi_gbl_reduced_hardware) {
260 acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.
261 Xfacs, ACPI_SIG_FACS,
262 ACPI_TABLE_INDEX_FACS);
263 }
258}264}
259 265
260/*******************************************************************************266/*******************************************************************************
@@ -277,12 +283,12 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length) · 16 unmodified lines
277{283{
278 /*284 /*
279 * Check if the FADT is larger than the largest table that we expect285 * Check if the FADT is larger than the largest table that we expect
280 * (the ACPI 2.0/3.0 version). If so, truncate the table, and issue286 * (the ACPI 5.0 version). If so, truncate the table, and issue
281 * a warning.287 * a warning.
282 */288 */
283 if (length > sizeof(struct acpi_table_fadt)) {289 if (length > sizeof(struct acpi_table_fadt)) {
284 ACPI_WARNING((AE_INFO,290 ACPI_WARNING((AE_INFO,
285 "FADT (revision %u) is longer than ACPI 2.0 version, "291 "FADT (revision %u) is longer than ACPI 5.0 version, "
286 "truncating length %u to %u",292 "truncating length %u to %u",
287 table->revision, length,293 table->revision, length,
288 (u32)sizeof(struct acpi_table_fadt)));294 (u32)sizeof(struct acpi_table_fadt)));
@@ -297,6 +303,13 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length) · 8 unmodified lines
297 ACPI_MEMCPY(&acpi_gbl_FADT, table,303 ACPI_MEMCPY(&acpi_gbl_FADT, table,
298 ACPI_MIN(length, sizeof(struct acpi_table_fadt)));304 ACPI_MIN(length, sizeof(struct acpi_table_fadt)));
299 305
306 /* Take a copy of the Hardware Reduced flag */
307
308 acpi_gbl_reduced_hardware = FALSE;
309 if (acpi_gbl_FADT.flags & ACPI_FADT_HW_REDUCED) {
310 acpi_gbl_reduced_hardware = TRUE;
311 }
312
300 /* Convert the local copy of the FADT to the common internal format */313 /* Convert the local copy of the FADT to the common internal format */
301 314
302 acpi_tb_convert_fadt();315 acpi_tb_convert_fadt();
@@ -502,6 +515,12 @@ static void acpi_tb_validate_fadt(void) · 199 unmodified lines
502 acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;515 acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;
503 }516 }
504 517
518 /* If Hardware Reduced flag is set, we are all done */
519
520 if (acpi_gbl_reduced_hardware) {
521 return;
522 }
523
505 /* Examine all of the 64-bit extended address fields (X fields) */524 /* Examine all of the 64-bit extended address fields (X fields) */
506 525
507 for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) {526 for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) {
drivers/acpi/acpica/tbfind.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/tbinstal.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/tbutils.c+8−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -135,6 +135,13 @@ acpi_status acpi_tb_initialize_facs(void) · 123 unmodified lines
135{135{
136 acpi_status status;136 acpi_status status;
137 137
138 /* If Hardware Reduced flag is set, there is no FACS */
139
140 if (acpi_gbl_reduced_hardware) {
141 acpi_gbl_FACS = NULL;
142 return (AE_OK);
143 }
144
138 status = acpi_get_table_by_index(ACPI_TABLE_INDEX_FACS,145 status = acpi_get_table_by_index(ACPI_TABLE_INDEX_FACS,
139 ACPI_CAST_INDIRECT_PTR(struct146 ACPI_CAST_INDIRECT_PTR(struct
140 acpi_table_header,147 acpi_table_header,
drivers/acpi/acpica/tbxface.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
6 *****************************************************************************/6 *****************************************************************************/
7 7
8/*8/*
9 * Copyright (C) 2000 - 2011, Intel Corp.9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.10 * All rights reserved.
11 *11 *
12 * Redistribution and use in source and binary forms, with or without12 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/tbxfroot.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utaddress.c+294−0
@@ -0,0 +1,294 @@
1/******************************************************************************
2 *
3 * Module Name: utaddress - op_region address range check
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#include <acpi/acpi.h>
45#include "accommon.h"
46#include "acnamesp.h"
47
48#define _COMPONENT ACPI_UTILITIES
49ACPI_MODULE_NAME("utaddress")
50
51/*******************************************************************************
52 *
53 * FUNCTION: acpi_ut_add_address_range
54 *
55 * PARAMETERS: space_id - Address space ID
56 * Address - op_region start address
57 * Length - op_region length
58 * region_node - op_region namespace node
59 *
60 * RETURN: Status
61 *
62 * DESCRIPTION: Add the Operation Region address range to the global list.
63 * The only supported Space IDs are Memory and I/O. Called when
64 * the op_region address/length operands are fully evaluated.
65 *
66 * MUTEX: Locks the namespace
67 *
68 * NOTE: Because this interface is only called when an op_region argument
69 * list is evaluated, there cannot be any duplicate region_nodes.
70 * Duplicate Address/Length values are allowed, however, so that multiple
71 * address conflicts can be detected.
72 *
73 ******************************************************************************/
74acpi_status
75acpi_ut_add_address_range(acpi_adr_space_type space_id,
76 acpi_physical_address address,
77 u32 length, struct acpi_namespace_node *region_node)
78{
79 struct acpi_address_range *range_info;
80 acpi_status status;
81
82 ACPI_FUNCTION_TRACE(ut_add_address_range);
83
84 if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
85 (space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
86 return_ACPI_STATUS(AE_OK);
87 }
88
89 /* Allocate/init a new info block, add it to the appropriate list */
90
91 range_info = ACPI_ALLOCATE(sizeof(struct acpi_address_range));
92 if (!range_info) {
93 return_ACPI_STATUS(AE_NO_MEMORY);
94 }
95
96 range_info->start_address = address;
97 range_info->end_address = (address + length - 1);
98 range_info->region_node = region_node;
99
100 status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
101 if (ACPI_FAILURE(status)) {
102 ACPI_FREE(range_info);
103 return_ACPI_STATUS(status);
104 }
105
106 range_info->next = acpi_gbl_address_range_list[space_id];
107 acpi_gbl_address_range_list[space_id] = range_info;
108
109 ACPI_DEBUG_PRINT((ACPI_DB_NAMES,
110 "\nAdded [%4.4s] address range: 0x%p-0x%p\n",
111 acpi_ut_get_node_name(range_info->region_node),
112 ACPI_CAST_PTR(void, address),
113 ACPI_CAST_PTR(void, range_info->end_address)));
114
115 (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
116 return_ACPI_STATUS(AE_OK);
117}
118
119/*******************************************************************************
120 *
121 * FUNCTION: acpi_ut_remove_address_range
122 *
123 * PARAMETERS: space_id - Address space ID
124 * region_node - op_region namespace node
125 *
126 * RETURN: None
127 *
128 * DESCRIPTION: Remove the Operation Region from the global list. The only
129 * supported Space IDs are Memory and I/O. Called when an
130 * op_region is deleted.
131 *
132 * MUTEX: Assumes the namespace is locked
133 *
134 ******************************************************************************/
135
136void
137acpi_ut_remove_address_range(acpi_adr_space_type space_id,
138 struct acpi_namespace_node *region_node)
139{
140 struct acpi_address_range *range_info;
141 struct acpi_address_range *prev;
142
143 ACPI_FUNCTION_TRACE(ut_remove_address_range);
144
145 if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
146 (space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
147 return_VOID;
148 }
149
150 /* Get the appropriate list head and check the list */
151
152 range_info = prev = acpi_gbl_address_range_list[space_id];
153 while (range_info) {
154 if (range_info->region_node == region_node) {
155 if (range_info == prev) { /* Found at list head */
156 acpi_gbl_address_range_list[space_id] =
157 range_info->next;
158 } else {
159 prev->next = range_info->next;
160 }
161
162 ACPI_DEBUG_PRINT((ACPI_DB_NAMES,
163 "\nRemoved [%4.4s] address range: 0x%p-0x%p\n",
164 acpi_ut_get_node_name(range_info->
165 region_node),
166 ACPI_CAST_PTR(void,
167 range_info->
168 start_address),
169 ACPI_CAST_PTR(void,
170 range_info->
171 end_address)));
172
173 ACPI_FREE(range_info);
174 return_VOID;
175 }
176
177 prev = range_info;
178 range_info = range_info->next;
179 }
180
181 return_VOID;
182}
183
184/*******************************************************************************
185 *
186 * FUNCTION: acpi_ut_check_address_range
187 *
188 * PARAMETERS: space_id - Address space ID
189 * Address - Start address
190 * Length - Length of address range
191 * Warn - TRUE if warning on overlap desired
192 *
193 * RETURN: Count of the number of conflicts detected. Zero is always
194 * returned for Space IDs other than Memory or I/O.
195 *
196 * DESCRIPTION: Check if the input address range overlaps any of the
197 * ASL operation region address ranges. The only supported
198 * Space IDs are Memory and I/O.
199 *
200 * MUTEX: Assumes the namespace is locked.
201 *
202 ******************************************************************************/
203
204u32
205acpi_ut_check_address_range(acpi_adr_space_type space_id,
206 acpi_physical_address address, u32 length, u8 warn)
207{
208 struct acpi_address_range *range_info;
209 acpi_physical_address end_address;
210 char *pathname;
211 u32 overlap_count = 0;
212
213 ACPI_FUNCTION_TRACE(ut_check_address_range);
214
215 if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
216 (space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
217 return_UINT32(0);
218 }
219
220 range_info = acpi_gbl_address_range_list[space_id];
221 end_address = address + length - 1;
222
223 /* Check entire list for all possible conflicts */
224
225 while (range_info) {
226 /*
227 * Check if the requested Address/Length overlaps this address_range.
228 * Four cases to consider:
229 *
230 * 1) Input address/length is contained completely in the address range
231 * 2) Input address/length overlaps range at the range start
232 * 3) Input address/length overlaps range at the range end
233 * 4) Input address/length completely encompasses the range
234 */
235 if ((address <= range_info->end_address) &&
236 (end_address >= range_info->start_address)) {
237
238 /* Found an address range overlap */
239
240 overlap_count++;
241 if (warn) { /* Optional warning message */
242 pathname =
243 acpi_ns_get_external_pathname(range_info->
244 region_node);
245
246 ACPI_WARNING((AE_INFO,
247 "0x%p-0x%p %s conflicts with Region %s %d",
248 ACPI_CAST_PTR(void, address),
249 ACPI_CAST_PTR(void, end_address),
250 acpi_ut_get_region_name(space_id),
251 pathname, overlap_count));
252 ACPI_FREE(pathname);
253 }
254 }
255
256 range_info = range_info->next;
257 }
258
259 return_UINT32(overlap_count);
260}
261
262/*******************************************************************************
263 *
264 * FUNCTION: acpi_ut_delete_address_lists
265 *
266 * PARAMETERS: None
267 *
268 * RETURN: None
269 *
270 * DESCRIPTION: Delete all global address range lists (called during
271 * subsystem shutdown).
272 *
273 ******************************************************************************/
274
275void acpi_ut_delete_address_lists(void)
276{
277 struct acpi_address_range *next;
278 struct acpi_address_range *range_info;
279 int i;
280
281 /* Delete all elements in all address range lists */
282
283 for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) {
284 next = acpi_gbl_address_range_list[i];
285
286 while (next) {
287 range_info = next;
288 next = range_info->next;
289 ACPI_FREE(range_info);
290 }
291
292 acpi_gbl_address_range_list[i] = NULL;
293 }
294}
drivers/acpi/acpica/utalloc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utcopy.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utdebug.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utdecode.c+4−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -171,7 +171,9 @@ const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = { · 159 unmodified lines
171 "SMBus",171 "SMBus",
172 "SystemCMOS",172 "SystemCMOS",
173 "PCIBARTarget",173 "PCIBARTarget",
174 "IPMI"174 "IPMI",
175 "GeneralPurposeIo",
176 "GenericSerialBus"
175};177};
176 178
177char *acpi_ut_get_region_name(u8 space_id)179char *acpi_ut_get_region_name(u8 space_id)
drivers/acpi/acpica/utdelete.c+9−6
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -215,11 +215,14 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object) · 203 unmodified lines
215 ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS,215 ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS,
216 "***** Region %p\n", object));216 "***** Region %p\n", object));
217 217
218 /* Invalidate the region address/length via the host OS */218 /*
219 219 * Update address_range list. However, only permanent regions
220 acpi_os_invalidate_address(object->region.space_id,220 * are installed in this list. (Not created within a method)
221 object->region.address,221 */
222 (acpi_size) object->region.length);222 if (!(object->region.node->flags & ANOBJ_TEMPORARY)) {
223 acpi_ut_remove_address_range(object->region.space_id,
224 object->region.node);
225 }
223 226
224 second_desc = acpi_ns_get_secondary_object(object);227 second_desc = acpi_ns_get_secondary_object(object);
225 if (second_desc) {228 if (second_desc) {
drivers/acpi/acpica/uteval.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utglobal.c+7−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -264,6 +264,12 @@ acpi_status acpi_ut_init_globals(void) · 252 unmodified lines
264 return_ACPI_STATUS(status);264 return_ACPI_STATUS(status);
265 }265 }
266 266
267 /* Address Range lists */
268
269 for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) {
270 acpi_gbl_address_range_list[i] = NULL;
271 }
272
267 /* Mutex locked flags */273 /* Mutex locked flags */
268 274
269 for (i = 0; i < ACPI_NUM_MUTEX; i++) {275 for (i = 0; i < ACPI_NUM_MUTEX; i++) {
drivers/acpi/acpica/utids.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utinit.c+2−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -92,6 +92,7 @@ static void acpi_ut_terminate(void) · 80 unmodified lines
92 gpe_xrupt_info = next_gpe_xrupt_info;92 gpe_xrupt_info = next_gpe_xrupt_info;
93 }93 }
94 94
95 acpi_ut_delete_address_lists();
95 return_VOID;96 return_VOID;
96}97}
97 98
drivers/acpi/acpica/utlock.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utmath.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utmisc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utmutex.c+4−7
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -293,14 +293,10 @@ acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id) · 281 unmodified lines
293 293
294acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id)294acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id)
295{295{
296 acpi_thread_id this_thread_id;
297
298 ACPI_FUNCTION_NAME(ut_release_mutex);296 ACPI_FUNCTION_NAME(ut_release_mutex);
299 297
300 this_thread_id = acpi_os_get_thread_id();
301
302 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Thread %u releasing Mutex [%s]\n",298 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Thread %u releasing Mutex [%s]\n",
303 (u32)this_thread_id,299 (u32)acpi_os_get_thread_id(),
304 acpi_ut_get_mutex_name(mutex_id)));300 acpi_ut_get_mutex_name(mutex_id)));
305 301
306 if (mutex_id > ACPI_MAX_MUTEX) {302 if (mutex_id > ACPI_MAX_MUTEX) {
@@ -329,7 +325,8 @@ acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id) · 22 unmodified lines
329 * the ACPI subsystem code.325 * the ACPI subsystem code.
330 */326 */
331 for (i = mutex_id; i < ACPI_NUM_MUTEX; i++) {327 for (i = mutex_id; i < ACPI_NUM_MUTEX; i++) {
332 if (acpi_gbl_mutex_info[i].thread_id == this_thread_id) {328 if (acpi_gbl_mutex_info[i].thread_id ==
329 acpi_os_get_thread_id()) {
333 if (i == mutex_id) {330 if (i == mutex_id) {
334 continue;331 continue;
335 }332 }
drivers/acpi/acpica/utobject.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utosi.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utresrc.c+243−35
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -43,7 +43,7 @@ · 31 unmodified lines
43 43
44#include <acpi/acpi.h>44#include <acpi/acpi.h>
45#include "accommon.h"45#include "accommon.h"
46#include "amlresrc.h"46#include "acresrc.h"
47 47
48#define _COMPONENT ACPI_UTILITIES48#define _COMPONENT ACPI_UTILITIES
49ACPI_MODULE_NAME("utresrc")49ACPI_MODULE_NAME("utresrc")
@@ -154,6 +154,138 @@ const char *acpi_gbl_typ_decode[] = { · 104 unmodified lines
154 "TypeF"154 "TypeF"
155};155};
156 156
157const char *acpi_gbl_ppc_decode[] = {
158 "PullDefault",
159 "PullUp",
160 "PullDown",
161 "PullNone"
162};
163
164const char *acpi_gbl_ior_decode[] = {
165 "IoRestrictionNone",
166 "IoRestrictionInputOnly",
167 "IoRestrictionOutputOnly",
168 "IoRestrictionNoneAndPreserve"
169};
170
171const char *acpi_gbl_dts_decode[] = {
172 "Width8bit",
173 "Width16bit",
174 "Width32bit",
175 "Width64bit",
176 "Width128bit",
177 "Width256bit",
178};
179
180/* GPIO connection type */
181
182const char *acpi_gbl_ct_decode[] = {
183 "Interrupt",
184 "I/O"
185};
186
187/* Serial bus type */
188
189const char *acpi_gbl_sbt_decode[] = {
190 "/* UNKNOWN serial bus type */",
191 "I2C",
192 "SPI",
193 "UART"
194};
195
196/* I2C serial bus access mode */
197
198const char *acpi_gbl_am_decode[] = {
199 "AddressingMode7Bit",
200 "AddressingMode10Bit"
201};
202
203/* I2C serial bus slave mode */
204
205const char *acpi_gbl_sm_decode[] = {
206 "ControllerInitiated",
207 "DeviceInitiated"
208};
209
210/* SPI serial bus wire mode */
211
212const char *acpi_gbl_wm_decode[] = {
213 "FourWireMode",
214 "ThreeWireMode"
215};
216
217/* SPI serial clock phase */
218
219const char *acpi_gbl_cph_decode[] = {
220 "ClockPhaseFirst",
221 "ClockPhaseSecond"
222};
223
224/* SPI serial bus clock polarity */
225
226const char *acpi_gbl_cpo_decode[] = {
227 "ClockPolarityLow",
228 "ClockPolarityHigh"
229};
230
231/* SPI serial bus device polarity */
232
233const char *acpi_gbl_dp_decode[] = {
234 "PolarityLow",
235 "PolarityHigh"
236};
237
238/* UART serial bus endian */
239
240const char *acpi_gbl_ed_decode[] = {
241 "LittleEndian",
242 "BigEndian"
243};
244
245/* UART serial bus bits per byte */
246
247const char *acpi_gbl_bpb_decode[] = {
248 "DataBitsFive",
249 "DataBitsSix",
250 "DataBitsSeven",
251 "DataBitsEight",
252 "DataBitsNine",
253 "/* UNKNOWN Bits per byte */",
254 "/* UNKNOWN Bits per byte */",
255 "/* UNKNOWN Bits per byte */"
256};
257
258/* UART serial bus stop bits */
259
260const char *acpi_gbl_sb_decode[] = {
261 "StopBitsNone",
262 "StopBitsOne",
263 "StopBitsOnePlusHalf",
264 "StopBitsTwo"
265};
266
267/* UART serial bus flow control */
268
269const char *acpi_gbl_fc_decode[] = {
270 "FlowControlNone",
271 "FlowControlHardware",
272 "FlowControlXON",
273 "/* UNKNOWN flow control keyword */"
274};
275
276/* UART serial bus parity type */
277
278const char *acpi_gbl_pt_decode[] = {
279 "ParityTypeNone",
280 "ParityTypeEven",
281 "ParityTypeOdd",
282 "ParityTypeMark",
283 "ParityTypeSpace",
284 "/* UNKNOWN parity keyword */",
285 "/* UNKNOWN parity keyword */",
286 "/* UNKNOWN parity keyword */"
287};
288
157#endif289#endif
158 290
159/*291/*
@@ -173,7 +305,7 @@ const u8 acpi_gbl_resource_aml_sizes[] = { · 13 unmodified lines
173 ACPI_AML_SIZE_SMALL(struct aml_resource_end_dependent),305 ACPI_AML_SIZE_SMALL(struct aml_resource_end_dependent),
174 ACPI_AML_SIZE_SMALL(struct aml_resource_io),306 ACPI_AML_SIZE_SMALL(struct aml_resource_io),
175 ACPI_AML_SIZE_SMALL(struct aml_resource_fixed_io),307 ACPI_AML_SIZE_SMALL(struct aml_resource_fixed_io),
176 0,308 ACPI_AML_SIZE_SMALL(struct aml_resource_fixed_dma),
177 0,309 0,
178 0,310 0,
179 0,311 0,
@@ -193,7 +325,17 @@ const u8 acpi_gbl_resource_aml_sizes[] = { · 13 unmodified lines
193 ACPI_AML_SIZE_LARGE(struct aml_resource_address16),325 ACPI_AML_SIZE_LARGE(struct aml_resource_address16),
194 ACPI_AML_SIZE_LARGE(struct aml_resource_extended_irq),326 ACPI_AML_SIZE_LARGE(struct aml_resource_extended_irq),
195 ACPI_AML_SIZE_LARGE(struct aml_resource_address64),327 ACPI_AML_SIZE_LARGE(struct aml_resource_address64),
196 ACPI_AML_SIZE_LARGE(struct aml_resource_extended_address64)328 ACPI_AML_SIZE_LARGE(struct aml_resource_extended_address64),
329 ACPI_AML_SIZE_LARGE(struct aml_resource_gpio),
330 0,
331 ACPI_AML_SIZE_LARGE(struct aml_resource_common_serialbus),
332};
333
334const u8 acpi_gbl_resource_aml_serial_bus_sizes[] = {
335 0,
336 ACPI_AML_SIZE_LARGE(struct aml_resource_i2c_serialbus),
337 ACPI_AML_SIZE_LARGE(struct aml_resource_spi_serialbus),
338 ACPI_AML_SIZE_LARGE(struct aml_resource_uart_serialbus),
197};339};
198 340
199/*341/*
@@ -209,35 +351,49 @@ static const u8 acpi_gbl_resource_types[] = { · 9 unmodified lines
209 0,351 0,
210 0,352 0,
211 0,353 0,
212 ACPI_SMALL_VARIABLE_LENGTH,354 ACPI_SMALL_VARIABLE_LENGTH, /* 04 IRQ */
213 ACPI_FIXED_LENGTH,355 ACPI_FIXED_LENGTH, /* 05 DMA */
214 ACPI_SMALL_VARIABLE_LENGTH,356 ACPI_SMALL_VARIABLE_LENGTH, /* 06 start_dependent_functions */
215 ACPI_FIXED_LENGTH,357 ACPI_FIXED_LENGTH, /* 07 end_dependent_functions */
216 ACPI_FIXED_LENGTH,358 ACPI_FIXED_LENGTH, /* 08 IO */
217 ACPI_FIXED_LENGTH,359 ACPI_FIXED_LENGTH, /* 09 fixed_iO */
218 0,360 ACPI_FIXED_LENGTH, /* 0_a fixed_dMA */
219 0,361 0,
220 0,362 0,
221 0,363 0,
222 ACPI_VARIABLE_LENGTH,364 ACPI_VARIABLE_LENGTH, /* 0_e vendor_short */
223 ACPI_FIXED_LENGTH,365 ACPI_FIXED_LENGTH, /* 0_f end_tag */
224 366
225 /* Large descriptors */367 /* Large descriptors */
226 368
227 0,369 0,
228 ACPI_FIXED_LENGTH,370 ACPI_FIXED_LENGTH, /* 01 Memory24 */
229 ACPI_FIXED_LENGTH,371 ACPI_FIXED_LENGTH, /* 02 generic_register */
230 0,372 0,
231 ACPI_VARIABLE_LENGTH,373 ACPI_VARIABLE_LENGTH, /* 04 vendor_long */
232 ACPI_FIXED_LENGTH,374 ACPI_FIXED_LENGTH, /* 05 Memory32 */
233 ACPI_FIXED_LENGTH,375 ACPI_FIXED_LENGTH, /* 06 memory32_fixed */
234 ACPI_VARIABLE_LENGTH,376 ACPI_VARIABLE_LENGTH, /* 07 Dword* address */
235 ACPI_VARIABLE_LENGTH,377 ACPI_VARIABLE_LENGTH, /* 08 Word* address */
236 ACPI_VARIABLE_LENGTH,378 ACPI_VARIABLE_LENGTH, /* 09 extended_iRQ */
237 ACPI_VARIABLE_LENGTH,379 ACPI_VARIABLE_LENGTH, /* 0_a Qword* address */
238 ACPI_FIXED_LENGTH380 ACPI_FIXED_LENGTH, /* 0_b Extended* address */
381 ACPI_VARIABLE_LENGTH, /* 0_c Gpio* */
382 0,
383 ACPI_VARIABLE_LENGTH /* 0_e *serial_bus */
239};384};
240 385
386/*
387 * For the i_aSL compiler/disassembler, we don't want any error messages
388 * because the disassembler uses the resource validation code to determine
389 * if Buffer objects are actually Resource Templates.
390 */
391#ifdef ACPI_ASL_COMPILER
392#define ACPI_RESOURCE_ERROR(plist)
393#else
394#define ACPI_RESOURCE_ERROR(plist) ACPI_ERROR(plist)
395#endif
396
241/*******************************************************************************397/*******************************************************************************
242 *398 *
243 * FUNCTION: acpi_ut_walk_aml_resources399 * FUNCTION: acpi_ut_walk_aml_resources
@@ -265,6 +421,7 @@ acpi_ut_walk_aml_resources(u8 * aml, · 21 unmodified lines
265 u8 resource_index;421 u8 resource_index;
266 u32 length;422 u32 length;
267 u32 offset = 0;423 u32 offset = 0;
424 u8 end_tag[2] = { 0x79, 0x00 };
268 425
269 ACPI_FUNCTION_TRACE(ut_walk_aml_resources);426 ACPI_FUNCTION_TRACE(ut_walk_aml_resources);
270 427
@@ -286,6 +443,10 @@ acpi_ut_walk_aml_resources(u8 * aml, · 15 unmodified lines
286 443
287 status = acpi_ut_validate_resource(aml, &resource_index);444 status = acpi_ut_validate_resource(aml, &resource_index);
288 if (ACPI_FAILURE(status)) {445 if (ACPI_FAILURE(status)) {
446 /*
447 * Exit on failure. Cannot continue because the descriptor length
448 * may be bogus also.
449 */
289 return_ACPI_STATUS(status);450 return_ACPI_STATUS(status);
290 }451 }
291 452
@@ -300,7 +461,7 @@ acpi_ut_walk_aml_resources(u8 * aml, · 8 unmodified lines
300 user_function(aml, length, offset, resource_index,461 user_function(aml, length, offset, resource_index,
301 context);462 context);
302 if (ACPI_FAILURE(status)) {463 if (ACPI_FAILURE(status)) {
303 return (status);464 return_ACPI_STATUS(status);
304 }465 }
305 }466 }
306 467
@@ -333,7 +494,19 @@ acpi_ut_walk_aml_resources(u8 * aml, · 26 unmodified lines
333 494
334 /* Did not find an end_tag descriptor */495 /* Did not find an end_tag descriptor */
335 496
336 return (AE_AML_NO_RESOURCE_END_TAG);497 if (user_function) {
498
499 /* Insert an end_tag anyway. acpi_rs_get_list_length always leaves room */
500
501 (void)acpi_ut_validate_resource(end_tag, &resource_index);
502 status =
503 user_function(end_tag, 2, offset, resource_index, context);
504 if (ACPI_FAILURE(status)) {
505 return_ACPI_STATUS(status);
506 }
507 }
508
509 return_ACPI_STATUS(AE_AML_NO_RESOURCE_END_TAG);
337}510}
338 511
339/*******************************************************************************512/*******************************************************************************
@@ -354,6 +527,7 @@ acpi_ut_walk_aml_resources(u8 * aml, · 14 unmodified lines
354 527
355acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index)528acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index)
356{529{
530 union aml_resource *aml_resource;
357 u8 resource_type;531 u8 resource_type;
358 u8 resource_index;532 u8 resource_index;
359 acpi_rs_length resource_length;533 acpi_rs_length resource_length;
@@ -375,7 +549,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 15 unmodified lines
375 /* Verify the large resource type (name) against the max */549 /* Verify the large resource type (name) against the max */
376 550
377 if (resource_type > ACPI_RESOURCE_NAME_LARGE_MAX) {551 if (resource_type > ACPI_RESOURCE_NAME_LARGE_MAX) {
378 return (AE_AML_INVALID_RESOURCE_TYPE);552 goto invalid_resource;
379 }553 }
380 554
381 /*555 /*
@@ -392,15 +566,17 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 10 unmodified lines
392 ((resource_type & ACPI_RESOURCE_NAME_SMALL_MASK) >> 3);566 ((resource_type & ACPI_RESOURCE_NAME_SMALL_MASK) >> 3);
393 }567 }
394 568
395 /* Check validity of the resource type, zero indicates name is invalid */569 /*
396 570 * Check validity of the resource type, via acpi_gbl_resource_types. Zero
571 * indicates an invalid resource.
572 */
397 if (!acpi_gbl_resource_types[resource_index]) {573 if (!acpi_gbl_resource_types[resource_index]) {
398 return (AE_AML_INVALID_RESOURCE_TYPE);574 goto invalid_resource;
399 }575 }
400 576
401 /*577 /*
402 * 2) Validate the resource_length field. This ensures that the length578 * Validate the resource_length field. This ensures that the length
403 * is at least reasonable, and guarantees that it is non-zero.579 * is at least reasonable, and guarantees that it is non-zero.
404 */580 */
405 resource_length = acpi_ut_get_resource_length(aml);581 resource_length = acpi_ut_get_resource_length(aml);
406 minimum_resource_length = acpi_gbl_resource_aml_sizes[resource_index];582 minimum_resource_length = acpi_gbl_resource_aml_sizes[resource_index];
@@ -413,7 +589,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 6 unmodified lines
413 /* Fixed length resource, length must match exactly */589 /* Fixed length resource, length must match exactly */
414 590
415 if (resource_length != minimum_resource_length) {591 if (resource_length != minimum_resource_length) {
416 return (AE_AML_BAD_RESOURCE_LENGTH);592 goto bad_resource_length;
417 }593 }
418 break;594 break;
419 595
@@ -422,7 +598,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 2 unmodified lines
422 /* Variable length resource, length must be at least the minimum */598 /* Variable length resource, length must be at least the minimum */
423 599
424 if (resource_length < minimum_resource_length) {600 if (resource_length < minimum_resource_length) {
425 return (AE_AML_BAD_RESOURCE_LENGTH);601 goto bad_resource_length;
426 }602 }
427 break;603 break;
428 604
@@ -432,7 +608,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 3 unmodified lines
432 608
433 if ((resource_length > minimum_resource_length) ||609 if ((resource_length > minimum_resource_length) ||
434 (resource_length < (minimum_resource_length - 1))) {610 (resource_length < (minimum_resource_length - 1))) {
435 return (AE_AML_BAD_RESOURCE_LENGTH);611 goto bad_resource_length;
436 }612 }
437 break;613 break;
438 614
@@ -440,7 +616,23 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 1 unmodified line
440 616
441 /* Shouldn't happen (because of validation earlier), but be sure */617 /* Shouldn't happen (because of validation earlier), but be sure */
442 618
443 return (AE_AML_INVALID_RESOURCE_TYPE);619 goto invalid_resource;
620 }
621
622 aml_resource = ACPI_CAST_PTR(union aml_resource, aml);
623 if (resource_type == ACPI_RESOURCE_NAME_SERIAL_BUS) {
624
625 /* Validate the bus_type field */
626
627 if ((aml_resource->common_serial_bus.type == 0) ||
628 (aml_resource->common_serial_bus.type >
629 AML_RESOURCE_MAX_SERIALBUSTYPE)) {
630 ACPI_RESOURCE_ERROR((AE_INFO,
631 "Invalid/unsupported SerialBus resource descriptor: BusType 0x%2.2X",
632 aml_resource->common_serial_bus.
633 type));
634 return (AE_AML_INVALID_RESOURCE_TYPE);
635 }
444 }636 }
445 637
446 /* Optionally return the resource table index */638 /* Optionally return the resource table index */
@@ -450,6 +642,22 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 3 unmodified lines
450 }642 }
451 643
452 return (AE_OK);644 return (AE_OK);
645
646 invalid_resource:
647
648 ACPI_RESOURCE_ERROR((AE_INFO,
649 "Invalid/unsupported resource descriptor: Type 0x%2.2X",
650 resource_type));
651 return (AE_AML_INVALID_RESOURCE_TYPE);
652
653 bad_resource_length:
654
655 ACPI_RESOURCE_ERROR((AE_INFO,
656 "Invalid resource descriptor length: Type "
657 "0x%2.2X, Length 0x%4.4X, MinLength 0x%4.4X",
658 resource_type, resource_length,
659 minimum_resource_length));
660 return (AE_AML_BAD_RESOURCE_LENGTH);
453}661}
454 662
455/*******************************************************************************663/*******************************************************************************
drivers/acpi/acpica/utstate.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utxface.c+39−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 *****************************************************************************/5 *****************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
@@ -48,6 +48,7 @@ · 36 unmodified lines
48#include "acnamesp.h"48#include "acnamesp.h"
49#include "acdebug.h"49#include "acdebug.h"
50#include "actables.h"50#include "actables.h"
51#include "acinterp.h"
51 52
52#define _COMPONENT ACPI_UTILITIES53#define _COMPONENT ACPI_UTILITIES
53ACPI_MODULE_NAME("utxface")54ACPI_MODULE_NAME("utxface")
@@ -640,4 +641,41 @@ acpi_status acpi_install_interface_handler(acpi_interface_handler handler) · 586 unmodified lines
640}641}
641 642
642ACPI_EXPORT_SYMBOL(acpi_install_interface_handler)643ACPI_EXPORT_SYMBOL(acpi_install_interface_handler)
644
645/*****************************************************************************
646 *
647 * FUNCTION: acpi_check_address_range
648 *
649 * PARAMETERS: space_id - Address space ID
650 * Address - Start address
651 * Length - Length
652 * Warn - TRUE if warning on overlap desired
653 *
654 * RETURN: Count of the number of conflicts detected.
655 *
656 * DESCRIPTION: Check if the input address range overlaps any of the
657 * ASL operation region address ranges.
658 *
659 ****************************************************************************/
660u32
661acpi_check_address_range(acpi_adr_space_type space_id,
662 acpi_physical_address address,
663 acpi_size length, u8 warn)
664{
665 u32 overlaps;
666 acpi_status status;
667
668 status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
669 if (ACPI_FAILURE(status)) {
670 return (0);
671 }
672
673 overlaps = acpi_ut_check_address_range(space_id, address,
674 (u32)length, warn);
675
676 (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
677 return (overlaps);
678}
679
680ACPI_EXPORT_SYMBOL(acpi_check_address_range)
643#endif /* !ACPI_ASL_COMPILER */681#endif /* !ACPI_ASL_COMPILER */
drivers/acpi/acpica/utxferror.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
5 ******************************************************************************/5 ******************************************************************************/
6 6
7/*7/*
8 * Copyright (C) 2000 - 2011, Intel Corp.8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.9 * All rights reserved.
10 *10 *
11 * Redistribution and use in source and binary forms, with or without11 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utxfmutex.c+187−0
@@ -0,0 +1,187 @@
1/*******************************************************************************
2 *
3 * Module Name: utxfmutex - external AML mutex access functions
4 *
5 ******************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#include <acpi/acpi.h>
45#include "accommon.h"
46#include "acnamesp.h"
47
48#define _COMPONENT ACPI_UTILITIES
49ACPI_MODULE_NAME("utxfmutex")
50
51/* Local prototypes */
52static acpi_status
53acpi_ut_get_mutex_object(acpi_handle handle,
54 acpi_string pathname,
55 union acpi_operand_object **ret_obj);
56
57/*******************************************************************************
58 *
59 * FUNCTION: acpi_ut_get_mutex_object
60 *
61 * PARAMETERS: Handle - Mutex or prefix handle (optional)
62 * Pathname - Mutex pathname (optional)
63 * ret_obj - Where the mutex object is returned
64 *
65 * RETURN: Status
66 *
67 * DESCRIPTION: Get an AML mutex object. The mutex node is pointed to by
68 * Handle:Pathname. Either Handle or Pathname can be NULL, but
69 * not both.
70 *
71 ******************************************************************************/
72
73static acpi_status
74acpi_ut_get_mutex_object(acpi_handle handle,
75 acpi_string pathname,
76 union acpi_operand_object **ret_obj)
77{
78 struct acpi_namespace_node *mutex_node;
79 union acpi_operand_object *mutex_obj;
80 acpi_status status;
81
82 /* Parameter validation */
83
84 if (!ret_obj || (!handle && !pathname)) {
85 return (AE_BAD_PARAMETER);
86 }
87
88 /* Get a the namespace node for the mutex */
89
90 mutex_node = handle;
91 if (pathname != NULL) {
92 status = acpi_get_handle(handle, pathname,
93 ACPI_CAST_PTR(acpi_handle,
94 &mutex_node));
95 if (ACPI_FAILURE(status)) {
96 return (status);
97 }
98 }
99
100 /* Ensure that we actually have a Mutex object */
101
102 if (!mutex_node || (mutex_node->type != ACPI_TYPE_MUTEX)) {
103 return (AE_TYPE);
104 }
105

82 more lines aren’t shown here.

drivers/acpi/apei/apei-base.c+112−11

This diff is large: its 226 lines aren’t shown here.

drivers/acpi/apei/apei-internal.h+6−0

This diff is large: its 20 lines aren’t shown here.

drivers/acpi/apei/einj.c+256−59

This diff is large: its 457 lines aren’t shown here.

drivers/acpi/apei/erst.c+2−3

This diff is large: its 13 lines aren’t shown here.

drivers/acpi/apei/ghes.c+83−19

This diff is large: its 197 lines aren’t shown here.

drivers/acpi/apei/hest.c+2−3

This diff is large: its 13 lines aren’t shown here.

drivers/acpi/atomicio.c+0−365

This diff is large: its 366 lines aren’t shown here.

drivers/acpi/numa.c+6−0

This diff is large: its 23 lines aren’t shown here.

drivers/acpi/nvs.c+52−1

This diff is large: its 71 lines aren’t shown here.

drivers/acpi/osl.c+188−206

This diff is large: its 514 lines aren’t shown here.

drivers/acpi/processor_core.c+24−2

This diff is large: its 33 lines aren’t shown here.

drivers/acpi/processor_driver.c+117−52

This diff is large: its 244 lines aren’t shown here.

drivers/acpi/sleep.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/ata/ata_piix.c+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/ata/libata-core.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/ata/libata-transport.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/ata/pata_at91.c+21−27

This diff is large: its 81 lines aren’t shown here.

drivers/ata/pata_bf54x.c+88−79

This diff is large: its 253 lines aren’t shown here.

drivers/ata/sata_fsl.c+11−0

This diff is large: its 32 lines aren’t shown here.

drivers/base/Makefile+1−1

This diff is large: its 8 lines aren’t shown here.

drivers/base/bus.c+5−4

This diff is large: its 24 lines aren’t shown here.

drivers/base/core.c+16−1

This diff is large: its 45 lines aren’t shown here.

drivers/base/cpu.c+21−0

This diff is large: its 37 lines aren’t shown here.

drivers/base/firmware_class.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/base/memory.c+26−5

This diff is large: its 69 lines aren’t shown here.

drivers/base/node.c+8−0

This diff is large: its 16 lines aren’t shown here.

drivers/base/regmap/regcache.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/base/regmap/regmap.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/base/sys.c+0−383

This diff is large: its 384 lines aren’t shown here.

drivers/bcma/bcma_private.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/bcma/host_pci.c+18−25

This diff is large: its 66 lines aren’t shown here.

drivers/bcma/main.c+25−3

This diff is large: its 50 lines aren’t shown here.

drivers/bcma/scan.c+11−8

This diff is large: its 27 lines aren’t shown here.

drivers/block/Kconfig+11−0

This diff is large: its 18 lines aren’t shown here.

drivers/block/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/block/floppy.c+16−1

This diff is large: its 32 lines aren’t shown here.

drivers/block/loop.c+13−11

This diff is large: its 55 lines aren’t shown here.

drivers/block/mtip32xx/mtip32xx.c+5−6

This diff is large: its 46 lines aren’t shown here.

drivers/block/mtip32xx/mtip32xx.h+0−5

This diff is large: its 19 lines aren’t shown here.

drivers/block/nvme.c+1741−0

This diff is large: its 1742 lines aren’t shown here.

drivers/block/rbd.c+5−2

This diff is large: its 36 lines aren’t shown here.

drivers/cdrom/cdrom.c+6−14

This diff is large: its 83 lines aren’t shown here.

drivers/char/agp/backend.c+6−6

This diff is large: its 28 lines aren’t shown here.

drivers/char/tpm/tpm.c+9−0

This diff is large: its 16 lines aren’t shown here.

drivers/char/tpm/tpm.h+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/cpuidle/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/dma/Kconfig+17−10

This diff is large: its 59 lines aren’t shown here.

drivers/dma/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/dma/amba-pl08x.c+22−19

This diff is large: its 118 lines aren’t shown here.

drivers/dma/at_hdmac.c+83−24

This diff is large: its 261 lines aren’t shown here.

drivers/dma/at_hdmac_regs.h+9−9

This diff is large: its 45 lines aren’t shown here.

drivers/dma/coh901318.c+6−6

This diff is large: its 50 lines aren’t shown here.

drivers/dma/coh901318_lli.c+11−12

This diff is large: its 86 lines aren’t shown here.

drivers/dma/coh901318_lli.h+2−2

This diff is large: its 17 lines aren’t shown here.

drivers/dma/dmaengine.c+2−2

This diff is large: its 15 lines aren’t shown here.

drivers/dma/dmatest.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/dma/dw_dmac.c+48−35

This diff is large: its 196 lines aren’t shown here.

drivers/dma/dw_dmac_regs.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/dma/ep93xx_dma.c+63−27

This diff is large: its 226 lines aren’t shown here.

drivers/dma/fsldma.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/dma/imx-dma.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/dma/imx-sdma.c+22−11

This diff is large: its 141 lines aren’t shown here.

drivers/dma/intel_mid_dma.c+25−14

This diff is large: its 157 lines aren’t shown here.

drivers/dma/intel_mid_dma_regs.h+2−2

This diff is large: its 17 lines aren’t shown here.

drivers/dma/iop-adma.c+2−14

This diff is large: its 31 lines aren’t shown here.

drivers/dma/ipu/ipu_idmac.c+3−26

This diff is large: its 64 lines aren’t shown here.

drivers/dma/mpc512x_dma.c+1−11

This diff is large: its 19 lines aren’t shown here.

drivers/dma/mxs-dma.c+13−40

This diff is large: its 182 lines aren’t shown here.

drivers/dma/pch_dma.c+12−8

This diff is large: its 84 lines aren’t shown here.

drivers/dma/pl330.c+9−22

This diff is large: its 92 lines aren’t shown here.

drivers/dma/shdma.c+45−30

This diff is large: its 219 lines aren’t shown here.

drivers/dma/sirf-dma.c+707−0

This diff is large: its 708 lines aren’t shown here.

drivers/dma/ste_dma40.c+391−50

This diff is large: its 880 lines aren’t shown here.

drivers/dma/ste_dma40_ll.h+11−0

This diff is large: its 25 lines aren’t shown here.

drivers/dma/timb_dma.c+10−20

This diff is large: its 88 lines aren’t shown here.

drivers/dma/txx9dmac.c+6−6

This diff is large: its 48 lines aren’t shown here.

drivers/edac/i3200_edac.c+2−13

This diff is large: its 29 lines aren’t shown here.

drivers/firewire/ohci.c+5−1

This diff is large: its 27 lines aren’t shown here.

drivers/gpio/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpio/gpio-lpc32xx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpio/gpio-ml-ioh.c+5−4

This diff is large: its 44 lines aren’t shown here.

drivers/gpio/gpio-pch.c+3−2

This diff is large: its 26 lines aren’t shown here.

drivers/gpio/gpio-samsung.c+13−10

This diff is large: its 41 lines aren’t shown here.

drivers/gpio/gpio-tps65910.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_auth.c+5−1

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/drm_fops.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/drm_gem.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_ioc32.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/exynos/Kconfig+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_core.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_crtc.c+3−3

This diff is large: its 20 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_drv.c+18−8

This diff is large: its 56 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_encoder.c+34−0

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_encoder.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_fbdev.c+4−66

This diff is large: its 91 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_fimd.c+65−51

This diff is large: its 168 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_hdmi.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_mixer.c+12−7

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/gma500/framebuffer.c+4−4

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/gma500/gtt.c+2−3

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/i810/i810_dma.c+6−11

This diff is large: its 32 lines aren’t shown here.

drivers/gpu/drm/i810/i810_drv.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/i810/i810_drv.h+4−2

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/i915/i915_debugfs.c+20−11

This diff is large: its 91 lines aren’t shown here.

drivers/gpu/drm/i915/i915_dma.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/i915/i915_drv.c+44−12

This diff is large: its 97 lines aren’t shown here.

drivers/gpu/drm/i915/i915_drv.h+7−3

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/i915/i915_irq.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/i915/i915_reg.h+15−0

This diff is large: its 29 lines aren’t shown here.

drivers/gpu/drm/i915/i915_suspend.c+8−3

This diff is large: its 39 lines aren’t shown here.

drivers/gpu/drm/i915/intel_bios.h+5−1

This diff is large: its 14 lines aren’t shown here.

drivers/gpu/drm/i915/intel_crt.c+23−0

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/i915/intel_display.c+38−16

This diff is large: its 124 lines aren’t shown here.

drivers/gpu/drm/i915/intel_dp.c+5−15

This diff is large: its 52 lines aren’t shown here.

drivers/gpu/drm/i915/intel_lvds.c+16−0

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/i915/intel_ringbuffer.c+25−16

This diff is large: its 96 lines aren’t shown here.

drivers/gpu/drm/i915/intel_sdvo.c+3−5

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/i915/intel_sprite.c+2−6

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/i915/intel_tv.c+8−130

This diff is large: its 215 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_bios.h+3−2

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_bo.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_display.c+10−0

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_drv.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_gem.c+21−2

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_mxm.c+9−0

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/nouveau/nv50_pm.c+2−2

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/radeon/atombios_crtc.c+32−32

This diff is large: its 179 lines aren’t shown here.

drivers/gpu/drm/radeon/atombios_dp.c+25−15

This diff is large: its 78 lines aren’t shown here.

drivers/gpu/drm/radeon/atombios_encoders.c+45−44

This diff is large: its 285 lines aren’t shown here.

drivers/gpu/drm/radeon/evergreen.c+3−0

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/radeon/evergreend.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/radeon/ni.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/radeon/nid.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/radeon/r100.c+8−4

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/radeon/r300.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/r420.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/r520.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/r600.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/radeon/r600_blit_kms.c+25−10

This diff is large: its 53 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon.h+42−42

This diff is large: its 105 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_atombios.c+20−0

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_atpx_handler.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_bios.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_cs.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_device.c+9−3

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_display.c+4−2

This diff is large: its 14 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_encoders.c+77−0

This diff is large: its 88 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_fence.c+3−1

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_i2c.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_irq_kms.c+6−0

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_mode.h+8−0

This diff is large: its 31 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_ring.c+25−19

This diff is large: its 123 lines aren’t shown here.

drivers/gpu/drm/radeon/rs400.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/rs600.c+8−4

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/radeon/rs690.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/rv515.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/rv770.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/sis/sis_drv.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/ttm/ttm_bo.c+13−4

This diff is large: its 32 lines aren’t shown here.

drivers/gpu/drm/vmwgfx/vmwgfx_kms.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/hid/hid-hyperv.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/hid/hid-wacom.c+4−3

This diff is large: its 34 lines aren’t shown here.

drivers/hid/hid-wiimote-core.c+2−2

This diff is large: its 17 lines aren’t shown here.

drivers/hid/usbhid/hiddev.c+2−2

This diff is large: its 14 lines aren’t shown here.

drivers/hwmon/f71805f.c+5−5

This diff is large: its 17 lines aren’t shown here.

drivers/hwmon/f75375s.c+5−6

This diff is large: its 46 lines aren’t shown here.

drivers/hwmon/sht15.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/hwmon/w83627ehf.c+26−8

This diff is large: its 62 lines aren’t shown here.

drivers/i2c/busses/Kconfig+7−7

This diff is large: its 27 lines aren’t shown here.

drivers/i2c/busses/i2c-eg20t.c+12−7

This diff is large: its 67 lines aren’t shown here.

drivers/i2c/busses/i2c-omap.c+70−40

This diff is large: its 295 lines aren’t shown here.

drivers/i2c/busses/i2c-tegra.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/ide/Makefile+0−1

This diff is large: its 5 lines aren’t shown here.

drivers/ide/at91_ide.c+0−366

This diff is large: its 367 lines aren’t shown here.

drivers/idle/intel_idle.c+50−48

This diff is large: its 181 lines aren’t shown here.

drivers/infiniband/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/infiniband/Makefile+1−0

This diff is large: its 6 lines aren’t shown here.

drivers/infiniband/core/ucma.c+4−1

This diff is large: its 14 lines aren’t shown here.

drivers/infiniband/core/uverbs_cmd.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/infiniband/core/verbs.c+1−1

This diff is large: its 16 lines aren’t shown here.

drivers/infiniband/hw/ipath/ipath_fs.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/infiniband/hw/mlx4/mad.c+2−5

This diff is large: its 15 lines aren’t shown here.

drivers/infiniband/hw/nes/nes.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_cm.c+7−3

This diff is large: its 43 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_cm.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_context.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_hw.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_hw.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_mgt.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_mgt.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_nic.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_user.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_utils.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_verbs.c+4−2

This diff is large: its 25 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_verbs.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/qib/qib_iba6120.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/infiniband/hw/qib/qib_pcie.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/infiniband/ulp/ipoib/ipoib.h+4−2

This diff is large: its 20 lines aren’t shown here.

drivers/infiniband/ulp/ipoib/ipoib_main.c+19−36

This diff is large: its 130 lines aren’t shown here.

drivers/infiniband/ulp/ipoib/ipoib_multicast.c+1−9

This diff is large: its 23 lines aren’t shown here.

drivers/infiniband/ulp/srpt/Kconfig+12−0

This diff is large: its 13 lines aren’t shown here.

drivers/infiniband/ulp/srpt/Makefile+2−0

This diff is large: its 3 lines aren’t shown here.

drivers/infiniband/ulp/srpt/ib_dm_mad.h+139−0

This diff is large: its 140 lines aren’t shown here.

drivers/infiniband/ulp/srpt/ib_srpt.c+4070−0

This diff is large: its 4071 lines aren’t shown here.

drivers/infiniband/ulp/srpt/ib_srpt.h+443−0

This diff is large: its 444 lines aren’t shown here.

drivers/input/evdev.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/input/keyboard/twl4030_keypad.c+1−3

This diff is large: its 22 lines aren’t shown here.

drivers/input/serio/i8042-x86ia64io.h+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/input/serio/serio_raw.c+9−6

This diff is large: its 31 lines aren’t shown here.

drivers/iommu/amd_iommu.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/iommu/msm_iommu.c+1−6

This diff is large: its 33 lines aren’t shown here.

drivers/isdn/i4l/isdn_net.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/leds/Kconfig+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/leds/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/leds/leds-lm3530.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/leds/leds-ot200.c+171−0

This diff is large: its 172 lines aren’t shown here.

drivers/macintosh/adb.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/md/dm-raid.c+9−3

This diff is large: its 33 lines aren’t shown here.

drivers/md/md.c+3−2

This diff is large: its 21 lines aren’t shown here.

drivers/media/common/tuners/tuner-xc2028.c+21−6

This diff is large: its 64 lines aren’t shown here.

drivers/media/common/tuners/xc4000.c+86−0

This diff is large: its 128 lines aren’t shown here.

drivers/media/dvb/dvb-core/dvb_frontend.c+20−21

This diff is large: its 79 lines aren’t shown here.

drivers/media/dvb/dvb-usb/anysee.c+14−13

This diff is large: its 46 lines aren’t shown here.

drivers/media/dvb/dvb-usb/cinergyT2-fe.c+4−3

This diff is large: its 19 lines aren’t shown here.

drivers/media/dvb/dvb-usb/dib0700.h+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/media/dvb/dvb-usb/dib0700_core.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/media/dvb/dvb-usb/dib0700_devices.c+137−13

This diff is large: its 190 lines aren’t shown here.

drivers/media/dvb/frontends/cxd2820r.h+2−4

This diff is large: its 17 lines aren’t shown here.

drivers/media/dvb/frontends/cxd2820r_core.c+22−6

This diff is large: its 76 lines aren’t shown here.

drivers/media/dvb/frontends/ds3000.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/dvb/frontends/mb86a20s.c+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/media/dvb/frontends/tda18271c2dd.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/as3645a.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/atmel-isi.c+14−0

This diff is large: its 47 lines aren’t shown here.

drivers/media/video/cx18/cx18-fileops.c+14−27

This diff is large: its 76 lines aren’t shown here.

drivers/media/video/cx231xx/cx231xx-cards.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/cx23885/cx23885-cards.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/media/video/cx23885/cx23885-dvb.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/media/video/cx23885/cx23885-video.c+4−3

This diff is large: its 21 lines aren’t shown here.

drivers/media/video/cx88/cx88-cards.c+12−12

This diff is large: its 69 lines aren’t shown here.

drivers/media/video/em28xx/em28xx-dvb.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-driver.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-driver.h+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-fileops.c+44−74

This diff is large: its 290 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-ioctl.c+5−17

This diff is large: its 64 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-irq.c+2−2

This diff is large: its 16 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-streams.c+1−1

This diff is large: its 16 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-yuv.c+19−3

This diff is large: its 51 lines aren’t shown here.

drivers/media/video/mx3_camera.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/omap/omap_vout.c+5−2

This diff is large: its 21 lines aren’t shown here.

drivers/media/video/pwc/pwc-ctrl.c+102−137

This diff is large: its 445 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec1.c+4−12

This diff is large: its 24 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec1.h+4−2

This diff is large: its 18 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec23.c+18−23

This diff is large: its 86 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec23.h+6−3

This diff is large: its 33 lines aren’t shown here.

drivers/media/video/pwc/pwc-if.c+16−159

This diff is large: its 289 lines aren’t shown here.

drivers/media/video/pwc/pwc-misc.c+0−1

This diff is large: its 6 lines aren’t shown here.

drivers/media/video/pwc/pwc-v4l.c+72−18

This diff is large: its 135 lines aren’t shown here.

drivers/media/video/pwc/pwc.h+8−6

This diff is large: its 50 lines aren’t shown here.

drivers/media/video/s5p-fimc/fimc-capture.c+4−3

This diff is large: its 28 lines aren’t shown here.

drivers/media/video/s5p-fimc/fimc-core.c+3−3

This diff is large: its 15 lines aren’t shown here.

drivers/media/video/s5p-fimc/fimc-mdevice.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/s5p-g2d/g2d.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/s5p-jpeg/jpeg-core.c+4−3

This diff is large: its 14 lines aren’t shown here.

drivers/media/video/s5p-mfc/s5p_mfc.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/media/video/s5p-mfc/s5p_mfc_dec.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/saa7164/saa7164-cards.c+0−4

This diff is large: its 18 lines aren’t shown here.

drivers/media/video/timblogiw.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/tlg2300/pd-main.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/media/video/v4l2-ctrls.c+27−27

This diff is large: its 112 lines aren’t shown here.

drivers/media/video/v4l2-ioctl.c+7−1

This diff is large: its 24 lines aren’t shown here.

drivers/media/video/zoran/zoran_driver.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/mfd/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/mfd/mcp-core.c+13−48

This diff is large: its 114 lines aren’t shown here.

drivers/mfd/mcp-sa11x0.c+54−115

This diff is large: its 307 lines aren’t shown here.

drivers/mfd/twl-core.c+4−2

This diff is large: its 26 lines aren’t shown here.

drivers/mfd/twl4030-power.c+10−10

This diff is large: its 90 lines aren’t shown here.

drivers/mfd/twl6040-core.c+77−51

This diff is large: its 171 lines aren’t shown here.

drivers/mfd/ucb1x00-core.c+24−43

This diff is large: its 146 lines aren’t shown here.

drivers/mfd/ucb1x00-ts.c+6−28

This diff is large: its 90 lines aren’t shown here.

drivers/misc/Kconfig+3−14

This diff is large: its 34 lines aren’t shown here.

drivers/misc/c2port/c2port-duramar2150.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/misc/carma/carma-fpga-program.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/misc/cb710/core.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/misc/cs5535-mfgpt.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/misc/lkdtm.c+5−1

This diff is large: its 23 lines aren’t shown here.

drivers/misc/vmw_balloon.c+7−7

This diff is large: its 57 lines aren’t shown here.

drivers/mmc/card/block.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/mmc/core/core.c+39−10

This diff is large: its 129 lines aren’t shown here.

drivers/mmc/core/host.h+0−21

This diff is large: its 28 lines aren’t shown here.

drivers/mmc/core/mmc.c+17−9

This diff is large: its 77 lines aren’t shown here.

drivers/mmc/core/sd.c+18−4

This diff is large: its 65 lines aren’t shown here.

drivers/mmc/core/sdio.c+4−3

This diff is large: its 31 lines aren’t shown here.

drivers/mmc/core/sdio_irq.c+8−2

This diff is large: its 24 lines aren’t shown here.

drivers/mmc/host/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/mmc/host/atmel-mci.c+10−3

This diff is large: its 46 lines aren’t shown here.

drivers/mmc/host/dw_mmc.c+75−69

This diff is large: its 240 lines aren’t shown here.

drivers/mmc/host/mmci.c+7−4

This diff is large: its 41 lines aren’t shown here.

drivers/mmc/host/mxcmmc.c+7−3

This diff is large: its 33 lines aren’t shown here.

drivers/mmc/host/mxs-mmc.c+9−1

This diff is large: its 69 lines aren’t shown here.

drivers/mmc/host/of_mmc_spi.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/mmc/host/sdhci-of-esdhc.c+32−0

This diff is large: its 46 lines aren’t shown here.

drivers/mmc/host/sdhci-pci.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/mmc/host/sdhci-pltfm.c+9−1

This diff is large: its 24 lines aren’t shown here.

drivers/mmc/host/sh_mmcif.c+11−9

This diff is large: its 58 lines aren’t shown here.

drivers/mmc/host/tmio_mmc.h+6−1

This diff is large: its 29 lines aren’t shown here.

drivers/mmc/host/tmio_mmc_dma.c+14−2

This diff is large: its 37 lines aren’t shown here.

drivers/mmc/host/tmio_mmc_pio.c+5−1

This diff is large: its 28 lines aren’t shown here.

drivers/mtd/mtdcore.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/mtd/nand/atmel_nand.c+41−4

This diff is large: its 76 lines aren’t shown here.

drivers/mtd/nand/gpmi-nand/gpmi-lib.c+26−14

This diff is large: its 132 lines aren’t shown here.

drivers/mtd/nand/nand_base.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/bonding/bond_alb.c+9−18

This diff is large: its 80 lines aren’t shown here.

drivers/net/can/cc770/cc770.c+3−1

This diff is large: its 16 lines aren’t shown here.

drivers/net/can/cc770/cc770_isa.c+15−1

This diff is large: its 41 lines aren’t shown here.

drivers/net/can/flexcan.c+6−1

This diff is large: its 21 lines aren’t shown here.

drivers/net/can/pch_can.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/net/can/sja1000/peak_pci.c+9−14

This diff is large: its 75 lines aren’t shown here.

drivers/net/can/ti_hecc.c+2−1

This diff is large: its 12 lines aren’t shown here.

drivers/net/can/usb/ems_usb.c+0−9

This diff is large: its 30 lines aren’t shown here.

drivers/net/dsa/mv88e6060.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/dsa/mv88e6123_61_65.c+18−4

This diff is large: its 38 lines aren’t shown here.

drivers/net/dsa/mv88e6131.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/dsa/mv88e6xxx.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/3com/3c59x.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/broadcom/bcm63xx_enet.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c+2−3

This diff is large: its 26 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c+49−69

This diff is large: its 187 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c+169−129

This diff is large: its 448 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c+7−21

This diff is large: its 89 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c+43−1

This diff is large: its 108 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h+11−0

This diff is large: its 30 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/net/ethernet/broadcom/tg3.c+16−20

This diff is large: its 61 lines aren’t shown here.

drivers/net/ethernet/brocade/bna/bnad_ethtool.c+4−6

This diff is large: its 45 lines aren’t shown here.

drivers/net/ethernet/cisco/enic/enic.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/cisco/enic/enic_main.c+22−16

This diff is large: its 158 lines aren’t shown here.

drivers/net/ethernet/emulex/benet/be_ethtool.c+1−5

This diff is large: its 14 lines aren’t shown here.

drivers/net/ethernet/emulex/benet/be_main.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/faraday/ftgmac100.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/faraday/ftmac100.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/freescale/fec.c+2−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/ethernet/ibm/ehea/ehea_ethtool.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/ibm/ehea/ehea_main.c+16−16

This diff is large: its 137 lines aren’t shown here.

drivers/net/ethernet/ibm/ehea/ehea_qmr.c+6−8

This diff is large: its 56 lines aren’t shown here.

drivers/net/ethernet/intel/e1000/e1000_main.c+6−4

This diff is large: its 19 lines aren’t shown here.

drivers/net/ethernet/intel/igb/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_82575.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_82575.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_defines.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_hw.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mac.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mac.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mbx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_nvm.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_nvm.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_phy.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_phy.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/igb.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/igb_ethtool.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/igb_main.c+7−6

This diff is large: its 48 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/defines.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/ethtool.c+2−3

This diff is large: its 17 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/igbvf.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/mbx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/netdev.c+2−7

This diff is large: its 30 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/vf.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/vf.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_common.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_common.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c+10−3

This diff is large: its 36 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c+53−39

This diff is large: its 162 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_main.c+13−9

This diff is large: its 67 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c+6−2

This diff is large: its 29 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_type.h+17−17

This diff is large: its 89 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/defines.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/ethtool.c+4−3

This diff is large: its 28 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/ixgbevf.h+5−5

This diff is large: its 26 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c+27−20

This diff is large: its 83 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/mbx.c+3−2

This diff is large: its 26 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/vf.c+20−8

This diff is large: its 95 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/vf.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/marvell/mv643xx_eth.c+14−0

This diff is large: its 49 lines aren’t shown here.

drivers/net/ethernet/marvell/skge.c+25−13

This diff is large: its 92 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/cmd.c+13−6

This diff is large: its 55 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/cq.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_ethtool.c+143−16

This diff is large: its 214 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_main.c+1−5

This diff is large: its 27 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_netdev.c+28−13

This diff is large: its 82 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_rx.c+14−4

This diff is large: its 54 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/eq.c+12−14

This diff is large: its 63 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/fw.c+0−7

This diff is large: its 28 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/fw.h+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/main.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mcg.c+8−8

This diff is large: its 72 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mlx4.h+5−3

This diff is large: its 30 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h+4−2

This diff is large: its 31 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/pd.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/port.c+23−0

This diff is large: its 37 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/profile.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/qp.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/resource_tracker.c+15−45

This diff is large: its 187 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/srq.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/micrel/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/micrel/ks8842.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/micrel/ks8851.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/micrel/ks8851_mll.c+6−8

This diff is large: its 52 lines aren’t shown here.

drivers/net/ethernet/octeon/octeon_mgmt.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c+14−3

This diff is large: its 31 lines aren’t shown here.

drivers/net/ethernet/renesas/sh_eth.c+4−2

This diff is large: its 27 lines aren’t shown here.

drivers/net/ethernet/renesas/sh_eth.h+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/common.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/enh_desc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/norm_desc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac.h+3−2

This diff is large: its 16 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c+6−1

This diff is large: its 44 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c+107−98

This diff is large: its 330 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c+5−7

This diff is large: its 29 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c+10−13

This diff is large: its 41 lines aren’t shown here.

drivers/net/ethernet/ti/cpmac.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/ti/davinci_emac.c+2−1

This diff is large: its 11 lines aren’t shown here.

drivers/net/ethernet/ti/davinci_mdio.c+1−1

This diff is large: its 11 lines aren’t shown here.

drivers/net/ethernet/toshiba/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/via/via-velocity.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/xscale/ixp4xx_eth.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/net/hyperv/netvsc_drv.c+12−11

This diff is large: its 91 lines aren’t shown here.

drivers/net/hyperv/rndis_filter.c+32−0

This diff is large: its 46 lines aren’t shown here.

drivers/net/macvlan.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/phy/mdio_bus.c+2−3

This diff is large: its 15 lines aren’t shown here.

drivers/net/team/team.c+90−46

This diff is large: its 308 lines aren’t shown here.

drivers/net/tokenring/Kconfig+4−1

This diff is large: its 19 lines aren’t shown here.

drivers/net/usb/ipheth.c+5−0

This diff is large: its 19 lines aren’t shown here.

drivers/net/veth.c+3−1

This diff is large: its 11 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/ar9003_mac.c+3−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/hw.c+5−2

This diff is large: its 19 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/init.c+5−4

This diff is large: its 23 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/mac.c+3−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/rc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/recv.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/net/wireless/b43/Kconfig+6−0

This diff is large: its 13 lines aren’t shown here.

drivers/net/wireless/b43/main.c+6−1

This diff is large: its 30 lines aren’t shown here.

drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c+4−36

This diff is large: its 60 lines aren’t shown here.

drivers/net/wireless/brcm80211/brcmsmac/main.c+9−1

This diff is large: its 23 lines aren’t shown here.

drivers/net/wireless/ipw2x00/ipw2200.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-agn-tx.c+10−4

This diff is large: its 43 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-commands.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-scan.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c+2−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-trans-pcie.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/wireless/mwifiex/init.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/net/wireless/mwifiex/main.c+8−4

This diff is large: its 26 lines aren’t shown here.

drivers/net/wireless/mwifiex/sta_ioctl.c+7−1

This diff is large: its 36 lines aren’t shown here.

drivers/net/wireless/mwl8k.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/wireless/rt2x00/rt2800lib.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/net/wireless/rt2x00/rt2800pci.c+8−20

This diff is large: its 42 lines aren’t shown here.

drivers/net/wireless/rtlwifi/pci.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/wireless/zd1211rw/zd_mac.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/net/xen-netfront.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/pci/iov.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/pci/pci.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/pci/probe.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/pci/remove.c+22−6

This diff is large: its 56 lines aren’t shown here.

drivers/pci/xen-pcifront.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/pcmcia/ds.c+1−3

This diff is large: its 12 lines aren’t shown here.

drivers/pcmcia/sa1111_generic.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/pinctrl/core.c+32−20

This diff is large: its 113 lines aren’t shown here.

drivers/pinctrl/core.h+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/pinctrl/pinconf.c+4−2

This diff is large: its 21 lines aren’t shown here.

drivers/pinctrl/pinconf.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/pinctrl/pinmux.c+43−38

This diff is large: its 215 lines aren’t shown here.

drivers/pinctrl/pinmux.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/platform/x86/ibm_rtl.c+2−13

This diff is large: its 29 lines aren’t shown here.

drivers/platform/x86/intel_ips.c+2−13

This diff is large: its 29 lines aren’t shown here.

drivers/power/bq27x00_battery.c+5−10

This diff is large: its 40 lines aren’t shown here.

drivers/power/charger-manager.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/power/lp8727_charger.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/regulator/core.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/regulator/max8649.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/regulator/mc13xxx-regulator-core.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/regulator/of_regulator.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/rtc/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/rtc/rtc-at91sam9.c+10−3

This diff is large: its 41 lines aren’t shown here.

drivers/rtc/rtc-sa1100.c+113−182

This diff is large: its 462 lines aren’t shown here.

drivers/s390/block/dasd.c+6−0

This diff is large: its 13 lines aren’t shown here.

drivers/s390/block/dasd_alias.c+1−63

This diff is large: its 102 lines aren’t shown here.

drivers/s390/block/dasd_eckd.c+37−26

This diff is large: its 120 lines aren’t shown here.

drivers/s390/block/dasd_int.h+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/s390/char/con3215.c+15−7

This diff is large: its 64 lines aren’t shown here.

drivers/scsi/Kconfig+0−5

This diff is large: its 17 lines aren’t shown here.

drivers/scsi/bfa/bfa_defs_svc.h+1−6

This diff is large: its 14 lines aren’t shown here.

drivers/scsi/bfa/bfa_fc.h+0−155

This diff is large: its 162 lines aren’t shown here.

drivers/scsi/bfa/bfa_fcpim.c+5−411

This diff is large: its 556 lines aren’t shown here.

drivers/scsi/bfa/bfa_fcpim.h+0−7

This diff is large: its 35 lines aren’t shown here.

drivers/scsi/bfa/bfa_svc.h+0−5

This diff is large: its 12 lines aren’t shown here.

drivers/scsi/bfa/bfad.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/scsi/bfa/bfad_attr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/bfa/bfad_bsg.c+24−3

This diff is large: its 43 lines aren’t shown here.

drivers/scsi/bfa/bfad_drv.h+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/scsi/bfa/bfad_im.c+56−0

This diff is large: its 81 lines aren’t shown here.

drivers/scsi/bfa/bfad_im.h+27−0

This diff is large: its 39 lines aren’t shown here.

drivers/scsi/cxgbi/libcxgbi.c+3−2

This diff is large: its 12 lines aren’t shown here.

drivers/scsi/device_handler/scsi_dh_alua.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/scsi/device_handler/scsi_dh_rdac.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/fcoe/fcoe.c+25−21

This diff is large: its 159 lines aren’t shown here.

drivers/scsi/fcoe/fcoe.h+1−3

This diff is large: its 11 lines aren’t shown here.

drivers/scsi/hpsa.c+2−0

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/isci/firmware/Makefile+0−19

This diff is large: its 20 lines aren’t shown here.

drivers/scsi/isci/firmware/README+0−36

This diff is large: its 37 lines aren’t shown here.

drivers/scsi/isci/firmware/create_fw.c+0−99

This diff is large: its 100 lines aren’t shown here.

drivers/scsi/isci/firmware/create_fw.h+0−77

This diff is large: its 78 lines aren’t shown here.

drivers/scsi/isci/host.c+263−77

This diff is large: its 502 lines aren’t shown here.

drivers/scsi/isci/host.h+26−1

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/isci/init.c+21−4

This diff is large: its 67 lines aren’t shown here.

drivers/scsi/isci/isci.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/scsi/isci/phy.c+111−61

This diff is large: its 272 lines aren’t shown here.

drivers/scsi/isci/port.c+58−46

This diff is large: its 242 lines aren’t shown here.

drivers/scsi/isci/port.h+10−0

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/isci/port_config.c+22−13

This diff is large: its 63 lines aren’t shown here.

drivers/scsi/isci/probe_roms.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/isci/probe_roms.h+86−3

This diff is large: its 110 lines aren’t shown here.

drivers/scsi/isci/remote_device.c+7−3

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/isci/task.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/isci/task.h+3−4

This diff is large: its 30 lines aren’t shown here.

drivers/scsi/libfc/fc_disc.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/scsi/libfc/fc_elsct.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/scsi/libfc/fc_exch.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/libfc/fc_fcp.c+1−3

This diff is large: its 18 lines aren’t shown here.

drivers/scsi/libfc/fc_lport.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/scsi/libfc/fc_rport.c+5−5

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/mac_esp.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/mac_scsi.c+0−6

This diff is large: its 20 lines aren’t shown here.

drivers/scsi/megaraid.c+8−5

This diff is large: its 28 lines aren’t shown here.

drivers/scsi/megaraid/megaraid_sas.h+3−5

This diff is large: its 29 lines aren’t shown here.

drivers/scsi/megaraid/megaraid_sas_base.c+3−142

This diff is large: its 243 lines aren’t shown here.

drivers/scsi/megaraid/megaraid_sas_fp.c+3−1

This diff is large: its 11 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_def.h+3−0

This diff is large: its 17 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_init.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_mbx.c+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_nx.c+7−21

This diff is large: its 49 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_nx.h+19−3

This diff is large: its 32 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_os.c+326−185

This diff is large: its 680 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_version.h+1−1

This diff is large: its 6 lines aren’t shown here.

drivers/scsi/scsi_lib.c+1−6

This diff is large: its 17 lines aren’t shown here.

drivers/scsi/scsi_transport_fc.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/sg.c+11−14

This diff is large: its 46 lines aren’t shown here.

drivers/scsi/sym53c8xx_2/sym_glue.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/spi/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/spi/spi-dw-mid.c+4−4

This diff is large: its 34 lines aren’t shown here.

drivers/spi/spi-ep93xx.c+6−3

This diff is large: its 51 lines aren’t shown here.

drivers/spi/spi-pl022.c+4−4

This diff is large: its 32 lines aren’t shown here.

drivers/spi/spi-topcliff-pch.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/ssb/driver_pcicore.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/staging/Kconfig+0−4

This diff is large: its 18 lines aren’t shown here.

drivers/staging/Makefile+0−2

This diff is large: its 16 lines aren’t shown here.

drivers/staging/android/Kconfig+1−4

This diff is large: its 19 lines aren’t shown here.

drivers/staging/android/Makefile+0−1

This diff is large: its 6 lines aren’t shown here.

drivers/staging/android/android_pmem.h+0−93

This diff is large: its 94 lines aren’t shown here.

drivers/staging/android/binder.c+11−2

This diff is large: its 66 lines aren’t shown here.

drivers/staging/android/lowmemorykiller.c+4−1

This diff is large: its 26 lines aren’t shown here.

drivers/staging/android/pmem.c+0−1345

This diff is large: its 1346 lines aren’t shown here.

drivers/staging/asus_oled/asus_oled.c+9−4

This diff is large: its 36 lines aren’t shown here.

drivers/staging/gma500/Kconfig+0−33

This diff is large: its 34 lines aren’t shown here.

drivers/staging/gma500/Makefile+0−52

This diff is large: its 53 lines aren’t shown here.

drivers/staging/gma500/TODO+0−15

This diff is large: its 16 lines aren’t shown here.

drivers/staging/gma500/accel_2d.c+0−414

This diff is large: its 415 lines aren’t shown here.

drivers/staging/gma500/backlight.c+0−49

This diff is large: its 50 lines aren’t shown here.

drivers/staging/gma500/cdv_device.c+0−350

This diff is large: its 351 lines aren’t shown here.

drivers/staging/gma500/cdv_device.h+0−36

This diff is large: its 37 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_crt.c+0−326

This diff is large: its 327 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_display.c+0−1508

This diff is large: its 1509 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_hdmi.c+0−376

This diff is large: its 377 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_lvds.c+0−721

This diff is large: its 722 lines aren’t shown here.

drivers/staging/gma500/displays/hdmi.h+0−33

This diff is large: its 34 lines aren’t shown here.

drivers/staging/gma500/displays/pyr_cmd.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/pyr_vid.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/tmd_cmd.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/tmd_vid.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/tpo_cmd.h+0−35

This diff is large: its 36 lines aren’t shown here.

drivers/staging/gma500/displays/tpo_vid.h+0−33

This diff is large: its 34 lines aren’t shown here.

drivers/staging/gma500/framebuffer.c+0−856

This diff is large: its 857 lines aren’t shown here.

drivers/staging/gma500/framebuffer.h+0−48

This diff is large: its 49 lines aren’t shown here.

drivers/staging/gma500/gem.c+0−292

This diff is large: its 293 lines aren’t shown here.

drivers/staging/gma500/gem_glue.c+0−89

This diff is large: its 90 lines aren’t shown here.

drivers/staging/gma500/gem_glue.h+0−2

This diff is large: its 3 lines aren’t shown here.

drivers/staging/gma500/gtt.c+0−553

This diff is large: its 554 lines aren’t shown here.

drivers/staging/gma500/gtt.h+0−64

This diff is large: its 65 lines aren’t shown here.

drivers/staging/gma500/intel_bios.c+0−303

This diff is large: its 304 lines aren’t shown here.

drivers/staging/gma500/intel_bios.h+0−430

This diff is large: its 431 lines aren’t shown here.

drivers/staging/gma500/intel_i2c.c+0−170

This diff is large: its 171 lines aren’t shown here.

drivers/staging/gma500/intel_opregion.c+0−81

This diff is large: its 82 lines aren’t shown here.

drivers/staging/gma500/mdfld_device.c+0−714

This diff is large: its 715 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi.c+0−761

This diff is large: its 762 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi.h+0−173

This diff is large: its 174 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi_dpu.c+0−778

This diff is large: its 779 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi_dpu.h+0−154

This diff is large: its 155 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dpi.c+0−805

This diff is large: its 806 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dpi.h+0−78

This diff is large: its 79 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_output.c+0−1014

This diff is large: its 1015 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_output.h+0−138

This diff is large: its 139 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_pkg_sender.c+0−1484

This diff is large: its 1485 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_pkg_sender.h+0−184

This diff is large: its 185 lines aren’t shown here.

drivers/staging/gma500/mdfld_intel_display.c+0−1404

This diff is large: its 1405 lines aren’t shown here.

drivers/staging/gma500/mdfld_msic.h+0−31

This diff is large: its 32 lines aren’t shown here.

drivers/staging/gma500/mdfld_output.c+0−171

This diff is large: its 172 lines aren’t shown here.

drivers/staging/gma500/mdfld_output.h+0−41

This diff is large: its 42 lines aren’t shown here.

drivers/staging/gma500/mdfld_pyr_cmd.c+0−558

This diff is large: its 559 lines aren’t shown here.

drivers/staging/gma500/mdfld_tmd_vid.c+0−206

This diff is large: its 207 lines aren’t shown here.

drivers/staging/gma500/mdfld_tpo_cmd.c+0−509

This diff is large: its 510 lines aren’t shown here.

drivers/staging/gma500/mdfld_tpo_vid.c+0−140

This diff is large: its 141 lines aren’t shown here.

drivers/staging/gma500/medfield.h+0−268

This diff is large: its 269 lines aren’t shown here.

drivers/staging/gma500/mid_bios.c+0−270

This diff is large: its 271 lines aren’t shown here.

drivers/staging/gma500/mid_bios.h+0−21

This diff is large: its 22 lines aren’t shown here.

drivers/staging/gma500/mmu.c+0−858

This diff is large: its 859 lines aren’t shown here.

drivers/staging/gma500/mrst.h+0−252

This diff is large: its 253 lines aren’t shown here.

drivers/staging/gma500/mrst_crtc.c+0−604

This diff is large: its 605 lines aren’t shown here.

drivers/staging/gma500/mrst_device.c+0−634

This diff is large: its 635 lines aren’t shown here.

drivers/staging/gma500/mrst_hdmi.c+0−852

This diff is large: its 853 lines aren’t shown here.

drivers/staging/gma500/mrst_hdmi_i2c.c+0−328

This diff is large: its 329 lines aren’t shown here.

drivers/staging/gma500/mrst_lvds.c+0−407

This diff is large: its 408 lines aren’t shown here.

drivers/staging/gma500/power.c+0−318

This diff is large: its 319 lines aren’t shown here.

drivers/staging/gma500/power.h+0−67

This diff is large: its 68 lines aren’t shown here.

drivers/staging/gma500/psb_device.c+0−321

This diff is large: its 322 lines aren’t shown here.

drivers/staging/gma500/psb_drm.h+0−219

This diff is large: its 220 lines aren’t shown here.

drivers/staging/gma500/psb_drv.c+0−1230

This diff is large: its 1231 lines aren’t shown here.

drivers/staging/gma500/psb_drv.h+0−952

This diff is large: its 953 lines aren’t shown here.

drivers/staging/gma500/psb_intel_display.c+0−1429

This diff is large: its 1430 lines aren’t shown here.

drivers/staging/gma500/psb_intel_display.h+0−28

This diff is large: its 29 lines aren’t shown here.

drivers/staging/gma500/psb_intel_drv.h+0−230

This diff is large: its 231 lines aren’t shown here.

drivers/staging/gma500/psb_intel_lvds.c+0−854

This diff is large: its 855 lines aren’t shown here.

drivers/staging/gma500/psb_intel_modes.c+0−77

This diff is large: its 78 lines aren’t shown here.

drivers/staging/gma500/psb_intel_reg.h+0−1235

This diff is large: its 1236 lines aren’t shown here.

drivers/staging/gma500/psb_intel_sdvo.c+0−1293

This diff is large: its 1294 lines aren’t shown here.

drivers/staging/gma500/psb_intel_sdvo_regs.h+0−338

This diff is large: its 339 lines aren’t shown here.

drivers/staging/gma500/psb_irq.c+0−627

This diff is large: its 628 lines aren’t shown here.

drivers/staging/gma500/psb_irq.h+0−45

This diff is large: its 46 lines aren’t shown here.

drivers/staging/gma500/psb_lid.c+0−88

This diff is large: its 89 lines aren’t shown here.

drivers/staging/gma500/psb_reg.h+0−582

This diff is large: its 583 lines aren’t shown here.

drivers/staging/media/go7007/go7007-usb.c+1−0

This diff is large: its 5 lines aren’t shown here.

drivers/staging/omapdrm/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/staging/omapdrm/omap_crtc.c+45−146

This diff is large: its 292 lines aren’t shown here.

drivers/staging/omapdrm/omap_drv.c+48−33

This diff is large: its 144 lines aren’t shown here.

drivers/staging/omapdrm/omap_drv.h+46−6

This diff is large: its 86 lines aren’t shown here.

drivers/staging/omapdrm/omap_fb.c+167−57

This diff is large: its 313 lines aren’t shown here.

drivers/staging/omapdrm/omap_fbdev.c+37−22

This diff is large: its 116 lines aren’t shown here.

drivers/staging/omapdrm/omap_gem.c+19−4

This diff is large: its 65 lines aren’t shown here.

drivers/staging/omapdrm/omap_plane.c+344−0

This diff is large: its 345 lines aren’t shown here.

drivers/staging/omapdrm/omap_priv.h+10−2

This diff is large: its 25 lines aren’t shown here.

drivers/staging/pohmelfs/Kconfig+0−20

This diff is large: its 21 lines aren’t shown here.

drivers/staging/pohmelfs/Makefile+0−3

This diff is large: its 4 lines aren’t shown here.

drivers/staging/pohmelfs/config.c+0−611

This diff is large: its 612 lines aren’t shown here.

drivers/staging/pohmelfs/crypto.c+0−878

This diff is large: its 879 lines aren’t shown here.

drivers/staging/pohmelfs/dir.c+0−1102

This diff is large: its 1103 lines aren’t shown here.

drivers/staging/pohmelfs/inode.c+0−2055

This diff is large: its 2056 lines aren’t shown here.

drivers/staging/pohmelfs/lock.c+0−182

This diff is large: its 183 lines aren’t shown here.

drivers/staging/pohmelfs/mcache.c+0−171

This diff is large: its 172 lines aren’t shown here.

drivers/staging/pohmelfs/net.c+0−1209

This diff is large: its 1210 lines aren’t shown here.

drivers/staging/pohmelfs/netfs.h+0−919

This diff is large: its 920 lines aren’t shown here.

drivers/staging/pohmelfs/path_entry.c+0−120

This diff is large: its 121 lines aren’t shown here.

drivers/staging/pohmelfs/trans.c+0−706

This diff is large: its 707 lines aren’t shown here.

drivers/staging/rtl8712/drv_types.h+7−0

This diff is large: its 28 lines aren’t shown here.

drivers/staging/rtl8712/hal_init.c+43−19

This diff is large: its 109 lines aren’t shown here.

drivers/staging/rtl8712/os_intfs.c+11−3

This diff is large: its 65 lines aren’t shown here.

drivers/staging/rtl8712/rtl8712_hal.h+1−0

This diff is large: its 7 lines aren’t shown here.

drivers/staging/rtl8712/rtl871x_sta_mgt.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/staging/rtl8712/usb_intf.c+7−3

This diff is large: its 40 lines aren’t shown here.

drivers/staging/tidspbridge/core/tiomap3430.c+0−2

This diff is large: its 9 lines aren’t shown here.

drivers/staging/tidspbridge/rmgr/drv_interface.c+35−23

This diff is large: its 85 lines aren’t shown here.

drivers/staging/usbip/stub_main.c+2−2

This diff is large: its 19 lines aren’t shown here.

drivers/staging/zcache/zcache-main.c+12−13

This diff is large: its 86 lines aren’t shown here.

drivers/target/iscsi/iscsi_target.c+43−15

This diff is large: its 137 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_auth.c+20−16

This diff is large: its 130 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_configfs.c+4−8

This diff is large: its 35 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_core.h+4−2

This diff is large: its 27 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_device.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_erl0.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_erl1.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_erl2.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_login.c+47−15

This diff is large: its 171 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_nego.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_nodeattrib.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_stat.c+8−9

This diff is large: its 80 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_tmr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_tpg.c+2−4

This diff is large: its 21 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_util.c+14−5

This diff is large: its 47 lines aren’t shown here.

drivers/target/loopback/tcm_loop.c+11−22

This diff is large: its 92 lines aren’t shown here.

drivers/target/loopback/tcm_loop.h+1−10

This diff is large: its 18 lines aren’t shown here.

drivers/target/target_core_alua.c+7−8

This diff is large: its 53 lines aren’t shown here.

drivers/target/target_core_cdb.c+50−40

This diff is large: its 250 lines aren’t shown here.

drivers/target/target_core_cdb.h+0−14

This diff is large: its 15 lines aren’t shown here.

drivers/target/target_core_configfs.c+25−17

This diff is large: its 144 lines aren’t shown here.

drivers/target/target_core_device.c+18−25

This diff is large: its 118 lines aren’t shown here.

drivers/target/target_core_fabric_configfs.c+4−8

This diff is large: its 33 lines aren’t shown here.

drivers/target/target_core_fabric_lib.c+5−8

This diff is large: its 39 lines aren’t shown here.

drivers/target/target_core_file.c+7−8

This diff is large: its 57 lines aren’t shown here.

drivers/target/target_core_hba.c+3−4

This diff is large: its 15 lines aren’t shown here.

drivers/target/target_core_hba.h+0−7

This diff is large: its 8 lines aren’t shown here.

drivers/target/target_core_iblock.c+12−6

This diff is large: its 60 lines aren’t shown here.

drivers/target/target_core_internal.h+123−0

This diff is large: its 124 lines aren’t shown here.

drivers/target/target_core_pr.c+25−42

This diff is large: its 234 lines aren’t shown here.

drivers/target/target_core_pr.h+0−2

This diff is large: its 9 lines aren’t shown here.

drivers/target/target_core_pscsi.c+11−13

This diff is large: its 103 lines aren’t shown here.

drivers/target/target_core_rd.c+2−4

This diff is large: its 20 lines aren’t shown here.

drivers/target/target_core_stat.c+4−5

This diff is large: its 26 lines aren’t shown here.

drivers/target/target_core_stat.h+0−8

This diff is large: its 9 lines aren’t shown here.

drivers/target/target_core_tmr.c+22−14

This diff is large: its 80 lines aren’t shown here.

drivers/target/target_core_tpg.c+4−8

This diff is large: its 27 lines aren’t shown here.

drivers/target/target_core_transport.c+270−175

This diff is large: its 907 lines aren’t shown here.

drivers/target/target_core_ua.c+2−4

This diff is large: its 16 lines aren’t shown here.

drivers/target/tcm_fc/tfc_cmd.c+14−48

This diff is large: its 111 lines aren’t shown here.

drivers/target/tcm_fc/tfc_conf.c+1−5

This diff is large: its 14 lines aren’t shown here.

drivers/target/tcm_fc/tfc_io.c+1−4

This diff is large: its 12 lines aren’t shown here.

drivers/target/tcm_fc/tfc_sess.c+1−4

This diff is large: its 12 lines aren’t shown here.

drivers/thermal/thermal_sys.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/tty/serial/8250/8250.crenamed from drivers/tty/serial/8250.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/tty/serial/8250/8250.hrenamed from drivers/tty/serial/8250.h+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_accent.crenamed from drivers/tty/serial/8250_accent.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_acorn.crenamed from drivers/tty/serial/8250_acorn.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_boca.crenamed from drivers/tty/serial/8250_boca.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_dw.crenamed from drivers/tty/serial/8250_dw.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_early.crenamed from drivers/tty/serial/8250_early.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_exar_st16c554.crenamed from drivers/tty/serial/8250_exar_st16c554.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_fourport.crenamed from drivers/tty/serial/8250_fourport.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_fsl.crenamed from drivers/tty/serial/8250_fsl.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_gsc.crenamed from drivers/tty/serial/8250_gsc.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_hp300.crenamed from drivers/tty/serial/8250_hp300.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_hub6.crenamed from drivers/tty/serial/8250_hub6.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_mca.crenamed from drivers/tty/serial/8250_mca.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_pci.crenamed from drivers/tty/serial/8250_pci.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_pnp.crenamed from drivers/tty/serial/8250_pnp.c+0−0

File renamed without changes.

drivers/tty/serial/8250/Kconfig+280−0

This diff is large: its 281 lines aren’t shown here.

drivers/tty/serial/8250/Makefile+20−0

This diff is large: its 21 lines aren’t shown here.

drivers/tty/serial/8250/serial_cs.crenamed from drivers/tty/serial/serial_cs.c+0−0

File renamed without changes.

drivers/tty/serial/Kconfig+1−282

This diff is large: its 297 lines aren’t shown here.

drivers/tty/serial/Makefile+3−17

This diff is large: its 34 lines aren’t shown here.

drivers/tty/serial/amba-pl011.c+32−6

This diff is large: its 120 lines aren’t shown here.

drivers/tty/serial/jsm/jsm_driver.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/tty/serial/max3107-aava.c+0−344

This diff is large: its 345 lines aren’t shown here.

drivers/tty/serial/omap-serial.c+27−7

This diff is large: its 109 lines aren’t shown here.

drivers/tty/serial/pch_uart.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/tty/serial/samsung.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/tty/serial/serial_core.c+3−3

This diff is large: its 15 lines aren’t shown here.

drivers/tty/serial/sh-sci.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/tty/tty_port.c+7−5

This diff is large: its 27 lines aren’t shown here.

drivers/tty/vt/vt_ioctl.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/usb/class/cdc-wdm.c+38−21

This diff is large: its 188 lines aren’t shown here.

drivers/usb/core/hcd-pci.c+4−1

This diff is large: its 12 lines aren’t shown here.

drivers/usb/core/hcd.c+4−2

This diff is large: its 13 lines aren’t shown here.

drivers/usb/core/hub.c+17−13

This diff is large: its 47 lines aren’t shown here.

drivers/usb/dwc3/ep0.c+4−11

This diff is large: its 33 lines aren’t shown here.

drivers/usb/dwc3/gadget.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/gadget/composite.c+3−4

This diff is large: its 17 lines aren’t shown here.

drivers/usb/gadget/epautoconf.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/gadget/f_loopback.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/gadget/f_mass_storage.c+5−5

This diff is large: its 21 lines aren’t shown here.

drivers/usb/gadget/fsl_udc_core.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/usb/gadget/langwell_udc.c+10−97

This diff is large: its 300 lines aren’t shown here.

drivers/usb/gadget/langwell_udc.h+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/usb/gadget/storage_common.c+3−3

This diff is large: its 20 lines aren’t shown here.

drivers/usb/host/Kconfig+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/usb/host/ehci-fsl.c+10−3

This diff is large: its 39 lines aren’t shown here.

drivers/usb/host/ehci-fsl.h+1−0

This diff is large: its 7 lines aren’t shown here.

drivers/usb/host/ehci-pci.c+6−0

This diff is large: its 20 lines aren’t shown here.

drivers/usb/host/ehci-xilinx-of.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/host/ohci-at91.c+22−2

This diff is large: its 57 lines aren’t shown here.

drivers/usb/host/ohci-dbg.c+10−2

This diff is large: its 33 lines aren’t shown here.

drivers/usb/host/ohci-pci.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/usb/host/pci-quirks.c+17−0

This diff is large: its 30 lines aren’t shown here.

drivers/usb/host/xhci-hub.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/host/xhci-mem.c+24−8

This diff is large: its 59 lines aren’t shown here.

drivers/usb/host/xhci-ring.c+4−2

This diff is large: its 27 lines aren’t shown here.

drivers/usb/host/xhci.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/usb/misc/emi26.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/usb/misc/emi62.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/usb/misc/usbsevseg.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/musb/davinci.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/usb/musb/musb_core.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/usb/musb/musb_io.h+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/usb/musb/omap2430.c+2−2

This diff is large: its 25 lines aren’t shown here.

drivers/usb/musb/ux500_dma.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/usb/otg/Kconfig+2−16

This diff is large: its 39 lines aren’t shown here.

drivers/usb/otg/Makefile+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/usb/otg/langwell_otg.c+0−2347

This diff is large: its 2348 lines aren’t shown here.

drivers/usb/otg/mv_otg.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/usb/renesas_usbhs/fifo.c+2−2

This diff is large: its 13 lines aren’t shown here.

drivers/usb/renesas_usbhs/mod_gadget.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/serial/cp210x.c+77−30

This diff is large: its 180 lines aren’t shown here.

drivers/usb/serial/ftdi_sio.c+11−4

This diff is large: its 62 lines aren’t shown here.

drivers/usb/serial/ftdi_sio_ids.h+26−0

This diff is large: its 44 lines aren’t shown here.

drivers/usb/serial/io_ti.c+2−8

This diff is large: its 32 lines aren’t shown here.

drivers/usb/serial/kobil_sct.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/serial/option.c+30−15

This diff is large: its 133 lines aren’t shown here.

drivers/usb/serial/qcaux.c+6−1

This diff is large: its 21 lines aren’t shown here.

drivers/usb/serial/qcserial.c+14−2

This diff is large: its 38 lines aren’t shown here.

drivers/usb/serial/ti_usb_3410_5052.c+4−2

This diff is large: its 34 lines aren’t shown here.

drivers/usb/serial/ti_usb_3410_5052.h+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/usb/storage/realtek_cr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/storage/usb.c+31−59

This diff is large: its 138 lines aren’t shown here.

drivers/usb/storage/usb.h+4−3

This diff is large: its 28 lines aren’t shown here.

drivers/usb/usb-skeleton.c+1−17

This diff is large: its 68 lines aren’t shown here.

drivers/usb/wusbcore/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/vhost/net.c+5−3

This diff is large: its 19 lines aren’t shown here.

drivers/video/atmel_lcdfb.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/backlight/adp8860_bl.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/backlight/adp8870_bl.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/backlight/l4f00242t03.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/video/fsl-diu-fb.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/video/intelfb/intelfbdrv.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/video/macfb.c+28−32

This diff is large: its 175 lines aren’t shown here.

drivers/video/mx3fb.c+24−41

This diff is large: its 142 lines aren’t shown here.

drivers/video/omap2/dss/dispc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/dpi.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/video/omap2/dss/dsi.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/dss.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/hdmi.c+4−1

This diff is large: its 26 lines aren’t shown here.

drivers/video/omap2/dss/rfbi.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/ti_hdmi.h+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c+64−4

This diff is large: its 102 lines aren’t shown here.

drivers/video/omap2/dss/venc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/virtio/virtio_ring.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/watchdog/dw_wdt.c+1−5

This diff is large: its 13 lines aren’t shown here.

drivers/watchdog/iTCO_wdt.c+35−0

This diff is large: its 63 lines aren’t shown here.

drivers/watchdog/imx2_wdt.c+1−10

This diff is large: its 25 lines aren’t shown here.

drivers/watchdog/nuc900_wdt.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/watchdog/omap_wdt.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/watchdog/pnx4008_wdt.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/watchdog/stmp3xxx_wdt.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/watchdog/via_wdt.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/watchdog/wafer5823wdt.c+2−2

This diff is large: its 15 lines aren’t shown here.

drivers/watchdog/wm8350_wdt.c+2−2

This diff is large: its 13 lines aren’t shown here.

drivers/xen/biomerge.c+2−0

This diff is large: its 12 lines aren’t shown here.

drivers/xen/cpu_hotplug.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/xen/grant-table.c+5−2

This diff is large: its 15 lines aren’t shown here.

drivers/xen/xen-balloon.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/xen/xen-pciback/pci_stub.c+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/xen/xen-pciback/xenbus.c+3−2

This diff is large: its 26 lines aren’t shown here.

drivers/xen/xenbus/xenbus_dev_frontend.c+4−0

This diff is large: its 11 lines aren’t shown here.

firmware/Makefile+0−1

This diff is large: its 8 lines aren’t shown here.

firmware/isci/isci_firmware.bin.ihex+0−16

This diff is large: its 17 lines aren’t shown here.

fs/autofs4/expire.c+2−0

This diff is large: its 16 lines aren’t shown here.

fs/bio.c+3−7

This diff is large: its 17 lines aren’t shown here.

fs/btrfs/Kconfig+19−0

This diff is large: its 23 lines aren’t shown here.

fs/btrfs/Makefile+2−1

This diff is large: its 9 lines aren’t shown here.

fs/btrfs/backref.c+878−253

This diff is large: its 1239 lines aren’t shown here.

fs/btrfs/backref.h+5−0

This diff is large: its 19 lines aren’t shown here.

fs/btrfs/btrfs_inode.h+3−0

This diff is large: its 10 lines aren’t shown here.

fs/btrfs/check-integrity.c+3069−0

This diff is large: its 3070 lines aren’t shown here.

fs/btrfs/check-integrity.h+36−0

This diff is large: its 37 lines aren’t shown here.

fs/btrfs/ctree.c+21−21

This diff is large: its 156 lines aren’t shown here.

fs/btrfs/ctree.h+217−22

This diff is large: its 375 lines aren’t shown here.

fs/btrfs/delayed-inode.c+33−12

This diff is large: its 106 lines aren’t shown here.

fs/btrfs/delayed-ref.c+106−47

This diff is large: its 317 lines aren’t shown here.

fs/btrfs/delayed-ref.h+91−13

This diff is large: its 149 lines aren’t shown here.

fs/btrfs/disk-io.c+84−42

This diff is large: its 308 lines aren’t shown here.

fs/btrfs/disk-io.h+3−3

This diff is large: its 13 lines aren’t shown here.

fs/btrfs/export.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/btrfs/extent-tree.c+373−141

This diff is large: its 1139 lines aren’t shown here.

fs/btrfs/extent_io.c+6−2

This diff is large: its 43 lines aren’t shown here.

fs/btrfs/extent_io.h+2−0

This diff is large: its 16 lines aren’t shown here.

fs/btrfs/file.c+5−6

This diff is large: its 53 lines aren’t shown here.

fs/btrfs/free-space-cache.c+259−163

This diff is large: its 703 lines aren’t shown here.

fs/btrfs/inode-map.c+4−0

This diff is large: its 18 lines aren’t shown here.

fs/btrfs/inode.c+41−35

This diff is large: its 241 lines aren’t shown here.

fs/btrfs/ioctl.c+237−33

This diff is large: its 473 lines aren’t shown here.

fs/btrfs/ioctl.h+54−0

This diff is large: its 68 lines aren’t shown here.

fs/btrfs/locking.c+51−2

This diff is large: its 106 lines aren’t shown here.

fs/btrfs/relocation.c+10−10

This diff is large: its 71 lines aren’t shown here.

fs/btrfs/scrub.c+7−5

This diff is large: its 59 lines aren’t shown here.

fs/btrfs/super.c+109−81

This diff is large: its 410 lines aren’t shown here.

fs/btrfs/transaction.c+10−10

This diff is large: its 63 lines aren’t shown here.

fs/btrfs/tree-log.c+5−3

This diff is large: its 29 lines aren’t shown here.

fs/btrfs/ulist.c+220−0

This diff is large: its 221 lines aren’t shown here.

fs/btrfs/ulist.h+68−0

This diff is large: its 69 lines aren’t shown here.

fs/btrfs/volumes.c+828−165

This diff is large: its 1316 lines aren’t shown here.

fs/btrfs/volumes.h+51−3

This diff is large: its 68 lines aren’t shown here.

fs/btrfs/xattr.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/ceph/caps.c+2−2

This diff is large: its 13 lines aren’t shown here.

fs/ceph/dir.c+2−2

This diff is large: its 13 lines aren’t shown here.

fs/ceph/mds_client.c+7−3

This diff is large: its 42 lines aren’t shown here.

fs/ceph/mds_client.h+5−2

This diff is large: its 16 lines aren’t shown here.

fs/ceph/xattr.c+3−1

This diff is large: its 12 lines aren’t shown here.

fs/cifs/Kconfig+3−4

This diff is large: its 21 lines aren’t shown here.

fs/cifs/cifs_debug.c+10−1

This diff is large: its 25 lines aren’t shown here.

fs/cifs/cifs_spnego.c+7−3

This diff is large: its 26 lines aren’t shown here.

fs/cifs/cifs_unicode.c+21−20

This diff is large: its 150 lines aren’t shown here.

fs/cifs/cifs_unicode.h+10−10

This diff is large: its 27 lines aren’t shown here.

fs/cifs/cifsacl.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/cifs/cifsencrypt.c+13−8

This diff is large: its 62 lines aren’t shown here.

fs/cifs/cifsglob.h+2−0

This diff is large: its 9 lines aren’t shown here.

fs/cifs/cifssmb.c+84−78

This diff is large: its 421 lines aren’t shown here.

fs/cifs/connect.c+254−64

This diff is large: its 465 lines aren’t shown here.

fs/cifs/dir.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/cifs/readdir.c+5−4

This diff is large: its 16 lines aren’t shown here.

fs/cifs/sess.c+24−21

This diff is large: its 125 lines aren’t shown here.

fs/cifs/smbencrypt.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/compat.c+25−31

This diff is large: its 67 lines aren’t shown here.

fs/dcache.c+4−4

This diff is large: its 34 lines aren’t shown here.

fs/debugfs/file.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/ecryptfs/crypto.c+70−52

This diff is large: its 200 lines aren’t shown here.

fs/ecryptfs/ecryptfs_kernel.h+11−0

This diff is large: its 31 lines aren’t shown here.

fs/ecryptfs/inode.c+38−12

This diff is large: its 85 lines aren’t shown here.

fs/ecryptfs/keystore.c+6−8

This diff is large: its 51 lines aren’t shown here.

fs/ecryptfs/miscdev.c+85−55

This diff is large: its 213 lines aren’t shown here.

fs/ecryptfs/mmap.c+6−6

This diff is large: its 40 lines aren’t shown here.

fs/ecryptfs/read_write.c+18−82

This diff is large: its 141 lines aren’t shown here.

fs/ecryptfs/super.c+13−1

This diff is large: its 31 lines aren’t shown here.

fs/exec.c+17−16

This diff is large: its 61 lines aren’t shown here.

fs/ext2/ioctl.c+16−6

This diff is large: its 48 lines aren’t shown here.

fs/fs-writeback.c+8−8

This diff is large: its 30 lines aren’t shown here.

fs/inode.c+4−7

This diff is large: its 44 lines aren’t shown here.

fs/ioprio.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/jbd/checkpoint.c+22−5

This diff is large: its 53 lines aren’t shown here.

fs/jbd/recovery.c+4−0

This diff is large: its 18 lines aren’t shown here.

fs/jffs2/erase.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/logfs/dev_mtd.c+0−6

This diff is large: its 20 lines aren’t shown here.

fs/logfs/dir.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/logfs/file.c+2−0

This diff is large: its 10 lines aren’t shown here.

fs/logfs/gc.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/logfs/inode.c+3−1

This diff is large: its 19 lines aren’t shown here.

fs/logfs/journal.c+0−1

This diff is large: its 8 lines aren’t shown here.

fs/logfs/logfs.h+4−1

This diff is large: its 26 lines aren’t shown here.

fs/logfs/readwrite.c+34−17

This diff is large: its 139 lines aren’t shown here.

fs/logfs/segment.c+39−12

This diff is large: its 107 lines aren’t shown here.

fs/logfs/super.c+2−1

This diff is large: its 17 lines aren’t shown here.

fs/namei.c+16−16

This diff is large: its 47 lines aren’t shown here.

fs/nfs/nfs4proc.c+55−75

This diff is large: its 196 lines aren’t shown here.

fs/nfs/nfs4state.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/nfs/nfs4xdr.c+4−1

This diff is large: its 19 lines aren’t shown here.

fs/nilfs2/ioctl.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/ocfs2/namei.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/proc/base.c+65−169

This diff is large: its 313 lines aren’t shown here.

fs/proc/stat.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/proc/task_mmu.c+3−0

This diff is large: its 10 lines aren’t shown here.

fs/qnx4/inode.c+25−37

This diff is large: its 88 lines aren’t shown here.

fs/quota/dquot.c+5−3

This diff is large: its 29 lines aren’t shown here.

fs/quota/quota.c+21−3

This diff is large: its 49 lines aren’t shown here.

fs/select.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/super.c+24−0

This diff is large: its 38 lines aren’t shown here.

fs/sysfs/file.c+6−0

This diff is large: its 13 lines aren’t shown here.

fs/sysfs/inode.c+4−1

This diff is large: its 13 lines aren’t shown here.

fs/xfs/kmem.h+0−6

This diff is large: its 11 lines aren’t shown here.

fs/xfs/xfs_aops.c+16−13

This diff is large: its 57 lines aren’t shown here.

fs/xfs/xfs_attr.c+0−4

This diff is large: its 11 lines aren’t shown here.

fs/xfs/xfs_attr_leaf.c+0−9

This diff is large: its 30 lines aren’t shown here.

fs/xfs/xfs_bmap.c+53−63

This diff is large: its 312 lines aren’t shown here.

fs/xfs/xfs_dfrag.c+21−22

This diff is large: its 70 lines aren’t shown here.

fs/xfs/xfs_dquot.c+38−89

This diff is large: its 195 lines aren’t shown here.

fs/xfs/xfs_file.c+51−133

This diff is large: its 357 lines aren’t shown here.

fs/xfs/xfs_fs_subr.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/xfs/xfs_iget.c+18−6

This diff is large: its 56 lines aren’t shown here.

fs/xfs/xfs_inode.c+45−148

This diff is large: its 333 lines aren’t shown here.

fs/xfs/xfs_inode.h+67−47

This diff is large: its 196 lines aren’t shown here.

fs/xfs/xfs_inode_item.c+3−5

This diff is large: its 36 lines aren’t shown here.

fs/xfs/xfs_iomap.c+23−23

This diff is large: its 90 lines aren’t shown here.

fs/xfs/xfs_iops.c+29−17

This diff is large: its 109 lines aren’t shown here.

fs/xfs/xfs_log_recover.c+4−4

This diff is large: its 36 lines aren’t shown here.

fs/xfs/xfs_qm.c+111−180

This diff is large: its 352 lines aren’t shown here.

fs/xfs/xfs_qm.h+0−14

This diff is large: its 40 lines aren’t shown here.

fs/xfs/xfs_qm_stats.c+2−2

This diff is large: its 12 lines aren’t shown here.

fs/xfs/xfs_qm_syscalls.c+9−3

This diff is large: its 42 lines aren’t shown here.

fs/xfs/xfs_super.c+0−8

This diff is large: its 15 lines aren’t shown here.

fs/xfs/xfs_sync.c+4−5

This diff is large: its 19 lines aren’t shown here.

fs/xfs/xfs_trace.h+10−24

This diff is large: its 141 lines aren’t shown here.

fs/xfs/xfs_trans.c+2−2

This diff is large: its 11 lines aren’t shown here.

fs/xfs/xfs_trans_dquot.c+6−4

This diff is large: its 31 lines aren’t shown here.

fs/xfs/xfs_vnodeops.c+30−17

This diff is large: its 126 lines aren’t shown here.

include/acpi/acnames.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/acpi/acpi_numa.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/acpi/acpiosxf.h+4−7

This diff is large: its 28 lines aren’t shown here.

include/acpi/acpixf.h+29−3

This diff is large: its 86 lines aren’t shown here.

include/acpi/acrestyp.h+203−4

This diff is large: its 275 lines aren’t shown here.

include/acpi/actbl.h+17−6

This diff is large: its 73 lines aren’t shown here.

include/acpi/actbl1.h+53−4

This diff is large: its 96 lines aren’t shown here.

include/acpi/actbl3.h+552−0

This diff is large: its 553 lines aren’t shown here.

include/acpi/actypes.h+11−1

This diff is large: its 27 lines aren’t shown here.

include/acpi/atomicio.h+0−10

This diff is large: its 11 lines aren’t shown here.

include/acpi/processor.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/asm-generic/io-64-nonatomic-hi-lo.h+28−0

This diff is large: its 29 lines aren’t shown here.

include/asm-generic/io-64-nonatomic-lo-hi.h+28−0

This diff is large: its 29 lines aren’t shown here.

include/asm-generic/pci_iomap.h+10−0

This diff is large: its 17 lines aren’t shown here.

include/drm/drmP.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/keys/user-type.h+2−1

This diff is large: its 17 lines aren’t shown here.

include/linux/acpi.h+14−6

This diff is large: its 37 lines aren’t shown here.

include/linux/acpi_io.h+3−0

This diff is large: its 8 lines aren’t shown here.

include/linux/amba/pl08x.h+2−2

This diff is large: its 18 lines aren’t shown here.

include/linux/audit.h+96−20

This diff is large: its 221 lines aren’t shown here.

include/linux/bcma/bcma.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/binfmts.h+2−1

This diff is large: its 17 lines aren’t shown here.

include/linux/bitops.h+20−0

This diff is large: its 27 lines aren’t shown here.

include/linux/blkdev.h+0−3

This diff is large: its 10 lines aren’t shown here.

include/linux/cdrom.h+2−1

This diff is large: its 10 lines aren’t shown here.

include/linux/cpuidle.h+7−0

This diff is large: its 15 lines aren’t shown here.

include/linux/device.h+10−5

This diff is large: its 36 lines aren’t shown here.

include/linux/digsig.h+4−4

This diff is large: its 35 lines aren’t shown here.

include/linux/dmaengine.h+92−7

This diff is large: its 147 lines aren’t shown here.

include/linux/dw_dmac.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/elevator.h+1−8

This diff is large: its 30 lines aren’t shown here.

include/linux/freezer.h+2−0

This diff is large: its 16 lines aren’t shown here.

include/linux/fs.h+2−1

This diff is large: its 24 lines aren’t shown here.

include/linux/gpio_keys.h+2−0

This diff is large: its 9 lines aren’t shown here.

include/linux/hyperv.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/if_team.h+10−0

This diff is large: its 38 lines aren’t shown here.

include/linux/iocontext.h+2−3

This diff is large: its 19 lines aren’t shown here.

include/linux/kexec.h+2−0

This diff is large: its 12 lines aren’t shown here.

include/linux/key.h+4−1

This diff is large: its 19 lines aren’t shown here.

include/linux/kref.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/lp8727.h+0−0

File mode changed from 100755 to 100644.

include/linux/mfd/mcp.h+6−6

This diff is large: its 49 lines aren’t shown here.

include/linux/mfd/twl6040.h+2−0

This diff is large: its 11 lines aren’t shown here.

include/linux/mfd/ucb1x00.h+1−4

This diff is large: its 19 lines aren’t shown here.

include/linux/migrate.h+1−13

This diff is large: its 24 lines aren’t shown here.

include/linux/migrate_mode.h+16−0

This diff is large: its 17 lines aren’t shown here.

include/linux/miscdevice.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/mlx4/device.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/mmc/card.h+4−0

This diff is large: its 26 lines aren’t shown here.

include/linux/mmc/dw_mmc.h+4−2

This diff is large: its 27 lines aren’t shown here.

include/linux/mmc/host.h+20−0

This diff is large: its 32 lines aren’t shown here.

include/linux/mod_devicetable.h+0−11

This diff is large: its 18 lines aren’t shown here.

include/linux/mpi.h+0−2

This diff is large: its 9 lines aren’t shown here.

include/linux/mtd/gpmi-nand.h+68−0

This diff is large: its 69 lines aren’t shown here.

include/linux/mtd/mtd.h+2−4

This diff is large: its 20 lines aren’t shown here.

include/linux/netfilter/nf_conntrack_common.h+0−4

This diff is large: its 11 lines aren’t shown here.

include/linux/netfilter/xt_CT.h+1−2

This diff is large: its 10 lines aren’t shown here.

include/linux/nfs_xdr.h+1−1

This diff is large: its 16 lines aren’t shown here.

include/linux/nvme.h+434−0

This diff is large: its 435 lines aren’t shown here.

include/linux/perf_event.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/pm_qos.h+13−1

This diff is large: its 21 lines aren’t shown here.

include/linux/proportions.h+4−0

This diff is large: its 12 lines aren’t shown here.

include/linux/ptrace.h+10−0

This diff is large: its 24 lines aren’t shown here.

include/linux/quota.h+5−1

This diff is large: its 13 lines aren’t shown here.

include/linux/res_counter.h+10−1

This diff is large: its 31 lines aren’t shown here.

include/linux/sched.h+8−2

This diff is large: its 25 lines aren’t shown here.

include/linux/sh_dma.h+4−1

This diff is large: its 26 lines aren’t shown here.

include/linux/shmem_fs.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/sirfsoc_dma.h+6−0

This diff is large: its 7 lines aren’t shown here.

include/linux/snmp.h+0−1

This diff is large: its 8 lines aren’t shown here.

include/linux/suspend.h+17−2

This diff is large: its 32 lines aren’t shown here.

include/linux/swap.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/syscalls.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/sysdev.h+0−164

This diff is large: its 165 lines aren’t shown here.

include/linux/thermal.h+2−2

This diff is large: its 12 lines aren’t shown here.

include/linux/tty_driver.h+0−1

This diff is large: its 8 lines aren’t shown here.

include/linux/usb.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/usb/ch11.h+2−8

This diff is large: its 24 lines aren’t shown here.

include/linux/usb/ch9.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/usb/langwell_otg.h+0−139

This diff is large: its 140 lines aren’t shown here.

include/media/tuner.h+2−1

This diff is large: its 17 lines aren’t shown here.

include/net/bluetooth/hci.h+1−1

This diff is large: its 8 lines aren’t shown here.

include/net/cfg80211.h+6−0

This diff is large: its 20 lines aren’t shown here.

include/net/flow.h+11−1

This diff is large: its 26 lines aren’t shown here.

include/net/netns/generic.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/net/netprio_cgroup.h+40−9

This diff is large: its 68 lines aren’t shown here.

include/net/route.h+4−0

This diff is large: its 18 lines aren’t shown here.

include/net/sch_generic.h+8−1

This diff is large: its 18 lines aren’t shown here.

include/net/sock.h+7−7

This diff is large: its 52 lines aren’t shown here.

include/net/tcp.h+12−4

This diff is large: its 40 lines aren’t shown here.

include/scsi/libfc.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/sound/core.h+2−0

This diff is large: its 15 lines aren’t shown here.

include/target/target_core_backend.h+65−0

This diff is large: its 66 lines aren’t shown here.

include/target/target_core_base.h+133−37

This diff is large: its 445 lines aren’t shown here.

include/target/target_core_device.h+0−63

This diff is large: its 64 lines aren’t shown here.

include/target/target_core_fabric.hrenamed from include/target/target_core_fabric_ops.h+88−6

This diff is large: its 109 lines aren’t shown here.

include/target/target_core_fabric_lib.h+0−28

This diff is large: its 29 lines aren’t shown here.

include/target/target_core_tmr.h+0−35

This diff is large: its 36 lines aren’t shown here.

include/target/target_core_tpg.h+0−35

This diff is large: its 36 lines aren’t shown here.

include/target/target_core_transport.h+0−287

This diff is large: its 288 lines aren’t shown here.

include/trace/events/btrfs.h+203−0

This diff is large: its 231 lines aren’t shown here.

include/trace/events/writeback.h+5−2

This diff is large: its 21 lines aren’t shown here.

include/video/omapdss.h+5−0

This diff is large: its 12 lines aren’t shown here.

init/Kconfig+15−1

This diff is large: its 30 lines aren’t shown here.

ipc/mqueue.c+1−2

This diff is large: its 17 lines aren’t shown here.

ipc/shm.c+22−15

This diff is large: its 55 lines aren’t shown here.

kernel/audit.c+2−2

This diff is large: its 18 lines aren’t shown here.

kernel/audit.h+1−5

This diff is large: its 14 lines aren’t shown here.

kernel/auditfilter.c+12−5

This diff is large: its 57 lines aren’t shown here.

kernel/auditsc.c+458−280

This diff is large: its 1159 lines aren’t shown here.

kernel/capability.c+1−1

This diff is large: its 9 lines aren’t shown here.

kernel/events/callchain.c+0−2

This diff is large: its 9 lines aren’t shown here.

kernel/events/core.c+81−44

This diff is large: its 245 lines aren’t shown here.

kernel/exit.c+17−2

This diff is large: its 33 lines aren’t shown here.

kernel/fork.c+21−3

This diff is large: its 45 lines aren’t shown here.

kernel/kprobes.c+6−2

This diff is large: its 30 lines aren’t shown here.

kernel/params.c+2−1

This diff is large: its 10 lines aren’t shown here.

kernel/pid.c+2−2

This diff is large: its 15 lines aren’t shown here.

kernel/power/power.h+22−2

This diff is large: its 31 lines aren’t shown here.

kernel/power/process.c+24−2

This diff is large: its 44 lines aren’t shown here.

kernel/power/snapshot.c+2−1

This diff is large: its 10 lines aren’t shown here.

kernel/power/user.c+13−2

This diff is large: its 34 lines aren’t shown here.

kernel/rcutorture.c+4−4

This diff is large: its 29 lines aren’t shown here.

kernel/relay.c+8−2

This diff is large: its 26 lines aren’t shown here.

kernel/res_counter.c+25−0

This diff is large: its 32 lines aren’t shown here.

kernel/sched/core.c+7−12

This diff is large: its 71 lines aren’t shown here.

kernel/sched/cpupri.c+1−2

This diff is large: its 17 lines aren’t shown here.

kernel/sched/fair.c+29−5

This diff is large: its 69 lines aren’t shown here.

kernel/sched/rt.c+5−0

This diff is large: its 12 lines aren’t shown here.

kernel/seccomp.c+2−0

This diff is large: its 16 lines aren’t shown here.

kernel/tracepoint.c+4−3

This diff is large: its 15 lines aren’t shown here.

kernel/watchdog.c+1−1

This diff is large: its 9 lines aren’t shown here.

lib/Kconfig+16−10

This diff is large: its 56 lines aren’t shown here.

lib/Makefile+3−1

This diff is large: its 11 lines aren’t shown here.

lib/bug.c+1−1

This diff is large: its 9 lines aren’t shown here.

lib/clz_tab.c+18−0

This diff is large: its 19 lines aren’t shown here.

lib/digsig.c+23−29

This diff is large: its 132 lines aren’t shown here.

lib/kstrtox.c+13−5

This diff is large: its 39 lines aren’t shown here.

lib/mpi/longlong.h+33−11

This diff is large: its 52 lines aren’t shown here.

lib/mpi/mpi-bit.c+0−19

This diff is large: its 26 lines aren’t shown here.

lib/mpi/mpi-div.c+5−0

This diff is large: its 19 lines aren’t shown here.

lib/mpi/mpi-pow.c+1−1

This diff is large: its 9 lines aren’t shown here.

lib/mpi/mpicoder.c+4−89

This diff is large: its 129 lines aren’t shown here.

lib/mpi/mpih-div.c+4−0

This diff is large: its 11 lines aren’t shown here.

lib/mpi/mpiutil.c+4−1

This diff is large: its 19 lines aren’t shown here.

lib/pci_iomap.c+1−1

This diff is large: its 9 lines aren’t shown here.

mm/backing-dev.c+18−5

This diff is large: its 59 lines aren’t shown here.

mm/compaction.c+23−1

This diff is large: its 36 lines aren’t shown here.

mm/filemap.c+4−4

This diff is large: its 37 lines aren’t shown here.

mm/filemap_xip.c+6−1

This diff is large: its 14 lines aren’t shown here.

mm/huge_memory.c+2−2

This diff is large: its 18 lines aren’t shown here.

mm/hugetlb.c+6−3

This diff is large: its 43 lines aren’t shown here.

mm/kmemleak.c+2−1

This diff is large: its 17 lines aren’t shown here.

mm/memblock.c+5−2

This diff is large: its 20 lines aren’t shown here.

mm/memcontrol.c+6−5

This diff is large: its 52 lines aren’t shown here.

mm/memory.c+28−9

This diff is large: its 51 lines aren’t shown here.

mm/migrate.c+1−1

This diff is large: its 16 lines aren’t shown here.

mm/page_alloc.c+20−1

This diff is large: its 35 lines aren’t shown here.

mm/process_vm_access.c+9−14

This diff is large: its 33 lines aren’t shown here.

mm/shmem.c+41−12

This diff is large: its 102 lines aren’t shown here.

mm/swap.c+1−1

This diff is large: its 9 lines aren’t shown here.

mm/vmscan.c+42−82

This diff is large: its 159 lines aren’t shown here.

net/bluetooth/hci_core.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/bridge/br_fdb.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/caif/caif_dev.c+11−27

This diff is large: its 117 lines aren’t shown here.

net/caif/caif_socket.c+6−4

This diff is large: its 26 lines aren’t shown here.

net/caif/caif_usb.c+1−2

This diff is large: its 17 lines aren’t shown here.

net/caif/cfcnfg.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/caif/cfmuxl.c+3−9

This diff is large: its 26 lines aren’t shown here.

net/ceph/ceph_common.c+0−2

This diff is large: its 9 lines aren’t shown here.

net/ceph/mon_client.c+12−1

This diff is large: its 30 lines aren’t shown here.

net/core/dev.c+28−14

This diff is large: its 76 lines aren’t shown here.

net/core/ethtool.c+3−0

This diff is large: its 17 lines aren’t shown here.

net/core/flow_dissector.c+1−0

This diff is large: its 6 lines aren’t shown here.

net/core/net-sysfs.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/core/net_namespace.c+16−15

This diff is large: its 66 lines aren’t shown here.

net/core/netpoll.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/core/netprio_cgroup.c+5−10

This diff is large: its 45 lines aren’t shown here.

net/core/pktgen.c+2−2

This diff is large: its 11 lines aren’t shown here.

net/core/rtnetlink.c+3−0

This diff is large: its 10 lines aren’t shown here.

net/core/secure_seq.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/core/sock.c+4−7

This diff is large: its 34 lines aren’t shown here.

net/ipv4/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

net/ipv4/arp.c+2−1

This diff is large: its 10 lines aren’t shown here.

net/ipv4/inet_connection_sock.c+5−2

This diff is large: its 17 lines aren’t shown here.

net/ipv4/inetpeer.c+2−1

This diff is large: its 17 lines aren’t shown here.

net/ipv4/ip_gre.c+4−0

This diff is large: its 11 lines aren’t shown here.

net/ipv4/ip_options.c+1−1

This diff is large: its 10 lines aren’t shown here.

net/ipv4/ipconfig.c+4−4

This diff is large: its 22 lines aren’t shown here.

net/ipv4/ping.c+14−13

This diff is large: its 87 lines aren’t shown here.

net/ipv4/proc.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/ipv4/sysctl_net_ipv4.c+1−6

This diff is large: its 21 lines aren’t shown here.

net/ipv4/tcp.c+30−8

This diff is large: its 78 lines aren’t shown here.

net/ipv4/tcp_bic.c+7−4

This diff is large: its 39 lines aren’t shown here.

net/ipv4/tcp_cubic.c+6−4

This diff is large: its 38 lines aren’t shown here.

net/ipv4/tcp_input.c+44−42

This diff is large: its 224 lines aren’t shown here.

net/ipv4/tcp_ipv4.c+6−1

This diff is large: its 21 lines aren’t shown here.

net/ipv4/tcp_output.c+2−4

This diff is large: its 14 lines aren’t shown here.

net/ipv4/tcp_timer.c+1−4

This diff is large: its 12 lines aren’t shown here.

net/ipv4/udp_diag.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/ipv6/addrconf.c+40−21

This diff is large: its 117 lines aren’t shown here.

net/ipv6/datagram.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/ipv6/proc.c+2−2

This diff is large: its 11 lines aren’t shown here.

net/ipv6/route.c+1−0

This diff is large: its 8 lines aren’t shown here.

net/ipv6/tcp_ipv6.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/l2tp/l2tp_ip.c+0−5

This diff is large: its 12 lines aren’t shown here.

net/llc/af_llc.c+5−0

This diff is large: its 28 lines aren’t shown here.

net/mac80211/cfg.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/mac80211/debugfs_key.c+4−3

This diff is large: its 22 lines aren’t shown here.

net/mac80211/ibss.c+1−0

This diff is large: its 8 lines aren’t shown here.

net/mac80211/iface.c+1−0

This diff is large: its 8 lines aren’t shown here.

net/mac80211/main.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/mac80211/mesh_hwmp.c+4−4

This diff is large: its 30 lines aren’t shown here.

net/mac80211/mesh_plink.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/mac80211/mlme.c+27−11

This diff is large: its 66 lines aren’t shown here.

net/mac80211/rx.c+2−1

This diff is large: its 17 lines aren’t shown here.

net/mac80211/sta_info.c+4−2

This diff is large: its 14 lines aren’t shown here.

net/mac80211/tx.c+1−9

This diff is large: its 24 lines aren’t shown here.

net/mac80211/wpa.c+19−0

This diff is large: its 23 lines aren’t shown here.

net/mac80211/wpa.h+2−0

This diff is large: its 8 lines aren’t shown here.

net/netfilter/ipset/ip_set_core.c+27−10

This diff is large: its 99 lines aren’t shown here.

net/netfilter/nf_conntrack_helper.c+0−12

This diff is large: its 19 lines aren’t shown here.

net/netfilter/nf_conntrack_netlink.c+0−4

This diff is large: its 11 lines aren’t shown here.

net/netfilter/xt_CT.c+3−5

This diff is large: its 22 lines aren’t shown here.

net/netfilter/xt_hashlimit.c+4−1

This diff is large: its 26 lines aren’t shown here.

net/openvswitch/datapath.c+3−5

This diff is large: its 27 lines aren’t shown here.

net/openvswitch/datapath.h+0−1

This diff is large: its 8 lines aren’t shown here.

net/openvswitch/flow.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/openvswitch/vport-internal_dev.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/openvswitch/vport.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/rds/af_rds.c+8−12

This diff is large: its 87 lines aren’t shown here.

net/rxrpc/ar-key.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/sched/sch_choke.c+1−2

This diff is large: its 10 lines aren’t shown here.

net/sched/sch_netem.c+2−3

This diff is large: its 19 lines aren’t shown here.

net/sched/sch_sfb.c+1−2

This diff is large: its 10 lines aren’t shown here.

net/sched/sch_sfq.c+2−3

This diff is large: its 12 lines aren’t shown here.

net/sunrpc/auth_generic.c+16−1

This diff is large: its 40 lines aren’t shown here.

net/unix/af_unix.c+4−15

This diff is large: its 57 lines aren’t shown here.

scripts/checkpatch.pl+6−0

This diff is large: its 13 lines aren’t shown here.

scripts/kernel-doc+2−1

This diff is large: its 17 lines aren’t shown here.

scripts/mod/file2alias.c+1−11

This diff is large: its 26 lines aren’t shown here.

scripts/mod/modpost.c+9−0

This diff is large: its 23 lines aren’t shown here.

security/integrity/Kconfig+2−2

This diff is large: its 14 lines aren’t shown here.

security/integrity/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

security/integrity/ima/ima_audit.c+5−3

This diff is large: its 15 lines aren’t shown here.

security/integrity/ima/ima_policy.c+2−1

This diff is large: its 17 lines aren’t shown here.

security/integrity/integrity.h+2−2

This diff is large: its 18 lines aren’t shown here.

security/keys/encrypted-keys/encrypted.c+3−3

This diff is large: its 27 lines aren’t shown here.

security/keys/encrypted-keys/masterkey_trusted.c+3−1

This diff is large: its 18 lines aren’t shown here.

security/keys/gc.c+3−1

This diff is large: its 11 lines aren’t shown here.

security/keys/internal.h+1−0

This diff is large: its 8 lines aren’t shown here.

security/keys/key.c+1−0

This diff is large: its 8 lines aren’t shown here.

security/keys/keyring.c+15−7

This diff is large: its 71 lines aren’t shown here.

security/keys/trusted.c+2−2

This diff is large: its 18 lines aren’t shown here.

security/keys/user_defined.c+40−3

This diff is large: its 82 lines aren’t shown here.

security/lsm_audit.c+15−12

This diff is large: its 57 lines aren’t shown here.

security/tomoyo/util.c+3−3

This diff is large: its 17 lines aren’t shown here.

sound/atmel/abdac.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/atmel/ac97c.c+5−5

This diff is large: its 45 lines aren’t shown here.

sound/core/Kconfig+3−10

This diff is large: its 27 lines aren’t shown here.

sound/core/compress_offload.c+8−5

This diff is large: its 28 lines aren’t shown here.

sound/isa/sb/emu8000_patch.c+0−1

This diff is large: its 8 lines aren’t shown here.

sound/pci/au88x0/au88x0.c+7−6

This diff is large: its 28 lines aren’t shown here.

sound/pci/au88x0/au88x0.h+1−0

This diff is large: its 8 lines aren’t shown here.

sound/pci/au88x0/au88x0_pcm.c+1−0

This diff is large: its 8 lines aren’t shown here.

sound/pci/hda/alc880_quirks.c+12−5

This diff is large: its 48 lines aren’t shown here.

sound/pci/hda/alc882_quirks.c+10−5

This diff is large: its 57 lines aren’t shown here.

sound/pci/hda/hda_codec.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/pci/hda/hda_intel.c+5−2

This diff is large: its 36 lines aren’t shown here.

sound/pci/hda/hda_jack.c+15−9

This diff is large: its 72 lines aren’t shown here.

sound/pci/hda/patch_ca0132.c+19−14

This diff is large: its 90 lines aren’t shown here.

sound/pci/hda/patch_cirrus.c+4−2

This diff is large: its 13 lines aren’t shown here.

sound/pci/hda/patch_conexant.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/pci/hda/patch_realtek.c+114−36

This diff is large: its 360 lines aren’t shown here.

sound/pci/hda/patch_sigmatel.c+17−8

This diff is large: its 73 lines aren’t shown here.

sound/pci/hda/patch_via.c+132−155

This diff is large: its 599 lines aren’t shown here.

sound/pci/intel8x0.c+6−0

This diff is large: its 13 lines aren’t shown here.

sound/pci/oxygen/oxygen_mixer.c+14−11

This diff is large: its 39 lines aren’t shown here.

sound/pci/oxygen/xonar_wm87x6.c+1−0

This diff is large: its 8 lines aren’t shown here.

sound/pci/ymfpci/ymfpci.c+13−8

This diff is large: its 31 lines aren’t shown here.

sound/pci/ymfpci/ymfpci_main.c+14−7

This diff is large: its 42 lines aren’t shown here.

sound/soc/codecs/ak4642.c+16−15

This diff is large: its 57 lines aren’t shown here.

sound/soc/codecs/cs42l73.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/codecs/sgtl5000.c+14−5

This diff is large: its 42 lines aren’t shown here.

sound/soc/codecs/tlv320aic32x4.c+51−59

This diff is large: its 154 lines aren’t shown here.

sound/soc/codecs/wm2000.c+13−18

This diff is large: its 81 lines aren’t shown here.

sound/soc/codecs/wm5100.c+14−1

This diff is large: its 64 lines aren’t shown here.

sound/soc/codecs/wm8958-dsp2.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/codecs/wm8962.c+5−5

This diff is large: its 35 lines aren’t shown here.

sound/soc/codecs/wm8993.c+6−0

This diff is large: its 13 lines aren’t shown here.

sound/soc/codecs/wm8994.c+10−6

This diff is large: its 44 lines aren’t shown here.

sound/soc/codecs/wm8996.c+7−2

This diff is large: its 44 lines aren’t shown here.

sound/soc/codecs/wm8996.h+4−0

This diff is large: its 11 lines aren’t shown here.

sound/soc/codecs/wm_hubs.c+12−6

This diff is large: its 63 lines aren’t shown here.

sound/soc/ep93xx/ep93xx-pcm.c+2−2

This diff is large: its 12 lines aren’t shown here.

sound/soc/imx/imx-pcm-dma-mx2.c+10−8

This diff is large: its 43 lines aren’t shown here.

sound/soc/mxs/mxs-pcm.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/mxs/mxs-saif.c+5−0

This diff is large: its 26 lines aren’t shown here.

sound/soc/samsung/dma.c+2−2

This diff is large: its 18 lines aren’t shown here.

sound/soc/samsung/neo1973_wm8753.c+1−64

This diff is large: its 118 lines aren’t shown here.

sound/soc/sh/fsi.c+1−5

This diff is large: its 14 lines aren’t shown here.

sound/soc/sh/siu_pcm.c+2−2

This diff is large: its 18 lines aren’t shown here.

sound/soc/soc-core.c+15−0

This diff is large: its 29 lines aren’t shown here.

sound/soc/soc-dapm.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/txx9/txx9aclc.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/usb/caiaq/audio.c+4−1

This diff is large: its 20 lines aren’t shown here.

sound/usb/card.h+1−0

This diff is large: its 8 lines aren’t shown here.

sound/usb/format.c+1−3

This diff is large: its 18 lines aren’t shown here.

sound/usb/quirks-table.h+8−0

This diff is large: its 15 lines aren’t shown here.

sound/usb/quirks.c+5−1

This diff is large: its 16 lines aren’t shown here.

tools/perf/Makefile+2−5

This diff is large: its 21 lines aren’t shown here.

tools/perf/bench/mem-memcpy-x86-64-asm.S+6−0

This diff is large: its 9 lines aren’t shown here.

tools/perf/builtin-probe.c+0−2

This diff is large: its 16 lines aren’t shown here.

tools/perf/builtin-top.c+10−3

This diff is large: its 35 lines aren’t shown here.

tools/perf/util/event.c+1−1

This diff is large: its 9 lines aren’t shown here.

tools/perf/util/evsel.c+1−0

This diff is large: its 8 lines aren’t shown here.

tools/perf/util/header.c+1−1

This diff is large: its 9 lines aren’t shown here.

tools/perf/util/probe-event.c+0−2

This diff is large: its 16 lines aren’t shown here.

tools/perf/util/symbol.c+0−1

This diff is large: its 5 lines aren’t shown here.

tools/perf/util/trace-event-parse.c+1−2

This diff is large: its 16 lines aren’t shown here.

tools/perf/util/ui/browsers/hists.c+0−2

This diff is large: its 7 lines aren’t shown here.

tools/perf/util/ui/helpline.c+0−1

This diff is large: its 5 lines aren’t shown here.

tools/perf/util/util.h+0−1

This diff is large: its 8 lines aren’t shown here.

tools/power/x86/turbostat/turbostat.c+2−0

This diff is large: its 9 lines aren’t shown here.

virt/kvm/kvm_main.c+1−1

This diff is large: its 9 lines aren’t shown here.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t