tree 1a5e235f988b9601592981507a0975d911974b7c
parent 7a95bdb092c66b6473aa2fc848862ae557ab08f7
parent 79d2c8bede2c93f9432d7da0bc2f76a195c90fc0
author Linus Torvalds <torvalds@linux-foundation.org> 1505419269 -0700
committer Linus Torvalds <torvalds@linux-foundation.org> 1505419269 -0700
mergetag object 79d2c8bede2c93f9432d7da0bc2f76a195c90fc0
 type commit
 tag pinctrl-v4.14-2
 tagger Linus Walleij <linus.walleij@linaro.org> 1505381091 +0200
 
 A first set of pin control fixes noted early in the kernel cycle:
 
 - Fix a build include in the Uniphier driver to keep pace with
   ongoing refactorings.
 
 - Fix a slew of minor semantic and syntactic issues as well as
   stricting up Kconfig for the new Spreadtrum driver.
 
 - Fix the GPIO interrupt set-up on the Marvell 37xx Armada as
   fallout for dynamically allocating irq descriptors from the
   core. (Also tagged for stable.)
 
 - Fix AMD register suspend/resume state spool/unspooling so that
   wakeup works as it should. (Also tagged for stable.)
 -----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJZukvZAAoJEEEQszewGV1z1+IP/2uaBurH9R4vIuPOKA9tbPlF
 b+bX50i/Pj/KJZHI9pv6sYpWe0qLvaMsp3+k7QPZiQfqaKTeqFbxcxpt/WfMMw3y
 bbXoQyLCCCMMR/jREPJboHOiXZdAiDU8WLLS+qnGNEMJXgC5h/MBx9FBmBcmJPyk
 Srt4N4YZhffu82qAT1rblfsRDPIa+t4h1EEO6o/rD/wpvMvdUvPb4TnHYO2TqNJ+
 CRteAPiHhy3vIkVEhnTyMln4V0FseL2hQ7HwzCZ+MH3C8qUV7Cypdej9EA6/41+Q
 czkiTdEWwh1u6FQ8rJaTkt4299xv+z84LHjXkdMu7eN/H6M/aIz/YBBGiwxG2g3D
 mP+X3mfYN3h5Rc5F+ekKpDWbEu5yMd6XskViksq1WL2xycqVHAJf+ll0tsCObLfC
 fzb0JmOarDiwVPWZCNH3vnfLQLafiNJoFs5Jemg2FhlfSvbImLh4nBNPyJRhMld0
 7BZpUPlz2CU1uEhuYlYvpF4Hx1PfI0nuO3I8EBNyZdJPBeLIwZNNSybcKH3t261C
 KZ8gbOun4n4EXXpuvIqJlXCrBNqDu8qBPUPc1ClmAbqYNACdM5jVpgHCQPHH7YRn
 3IfKRxVVHkkXUFlltlqk19mmBxg9GXxVpORVPjZ8rLdzhYkNUPfBG7nhgyCPDCvc
 y0G0GQLffRE2XLiEP2MW
 =JBVq
 -----END PGP SIGNATURE-----

Merge tag 'pinctrl-v4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pin control fixes from Linus Walleij:
 "This slew of fixes for pin control was noticed and patched up early,
  so to get the annoyance out of the way for -rc1 it would make sense to
  send them already.

   - Fix a build include in the Uniphier driver to keep pace with
     ongoing refactorings.

   - Fix a slew of minor semantic and syntactic issues as well as
     stricting up Kconfig for the new Spreadtrum driver.

   - Fix the GPIO interrupt set-up on the Marvell 37xx Armada as fallout
     for dynamically allocating irq descriptors from the core. (Also
     tagged for stable.)

   - Fix AMD register suspend/resume state spool/unspooling so that
     wakeup works as it should. (Also tagged for stable.)"

* tag 'pinctrl-v4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl/amd: save pin registers over suspend/resume
  pinctrl: armada-37xx: Fix gpio interrupt setup
  pinctrl: sprd: fix off by one bugs
  pinctrl: sprd: check for allocation failure
  pinctrl: sprd: Restrict PINCTRL_SPRD to ARCH_SPRD or COMPILE_TEST
  pinctrl: sprd: fix build errors and dependencies
  pinctrl: sprd: make three local functions static
  pinctrl: uniphier: include <linux/build_bug.h> instead of <linux/bug.h>
