tree 80ac064ea50697268f49cd4f9b771b733c9770c0
parent 91a38be875f2dc8efc53ff2634beec5f05f25d7b
parent be0647d556985ae58a42e7fc3751a293c418c41e
author Olof Johansson <olof@lixom.net> 1388351703 -0800
committer Olof Johansson <olof@lixom.net> 1388351703 -0800
mergetag object be0647d556985ae58a42e7fc3751a293c418c41e
 type commit
 tag renesas-boards-for-v3.14
 tagger Simon Horman <horms@verge.net.au> 1387762946 +0900
 
 Renesas ARM based SoC board updates for v3.14
 
 * Global
   - Kconfig: Mention Renesas ARM SoCs instead of SH-Mobile
 
 * r7s72100 SoC (RZ/A1H) based Genmai Board
   - Add Multiplatform support
   - Add Reference DT
 
 * r8a7791 (R-Car M2) based Koelsch board
   - Add pinctrl_register_mappings() for Koelsch
   - Hook up SW30-SW36 on Koelsch
   - Mark GPIO keys as wake-up sources
   - Use ->init_late()
   - Add Multiplatform support
   - Set .debounce_interval for GPIO keys
   - Add SW2 to GPIO keys
   - Add Led 6, 7 and 8 support
   - Add reference DT
   - Enable PFC/GPIO
 
 * r8a7790 (R-Car H2) based Lager board
   - Add gpio/fixed regulator for SDHI
   - Add SPI FLASH support on QSPI
   - Mark GPIO keys as wake-up sources
   - Use ->init_late()
   - Set .debounce_interval for GPIO keys
 
 * r8a7778 (R-Car M1) based Bock-W board
   - bockw: remove unused RSND_SSI_CLK_FROM_ADG
   - Set .debounce_interval for GPIO keys
   - Correct FPGA ioremap area
   - Use regulator for MMCIF
 
 * r8a7740 (R-Mobile A1) based Armadillo board
   - Correct FSI address size
 
 * sh7374 (SH-Mobile AP4) based Mackerel board
   - Use pinconf API to configure pin pull-down
   - clk_round_rate() can return a zero to indicate an error
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.14 (GNU/Linux)
 
 iQIcBAABAgAGBQJSt5cHAAoJENfPZGlqN0++xIoP/jBunLyY+xAZ+06gukAdKEw4
 hLoUH55GsvpaL5cuDT+LSXWafIol4A/wvME5sZJsKoCHRnDqQYKvyE7hDLIlvLRI
 KvcmFvdUcN6plbD/wz/SPzur/Lq3+DcX4ep8pmI7OUXupYWomibwylv/5UgY++PN
 Uymmre4CiHK7/wzWOyS79ujcGzdwk4o1ari5P2lC4fUlVM7jZ7DQswglo+jGxscw
 CXHtEfqto4NEh2+05sAGdmRHwb3xwOndPYwHaFWy+X6uce/BZXsgDipWihHI5ZKr
 FT+TemFlYwXc2In2F/E4T7aXqNDXSjEcX/x2/VHS5W2EoWbSk+Mz6zlFZduAv4oG
 c35AQjHMktlo6voZm0L4WgH0JYT4dyu6DJG3mo7adRyYKvjv/OC48wt4jhYa0LGZ
 XLcYBoaK1zqpG2M6ZIv138a9krGtkfSCy/Pt7YQ4WpA8CQyJlYqaoW9Yrpkhw13b
 OcO22myGbjMnxTwpqS9rwDPnNR2PjG9ExDHmO3x4k+zsLqyJHxzv6ikKJWl0eiUF
 JUv/mzxiaYsOBiMTYYuueNYegzhzGiW8jzp+j6E3WXTPxwCP2It8/31aBfyuaKcG
 B807//VKcHulPONe3emBK7I2KzsJ6UOUs7iHuqrdwoglQKqMC0iyy2/ZFXbu7JJU
 cMlHObCNFOGPZxKGsYXG
 =5zhn
 -----END PGP SIGNATURE-----

Merge tag 'renesas-boards-for-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/boards

From Simon Horman:
Renesas ARM based SoC board updates for v3.14

* Global
  - Kconfig: Mention Renesas ARM SoCs instead of SH-Mobile

* r7s72100 SoC (RZ/A1H) based Genmai Board
  - Add Multiplatform support
  - Add Reference DT

* r8a7791 (R-Car M2) based Koelsch board
  - Add pinctrl_register_mappings() for Koelsch
  - Hook up SW30-SW36 on Koelsch
  - Mark GPIO keys as wake-up sources
  - Use ->init_late()
  - Add Multiplatform support
  - Set .debounce_interval for GPIO keys
  - Add SW2 to GPIO keys
  - Add Led 6, 7 and 8 support
  - Add reference DT
  - Enable PFC/GPIO

* r8a7790 (R-Car H2) based Lager board
  - Add gpio/fixed regulator for SDHI
  - Add SPI FLASH support on QSPI
  - Mark GPIO keys as wake-up sources
  - Use ->init_late()
  - Set .debounce_interval for GPIO keys

* r8a7778 (R-Car M1) based Bock-W board
  - bockw: remove unused RSND_SSI_CLK_FROM_ADG
  - Set .debounce_interval for GPIO keys
  - Correct FPGA ioremap area
  - Use regulator for MMCIF

* r8a7740 (R-Mobile A1) based Armadillo board
  - Correct FSI address size

* sh7374 (SH-Mobile AP4) based Mackerel board
  - Use pinconf API to configure pin pull-down
  - clk_round_rate() can return a zero to indicate an error

* tag 'renesas-boards-for-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: (75 commits)
  ARM: shmobile: lager: add gpio/fixed regulator for SDHI
  ARM: shmobile: bockw: remove unused RSND_SSI_CLK_FROM_ADG
  ARM: shmobile: armadillo: fixup FSI address size
  ARM: Kconfig: Mention Renesas ARM SoCs instead of SH-Mobile
  ARM: shmobile: mackerel: Use pinconf API to configure pin pull-down
  ARM: shmobile: Lager:add SPI FLASH support on QSPI
  ARM: shmobile: mackerel: clk_round_rate() can return a zero to indicate an error
  ARM: shmobile: Add pinctrl_register_mappings() for Koelsch
  ARM: shmobile: Use ->init_late() on Lager
  ARM: shmobile: Hook up SW30-SW36 on Koelsch
  ARM: shmobile: koelsch: mark GPIO keys as wake-up sources
  ARM: shmobile: Use ->init_late() on Koelsch
  ARM: shmobile: lager: mark GPIO keys as wake-up sources
  ARM: shmobile: r7s72100 Genmai Multiplatform
  ARM: shmobile: r7s72100 Genmai DT reference C bits
  ARM: shmobile: r7s72100 Genmai DT reference DTS bits
  ARM: shmobile: Initial r8a7791 and Koelsch multiplatform support
  ARM: shmobile: koelsch: set .debounce_interval
  ARM: shmobile: lager: set .debounce_interval
  ARM: shmobile: bockw: add pin pull-up setting for SDHI
  ...

Signed-off-by: Olof Johansson <olof@lixom.net>
