)]}'
{
  "log": [
    {
      "commit": "07ce8ec7308ab3fa55fe2861671b157f857fff58",
      "tree": "4e0b2fa2f61bbae54ecfc5be7d88e4501ca497ec",
      "parents": [
        "e9fe32bcadb8a7a40411d77f168abd45941b049b"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 18 23:01:05 2012 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 18 23:01:05 2012 -0600"
      },
      "message": "gpiolib: Remove \u0027const\u0027 from data argument of gpiochip_find()\n\nCommit 3d0f7cf0 \"gpio: Adjust of_xlate API to support multiple GPIO\nchips\" changed the api of gpiochip_find to drop const from the data\nparameter of the match hook, but didn\u0027t also drop const from data\ncausing a build warning.\n\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "ee1c1e7d6451204e71ae6d815bfa918c57450391",
      "tree": "8345d54cec0ba2fe4d4d665045fdff0bca47df88",
      "parents": [
        "adf11b62f3ef59b72f280df44f129e36091b242f"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri May 11 16:58:33 2012 -0700"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 18 22:12:50 2012 -0600"
      },
      "message": "gpiolib: quiet gpiochip_add boot message noise\n\nThe pr_info message in gpiochip_add gets displayed for every\ngpiochip registered. When first bringing up a system this\ninformation could be helpful but for normal use it\u0027s just a\nbunch of noise. Change the message to a pr_debug.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "3d0f7cf0f3633f92ddeb767eb59cab73963d4dee",
      "tree": "be23f5d9657d558d690adc84b16bdd6d91668f47",
      "parents": [
        "09d71ff19404b3957fab6de942fb8026ccfd8524"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Thu May 17 13:54:40 2012 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 18 16:48:36 2012 -0600"
      },
      "message": "gpio: Adjust of_xlate API to support multiple GPIO chips\n\nThis patch changes the of_xlate API to make it possible for multiple\ngpio_chips to refer to the same device tree node.  This is useful for\nbanked GPIO controllers that use multiple gpio_chips for a single\ndevice.  With this change the core code will try calling of_xlate on\neach gpio_chip that references the device_node and will return the\ngpio number for the first one to return \u0027true\u0027.\n\nTested-by: Roland Stigge \u003cstigge@antcom.de\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "fc3a1f04f5040255cbc086c419e4237f29f89f88",
      "tree": "3ece85d636a3ceeffb157b77ee51b4745cbdf2d9",
      "parents": [
        "dd775ae2549217d3ae09363e3edb305d0fa19928"
      ],
      "author": {
        "name": "Wolfram Sang",
        "email": "w.sang@pengutronix.de",
        "time": "Tue Dec 13 18:34:01 2011 +0100"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Thu Apr 05 21:24:06 2012 -0700"
      },
      "message": "gpio: add flags to export GPIOs when requesting\n\nIntroduce new flags to automatically export GPIOs when using the convenience\nfunctions gpio_request_one() or gpio_request_array(). This eases support for\ncustom boards where lots of GPIOs need to be exported for customer\napplications.\n\nSigned-off-by: Wolfram Sang \u003cw.sang@pengutronix.de\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "e4e449e82871c53ef3b22bd3a50fceabc0638926",
      "tree": "87e14ac729928d7e1c54e7a975b365714c50bf85",
      "parents": [
        "25553ff0756c59b617af6bdd280c94e943164184"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Fri Feb 17 10:46:00 2012 -0800"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Mar 05 08:05:08 2012 -0700"
      },
      "message": "gpiolib: Add comments explaining the _cansleep() WARN_ON()s\n\nI\u0027ve seen users getting very confused by the WARN_ON()s for can_sleep\nGPIOs in the atomic-safe paths, the discoverability of the non-atomic\nversion of the API seems to be hampered by the fact that it\u0027s defined\nin a header file not the .c file where the warnings are.\n\nAdd a couple of comments next to the warnings to help people on their\nway.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nReviwed-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "25553ff0756c59b617af6bdd280c94e943164184",
      "tree": "6ca9ec045b5d2e10523fdf46facac59aa683f4ce",
      "parents": [
        "aca5ce14eb773a75e5d935968b2e390dc5bd29c3"
      ],
      "author": {
        "name": "Laxman Dewangan",
        "email": "ldewangan@nvidia.com",
        "time": "Fri Feb 17 20:26:22 2012 +0530"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Mar 05 07:49:44 2012 -0700"
      },
      "message": "gpio: gpiolib: Support for open source/emitter gpios\n\nAdding support for the open source gpio on which client\ncan specify the open source property through GPIO flag\nGPIOF_OPEN_SOURCE at the time of gpio request.\nThe open source pins are normally pulled low and it\ncannot be driven to output with value of 0 and so\nwhen client request for setting the pin to LOW, the\ngpio will be set to input direction to make pin in tristate\nand hence PULL-DOWN on pins will make the state to LOW.\nThe open source pin can be driven to HIGH by setting output\nwith value of 1.\n\nSigned-off-by: Laxman Dewangan \u003cldewangan@nvidia.com\u003e\nReviwed-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nAcked-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "aca5ce14eb773a75e5d935968b2e390dc5bd29c3",
      "tree": "7da20e783f03b076d41163aad82dfb6878964ff9",
      "parents": [
        "3d2ddfdcf05f5f816f829f81858c54827d7be5b4"
      ],
      "author": {
        "name": "Laxman Dewangan",
        "email": "ldewangan@nvidia.com",
        "time": "Fri Feb 17 20:26:21 2012 +0530"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Mar 05 07:49:44 2012 -0700"
      },
      "message": "gpio: gpiolib: Support for open drain/collector gpios\n\nAdding support for the open drain gpio on which client\ncan specify the open drain property through GPIO flag\nGPIOF_OPEN_DRAIN at the time of gpio request.\nThe open drain pins are normally pulled high and it\ncannot be driven to output with value of 1 and so\nwhen client request for setting the pin to HIGH, the\ngpio will be set to input direction to make pin in tristate\nand hence PULL-UP on pins will make the state to HIGH.\nThe open drain pin can be driven to LOW by setting output\nwith value of 0.\n\nSigned-off-by: Laxman Dewangan \u003cldewangan@nvidia.com\u003e\nReviwed-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nAcked-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "6e2cf6514066cdd5a0844b34760029a5a4870318",
      "tree": "620b38b5117a8b5a225714647e8f7a4d6d3f196d",
      "parents": [
        "b3950d50cfc343b3e7dc5c69c96a61b182fd1e37"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri Mar 02 15:56:03 2012 -0700"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri Mar 02 15:56:03 2012 -0700"
      },
      "message": "gpio: constify the data parameter to gpiochip_find()\n\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n\n"
    },
    {
      "commit": "864533ceb6db336dead389577c102a8b792a121a",
      "tree": "a9535b1d26af60737f136f0e9c717300f303f6f2",
      "parents": [
        "ff64abefb6680dfc2aca7ecaa5e695949e7335c9"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Mon Feb 13 22:53:20 2012 +0800"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Wed Feb 15 13:06:07 2012 -0700"
      },
      "message": "Fix circular locking dependency (3.3-rc2)\n\nHi,\n\nOn Wed, Feb 8, 2012 at 8:41 PM, Felipe Balbi \u003cbalbi@ti.com\u003e wrote:\n\u003e Hi guys,\n\u003e\n\u003e I have just triggered the folllowing:\n\u003e\n\u003e [   84.860321] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e [   84.860321] [ INFO: possible circular locking dependency detected ]\n\u003e [   84.860321] 3.3.0-rc2-00026-ge4e8a39 #474 Not tainted\n\u003e [   84.860321] -------------------------------------------------------\n\u003e [   84.860321] bash/949 is trying to acquire lock:\n\u003e [   84.860321]  (sysfs_lock){+.+.+.}, at: [\u003cc0275358\u003e] gpio_value_store+0x24/0xcc\n\u003e [   84.860321]\n\u003e [   84.860321] but task is already holding lock:\n\u003e [   84.860321]  (s_active#22){++++.+}, at: [\u003cc016996c\u003e] sysfs_write_file+0xdc/0x184\n\u003e [   84.911468]\n\u003e [   84.911468] which lock already depends on the new lock.\n\u003e [   84.911468]\n\u003e [   84.920043]\n\u003e [   84.920043] the existing dependency chain (in reverse order) is:\n\u003e [   84.920043]\n\u003e [   84.927886] -\u003e #1 (s_active#22){++++.+}:\n\u003e [   84.927886]        [\u003cc008f640\u003e] check_prevs_add+0xdc/0x150\n\u003e [   84.927886]        [\u003cc008fc18\u003e] validate_chain.clone.24+0x564/0x694\n\u003e [   84.927886]        [\u003cc0090cdc\u003e] __lock_acquire+0x49c/0x980\n\u003e [   84.951660]        [\u003cc0091838\u003e] lock_acquire+0x98/0x100\n\u003e [   84.951660]        [\u003cc016a8e8\u003e] sysfs_deactivate+0xb0/0x100\n\u003e [   84.962982]        [\u003cc016b1b4\u003e] sysfs_addrm_finish+0x2c/0x6c\n\u003e [   84.962982]        [\u003cc016b8bc\u003e] sysfs_remove_dir+0x84/0x98\n\u003e [   84.962982]        [\u003cc02590d8\u003e] kobject_del+0x10/0x78\n\u003e [   84.974670]        [\u003cc02c29e8\u003e] device_del+0x140/0x170\n\u003e [   84.974670]        [\u003cc02c2a24\u003e] device_unregister+0xc/0x18\n\u003e [   84.985382]        [\u003cc0276894\u003e] gpio_unexport+0xbc/0xdc\n\u003e [   84.985382]        [\u003cc02768c8\u003e] gpio_free+0x14/0xfc\n\u003e [   85.001708]        [\u003cc0276a28\u003e] unexport_store+0x78/0x8c\n\u003e [   85.001708]        [\u003cc02c5af8\u003e] class_attr_store+0x18/0x24\n\u003e [   85.007293]        [\u003cc0169990\u003e] sysfs_write_file+0x100/0x184\n\u003e [   85.018981]        [\u003cc0109d48\u003e] vfs_write+0xb4/0x148\n\u003e [   85.018981]        [\u003cc0109fd0\u003e] sys_write+0x40/0x70\n\u003e [   85.018981]        [\u003cc0013cc0\u003e] ret_fast_syscall+0x0/0x3c\n\u003e [   85.035003]\n\u003e [   85.035003] -\u003e #0 (sysfs_lock){+.+.+.}:\n\u003e [   85.035003]        [\u003cc008f54c\u003e] check_prev_add+0x680/0x698\n\u003e [   85.035003]        [\u003cc008f640\u003e] check_prevs_add+0xdc/0x150\n\u003e [   85.052093]        [\u003cc008fc18\u003e] validate_chain.clone.24+0x564/0x694\n\u003e [   85.052093]        [\u003cc0090cdc\u003e] __lock_acquire+0x49c/0x980\n\u003e [   85.052093]        [\u003cc0091838\u003e] lock_acquire+0x98/0x100\n\u003e [   85.069885]        [\u003cc047e280\u003e] mutex_lock_nested+0x3c/0x2f4\n\u003e [   85.069885]        [\u003cc0275358\u003e] gpio_value_store+0x24/0xcc\n\u003e [   85.069885]        [\u003cc02c18dc\u003e] dev_attr_store+0x18/0x24\n\u003e [   85.087158]        [\u003cc0169990\u003e] sysfs_write_file+0x100/0x184\n\u003e [   85.087158]        [\u003cc0109d48\u003e] vfs_write+0xb4/0x148\n\u003e [   85.098297]        [\u003cc0109fd0\u003e] sys_write+0x40/0x70\n\u003e [   85.098297]        [\u003cc0013cc0\u003e] ret_fast_syscall+0x0/0x3c\n\u003e [   85.109069]\n\u003e [   85.109069] other info that might help us debug this:\n\u003e [   85.109069]\n\u003e [   85.117462]  Possible unsafe locking scenario:\n\u003e [   85.117462]\n\u003e [   85.117462]        CPU0                    CPU1\n\u003e [   85.128417]        ----                    ----\n\u003e [   85.128417]   lock(s_active#22);\n\u003e [   85.128417]                                lock(sysfs_lock);\n\u003e [   85.128417]                                lock(s_active#22);\n\u003e [   85.142486]   lock(sysfs_lock);\n\u003e [   85.151794]\n\u003e [   85.151794]  *** DEADLOCK ***\n\u003e [   85.151794]\n\u003e [   85.151794] 2 locks held by bash/949:\n\u003e [   85.158020]  #0:  (\u0026buffer-\u003emutex){+.+.+.}, at: [\u003cc01698b8\u003e] sysfs_write_file+0x28/0x184\n\u003e [   85.170349]  #1:  (s_active#22){++++.+}, at: [\u003cc016996c\u003e] sysfs_write_file+0xdc/0x184\n\u003e [   85.170349]\n\u003e [   85.178588] stack backtrace:\n\u003e [   85.178588] [\u003cc001b824\u003e] (unwind_backtrace+0x0/0xf0) from [\u003cc008de64\u003e] (print_circular_bug+0x100/0x114)\n\u003e [   85.193023] [\u003cc008de64\u003e] (print_circular_bug+0x100/0x114) from [\u003cc008f54c\u003e] (check_prev_add+0x680/0x698)\n\u003e [   85.193023] [\u003cc008f54c\u003e] (check_prev_add+0x680/0x698) from [\u003cc008f640\u003e] (check_prevs_add+0xdc/0x150)\n\u003e [   85.212524] [\u003cc008f640\u003e] (check_prevs_add+0xdc/0x150) from [\u003cc008fc18\u003e] (validate_chain.clone.24+0x564/0x694)\n\u003e [   85.212524] [\u003cc008fc18\u003e] (validate_chain.clone.24+0x564/0x694) from [\u003cc0090cdc\u003e] (__lock_acquire+0x49c/0x980)\n\u003e [   85.233306] [\u003cc0090cdc\u003e] (__lock_acquire+0x49c/0x980) from [\u003cc0091838\u003e] (lock_acquire+0x98/0x100)\n\u003e [   85.233306] [\u003cc0091838\u003e] (lock_acquire+0x98/0x100) from [\u003cc047e280\u003e] (mutex_lock_nested+0x3c/0x2f4)\n\u003e [   85.242614] [\u003cc047e280\u003e] (mutex_lock_nested+0x3c/0x2f4) from [\u003cc0275358\u003e] (gpio_value_store+0x24/0xcc)\n\u003e [   85.261840] [\u003cc0275358\u003e] (gpio_value_store+0x24/0xcc) from [\u003cc02c18dc\u003e] (dev_attr_store+0x18/0x24)\n\u003e [   85.261840] [\u003cc02c18dc\u003e] (dev_attr_store+0x18/0x24) from [\u003cc0169990\u003e] (sysfs_write_file+0x100/0x184)\n\u003e [   85.271240] [\u003cc0169990\u003e] (sysfs_write_file+0x100/0x184) from [\u003cc0109d48\u003e] (vfs_write+0xb4/0x148)\n\u003e [   85.290008] [\u003cc0109d48\u003e] (vfs_write+0xb4/0x148) from [\u003cc0109fd0\u003e] (sys_write+0x40/0x70)\n\u003e [   85.298400] [\u003cc0109fd0\u003e] (sys_write+0x40/0x70) from [\u003cc0013cc0\u003e] (ret_fast_syscall+0x0/0x3c)\n\u003e -bash: echo: write error: Operation not permitted\n\u003e\n\u003e the way to trigger is:\n\u003e\n\u003e root@legolas:~# cd /sys/class/gpio/\n\u003e root@legolas:/sys/class/gpio# echo 2 \u003e export\n\u003e root@legolas:/sys/class/gpio# echo 2 \u003e unexport\n\u003e root@legolas:/sys/class/gpio# echo 2 \u003e export\n\u003e root@legolas:/sys/class/gpio# cd gpio2/\n\u003e root@legolas:/sys/class/gpio/gpio2# echo 1 \u003e value\n\nLooks \u0027sysfs_lock\u0027 needn\u0027t to be held for unregister, so the patch below may\nfix the problem.\n\nAcked-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "1a2d397a6eb5cf40c382d9e3d4bc04aaeb025336",
      "tree": "de928bf30efd84464d173359ae29f6a48b545b31",
      "parents": [
        "fe9f68449a507e03d41bee4500456bbfa22095d3"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Dec 12 09:25:57 2011 -0700"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Dec 12 13:40:16 2011 -0700"
      },
      "message": "gpio/powerpc: Eliminate duplication of of_get_named_gpio_flags()\n\nA large chunk of qe_pin_request() is unnecessarily cut-and-paste\ndirectly from of_get_named_gpio_flags().  This patch cuts out the\nduplicate code and replaces it with a call to of_get_gpio().\n\nv2: fixed compile error due to missing gpio_to_chip()\n\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "64842aad5ec5ea3b6f6e716ce53a863f7c409da8",
      "tree": "29e89d0de902636bcad5a63d0a872c04438bb9e0",
      "parents": [
        "f4574beb9655dbe6a1513f308f0070e9e5e1ad0e"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Sun Nov 06 11:36:18 2011 -0700"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Dec 12 13:40:16 2011 -0700"
      },
      "message": "gpiolib: output basic details and consolidate gpio device drivers\n\nThis patch adds a kernel message, containing GPIO range and device\nname on successful device registration, and removes duplicate messages from the following drivers:\n\t* gpio-adp5588\n\t* gpio-bt8xx\n\t* gpio-cs5535\n\t* gpio-janz-ttl\n\t* gpio-nomadik\n\t* gpio-pcf857x\n\t* gpio-xilinx\n\t* drivers/of/gpio.c\n\nSigned-off-by: Hartmut Knaack \u003cknaack.h@gmx.de\u003e\n[grant.likely@secretlab.ca: squashed 2 patches together]\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "7c295975a85b049385dfe0d5ee0d4d543619fbdc",
      "tree": "447683c4ddaf6e4380ad8f5f5dd20d4576f7428e",
      "parents": [
        "3474cb3cc0140f9cf6ca56983f8180b4b4c5c36a"
      ],
      "author": {
        "name": "Lars-Peter Clausen",
        "email": "lars@metafoo.de",
        "time": "Wed May 25 16:20:31 2011 -0700"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 27 17:56:45 2011 -0600"
      },
      "message": "gpio: make gpio_{request,free}_array gpio array parameter const\n\ngpio_{request,free}_array should not (and do not) modify the passed gpio\narray, so make the parameter const.\n\nSigned-off-by: Lars-Peter Clausen \u003clars@metafoo.de\u003e\nAcked-by: Eric Miao \u003ceric.y.miao@gmail.com\u003e\nAcked-by: Wolfram Sang \u003cw.sang@pengutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "3f397c2144e46d9127662fdb6314f21960d8563d",
      "tree": "ef3401a6ac7e3b394ec10a1c586f5c1949b23edb",
      "parents": [
        "cc300d9ead66235e23c674babb8a4ae4ad4c9db8"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Fri May 20 00:40:19 2011 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 20 00:40:19 2011 -0600"
      },
      "message": "gpio: add trace events for setting direction and value\n\nThis patch allows to trace gpio operations using ftrace\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "8fa0c9bf82b0b8697ace9532c5a50a0f4e0c7bb5",
      "tree": "92a422f578f9da6596f178d852447181c9aae51b",
      "parents": [
        "6cff9e2b34414733fa61fddef909e9ae1e4beaf3"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Fri May 20 00:40:18 2011 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Fri May 20 00:40:18 2011 -0600"
      },
      "message": "gpiolib: export gpiochip_find\n\nExport function gpiochip_find so that modules can use it.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "b15f052cb8c1ba2a55998707f29dc8a8e5cc40ca",
      "tree": "20f5105d58ecb0412300cb41219d106c5af9e315",
      "parents": [
        "47a5d9dcbb595b1bef54f59ba3846170e13be32a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 24 21:27:35 2011 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 25 00:02:51 2011 +0100"
      },
      "message": "arm/gpio: Remove three copies of broken and racy debug code\n\ngpiolib plus two gpio implementations in arm fiddle in the guts of\nirq_desc in a racy and buggy way. Remove the stuff. I already told the\ngpio folks that we can provide that information in a proper way if\nnecessary.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nLKML-Reference: \u003c20110324212508.931638262@linutronix.de\u003e\n"
    },
    {
      "commit": "e254811c205ec539b648cff54a7852ee8dcd2e5e",
      "tree": "ae6a382b424192053dbc1de6a9ee818262e1966b",
      "parents": [
        "d153ba64450b9371158c6516d6cac120faace44c"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@nokia.com",
        "time": "Tue Dec 21 17:24:22 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:33 2010 -0800"
      },
      "message": "gpiolib: gpio_request_one(): add missing gpio_free()\n\nIf GPIO request succeeds, but configuration fails, it should be released.\n\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@nokia.com\u003e\nAcked-by: Eric Miao \u003ceric.miao@canonical.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "364fadb32b67695cec610f5cd03df2514ef0f2b0",
      "tree": "0f4fa1741d83183e55e07d425426d954493485eb",
      "parents": [
        "5ba1821d1b4a506f8c9be93d962f22b24b6140a5"
      ],
      "author": {
        "name": "Daniel Gl?ckner",
        "email": "dg@emlix.com",
        "time": "Tue Aug 10 18:02:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:09 2010 -0700"
      },
      "message": "gpiolib: allow nested threaded irqs for poll(2)\n\nThe pca953x driver requires the use of threaded irqs as its irq\ndemultiplexer can sleep.  Our irq handler can be called from any context,\nso use request_any_context_irq to allow threaded irqs as well.\n\nSigned-off-by: Daniel Gl?ckner \u003cdg@emlix.com\u003e\nReported-by: Ian Jeffray \u003cian@jeffray.co.uk\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ba1821d1b4a506f8c9be93d962f22b24b6140a5",
      "tree": "e083b9e40a9573eb362e3b4c1a91dc0071183a7d",
      "parents": [
        "9c4ba9466117b16a2b85034bb87db528aaeb3f07"
      ],
      "author": {
        "name": "Daniel Gl?ckner",
        "email": "dg@emlix.com",
        "time": "Tue Aug 10 18:02:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:08 2010 -0700"
      },
      "message": "gpiolib: get rid of struct poll_desc and worklet\n\nAs sysfs_notify_dirent has been made irq safe, there is no reason to not\ncall it directly from irq.  With the work_struct removed, the remaining\nelement in poll_desc is a sysfs_dirent pointer which may not be NULL.  We\ncan therefore store it directly in the idr and pass it as context to the\nirq handler.\n\nMost part of the patch deals with renaming defines and variables to\nreflect their new use without functional change.\n\nI also took the opportunity to initialize the idr statically.\n\nSigned-off-by: Daniel Gl?ckner \u003cdg@emlix.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9c4ba9466117b16a2b85034bb87db528aaeb3f07",
      "tree": "24ca585f76deef20b8c541ec2b62a1c72776a931",
      "parents": [
        "49946f68149a723659eca253376ac555d4b73280"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Tue Aug 10 18:02:24 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:08 2010 -0700"
      },
      "message": "gpiolib: decouple might_sleep_if() from DEBUG\n\nBe more consistent about runtime programming interface abuse warnings,\nwhich can reduce some confusion and trigger bugfixes.  Based on an\nobservation and patch from Jani Nikula.\n\nAlso update doc to highlight some sleeping-call issues and to match some\nrecent changes.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Jani Nikula \u003cext-jani.1.nikula@nokia.com\u003e\nCc: \"Ryan Mallon\" \u003cryan@bluewatersys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03c0c29aff7e56b722eb6c47eace222b140d0377",
      "tree": "47267a19b523159cf36a050ef3c35f4dbdb33016",
      "parents": [
        "c60c6a96b7bb0f1f8bb635fdfcf5b592aaf062b4",
        "7fb8f881c54beb05dd4d2c947dada1c636581d87"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 05 15:57:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 05 15:57:35 2010 -0700"
      },
      "message": "Merge branch \u0027next-devicetree\u0027 of git://git.secretlab.ca/git/linux-2.6\n\n* \u0027next-devicetree\u0027 of git://git.secretlab.ca/git/linux-2.6: (63 commits)\n  of/platform: Register of_platform_drivers with an \"of:\" prefix\n  of/address: Clean up function declarations\n  of/spi: call of_register_spi_devices() from spi core code\n  of: Provide default of_node_to_nid() implementation.\n  of/device: Make of_device_make_bus_id() usable by other code.\n  of/irq: Fix endian issues in parsing interrupt specifiers\n  of: Fix phandle endian issues\n  of/flattree: fix of_flat_dt_is_compatible() to match the full compatible string\n  of: remove of_default_bus_ids\n  of: make of_find_device_by_node generic\n  microblaze: remove references to of_device and to_of_device\n  sparc: remove references to of_device and to_of_device\n  powerpc: remove references to of_device and to_of_device\n  of/device: Replace of_device with platform_device in includes and core code\n  of/device: Protect against binding of_platform_drivers to non-OF devices\n  of: remove asm/of_device.h\n  of: remove asm/of_platform.h\n  of/platform: remove all of_bus_type and of_platform_bus_type references\n  of: Merge of_platform_bus_type with platform_bus_type\n  drivercore/of: Add OF style matching to platform bus\n  ...\n\nFix up trivial conflicts in arch/microblaze/kernel/Makefile due to just\nsome obj-y removals by the devicetree branch, while the microblaze\nupdates added a new file.\n"
    },
    {
      "commit": "6a99ad4a2e1b1693ffe8e40cc0dddfc633ce2a50",
      "tree": "7125466673bfe462b3ffbaf85b31cb66906d22cd",
      "parents": [
        "952e1c6632ab5060a2323624d2908f31d62fc0a3"
      ],
      "author": {
        "name": "Jon Povey",
        "email": "jon.povey@racelogic.co.uk",
        "time": "Tue Jul 27 13:18:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 27 14:32:07 2010 -0700"
      },
      "message": "gpio: fix spurious printk when freeing a gpio\n\nWhen freeing a gpio that has not been exported, gpio_unexport() prints a\ndebug message when it should just fall through silently.\n\nExample spurious message:\n\n\tgpio_unexport: gpio0 status -22\n\nSigned-off-by: Jon Povey \u003cjon.povey@racelogic.co.uk\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nAcked-by: Uwe Kleine-K?nig \u003cu.kleine-koenig@pengutronix.de\u003e\nCc: Gregory Bean \u003cgbean@codeaurora.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "391c970c0dd1100e3b9e1681f7d0f20aac35455a",
      "tree": "05a42941269f77b22de6b640953df61f2da5d13c",
      "parents": [
        "594fa265e084073443390c5b93d5410fd28e9bcd"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Jun 08 07:48:17 2010 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Jul 05 16:14:30 2010 -0600"
      },
      "message": "of/gpio: add default of_xlate function if device has a node pointer\n\nImplement generic OF gpio hooks and thus make device-enabled GPIO chips\n(i.e.  the ones that have gpio_chip-\u003edev specified) automatically attach\nto the OpenFirmware subsystem.  Which means that now we can handle I2C and\nSPI GPIO chips almost* transparently.\n\n* \"Almost\" because some chips still require platform data, and for these\n  chips OF-glue is still needed, though with this change the glue will\n  be much smaller.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCc: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Bill Gatliff \u003cbgat@billgatliff.com\u003e\nCc: Dmitry Eremin-Solenikov \u003cdbaryshkov@gmail.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCC: linux-kernel@vger.kernel.org\nCC: devicetree-discuss@lists.ozlabs.org\n"
    },
    {
      "commit": "594fa265e084073443390c5b93d5410fd28e9bcd",
      "tree": "42c0e5536ae2fd016159e1e1bd1f27f0a9f3cac2",
      "parents": [
        "a19e3da5bc5fc6c10ab73f310bea80f3845b4531"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Tue Jun 08 07:48:16 2010 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Jul 05 16:14:30 2010 -0600"
      },
      "message": "of/gpio: stop using device_node data pointer to find gpio_chip\n\nCurrently the kernel uses the struct device_node.data pointer to resolve\na struct gpio_chip pointer from a device tree node.  However, the .data\nmember doesn\u0027t provide any type checking and there aren\u0027t any rules\nenforced on what it should be used for.  There\u0027s no guarantee that the\ndata stored in it actually points to an gpio_chip pointer.\n\nInstead of relying on the .data pointer, this patch modifies the code\nto add a lookup function which scans through the registered gpio_chips\nand returns the gpio_chip that has a pointer to the specified\ndevice_node.\n\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCC: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCC: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCC: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCC: Bill Gatliff \u003cbgat@billgatliff.com\u003e\nCC: Dmitry Eremin-Solenikov \u003cdbaryshkov@gmail.com\u003e\nCC: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCC: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCC: linux-kernel@vger.kernel.org\nCC: devicetree-discuss@lists.ozlabs.org\n\n"
    },
    {
      "commit": "cedb1881ba32f7e9cd49250bd79debccbe52b094",
      "tree": "eefcda635b7b5f683a473c965f8cbeeaff38d6b5",
      "parents": [
        "ac80a51e2ce5c431de9997085f33cb6093218b1f"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Jun 08 07:48:15 2010 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Mon Jul 05 16:14:29 2010 -0600"
      },
      "message": "gpiolib: cosmetic improvements for error handling in gpiochip_add()\n\nHopefully it makes the code look nicer and makes it easier to extend\nthis function.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCC: devicetree-discuss@lists.ozlabs.org\nCC: linux-kernel@vger.kernel.org\n"
    },
    {
      "commit": "c4b5be98fe78508e7199d6919eb712feba9a4f01",
      "tree": "9e688dd076cea9213f8bcbda3627aa7941a01879",
      "parents": [
        "796a8e423ac8afe9e98ad96e668f50142bdd7825"
      ],
      "author": {
        "name": "Felipe Balbi",
        "email": "felipe.balbi@nokia.com",
        "time": "Wed May 26 14:42:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:42 2010 -0700"
      },
      "message": "gpiolib: introduce set_debounce method\n\nA few architectures, like OMAP, allow you to set a debouncing time for the\ngpio before generating the IRQ.  Teach gpiolib about that.\n\nMark said:\n: This would be generally useful for embedded systems, especially where\n: the interrupt concerned is a wake source.  It allows drivers to avoid\n: spurious interrupts from noisy sources so if the hardware supports it\n: the driver can avoid having to explicitly wait for the signal to become\n: stable and software has to cope with fewer events.  We\u0027ve lived without\n: it for quite some time, though.\n\nDavid said:\n: I looked at adding debounce support to the generic GPIO calls (and thus\n: gpiolib) some time back, but decided against it.  I forget why at this\n: time (check list archives) but it wasn\u0027t because of lack of utility in\n: certain contexts.\n:\n: One thing to watch out for is just how variable the hardware capabilities\n: are.  Atmel GPIOs have something like a fixed number of 32K clock cycles\n: for debounce, twl4030 had something odd, OMAPs were more like the Atmel\n: chips but with a different clock.  In some cases debouncing had to be\n: ganged, not per-GPIO.  And so forth.\n\nSigned-off-by: Felipe Balbi \u003cfelipe.balbi@nokia.com\u003e\nCc: Tony Lindgren \u003ctony@atomide.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nReviewed-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "796a8e423ac8afe9e98ad96e668f50142bdd7825",
      "tree": "1ecf3e0e86c41695e24bc0102c686aedbca98c41",
      "parents": [
        "a13c1868aa60ae7a2516b8d00ee8873dea587581"
      ],
      "author": {
        "name": "Ben Dooks",
        "email": "ben-linux@fluff.org",
        "time": "Wed May 26 14:42:21 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:41 2010 -0700"
      },
      "message": "gpiolib: make gpiochip_add() show a better error message\n\nThe current message, \u0027not registered\u0027 is confusing as it implies it was\nnot registered with something, whereas printing \u0027failed to register\u0027\nimplies it was the gpiochip_add() call that did not work correctly.\n\nSigned-off-by: Ben Dooks \u003cben-linux@fluff.org\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7cfe1395b28c472e569db6595a27bfefb161a7bc",
      "tree": "e7057809273ae64cf8627e1e55165211294b6b8e",
      "parents": [
        "62154991a8b2b932112d39bf4aeaab37fa7b9a31"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed May 26 14:42:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:41 2010 -0700"
      },
      "message": "gpiolib: a gpio is unsigned, so use %u to print it\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62154991a8b2b932112d39bf4aeaab37fa7b9a31",
      "tree": "3a66dee35354f8ffe071aa059024d9ae41d3cdaa",
      "parents": [
        "a80a0bbee49872c296c9ed9d6af0f510fcd825a7"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed May 26 14:42:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:41 2010 -0700"
      },
      "message": "gpiolib: make names array and its values const\n\ngpiolib doesn\u0027t need to modify the names and I assume most initializers\nuse string constants that shouldn\u0027t be modified anyhow.\n\n[akpm@linux-foundation.org: fix drivers/gpio/cs5535-gpio.c]\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nCc: Kevin Wells \u003ckevin.wells@nxp.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ff195b011d7decf501a4d55aeed312731094796",
      "tree": "8cfdc330abbf82893955f2d7d6e96efee81bfd7c",
      "parents": [
        "bc451f2058238013e1cdf4acd443c01734d332f0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 30 11:31:26 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:31 2010 -0700"
      },
      "message": "sysfs: Implement sysfs tagged directory support.\n\nThe problem.  When implementing a network namespace I need to be able\nto have multiple network devices with the same name.  Currently this\nis a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and\npotentially a few other directories of the form /sys/ ... /net/*.\n\nWhat this patch does is to add an additional tag field to the\nsysfs dirent structure.  For directories that should show different\ncontents depending on the context such as /sys/class/net/, and\n/sys/devices/virtual/net/ this tag field is used to specify the\ncontext in which those directories should be visible.  Effectively\nthis is the same as creating multiple distinct directories with\nthe same name but internally to sysfs the result is nicer.\n\nI am calling the concept of a single directory that looks like multiple\ndirectories all at the same path in the filesystem tagged directories.\n\nFor the networking namespace the set of directories whose contents I need\nto filter with tags can depend on the presence or absence of hotplug\nhardware or which modules are currently loaded.  Which means I need\na simple race free way to setup those directories as tagged.\n\nTo achieve a reace free design all tagged directories are created\nand managed by sysfs itself.\n\nUsers of this interface:\n- define a type in the sysfs_tag_type enumeration.\n- call sysfs_register_ns_types with the type and it\u0027s operations\n- sysfs_exit_ns when an individual tag is no longer valid\n\n- Implement mount_ns() which returns the ns of the calling process\n  so we can attach it to a sysfs superblock.\n- Implement ktype.namespace() which returns the ns of a syfs kobject.\n\nEverything else is left up to sysfs and the driver layer.\n\nFor the network namespace mount_ns and namespace() are essentially\none line functions, and look to remain that.\n\nTags are currently represented a const void * pointers as that is\nboth generic, prevides enough information for equality comparisons,\nand is trivial to create for current users, as it is just the\nexisting namespace pointer.\n\nThe work needed in sysfs is more extensive.  At each directory\nor symlink creating I need to check if the directory it is being\ncreated in is a tagged directory and if so generate the appropriate\ntag to place on the sysfs_dirent.  Likewise at each symlink or\ndirectory removal I need to check if the sysfs directory it is\nbeing removed from is a tagged directory and if so figure out\nwhich tag goes along with the name I am deleting.\n\nCurrently only directories which hold kobjects, and\nsymlinks are supported.  There is not enough information\nin the current file attribute interfaces to give us anything\nto discriminate on which makes it useless, and there are\nno potential users which makes it an uninteresting problem\nto solve.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3913fd5ed42c990c20036ef5c90e7987a9dd1ad1",
      "tree": "a3f4236246c3ffd65d71571c1f41615c3f4e24fc",
      "parents": [
        "01bf0b64579ead8a82e7cfc32ae44bc667e7ad0f"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Tue Apr 27 14:12:03 2010 -0700"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Wed Apr 28 00:50:01 2010 -0600"
      },
      "message": "gpio: potential null dereference\n\nSmatch found a potential null dereference in gpio_setup_irq().  The\n\"pdesc\" variable is allocated with idr_find() that can return NULL.  If\ngpio_setup_irq() is called with 0 as gpio_flags and \"pdesc\" is null, it\nwould OOPs here.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "28812fe11a21826ba4c97c6c7971a619987cd912",
      "tree": "c78daefd595989bbc660ea48d8bc2dc5750321d3",
      "parents": [
        "5fbcae57db69128c14080a7a5a42d0626bfe155c"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Tue Jan 05 12:48:07 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:48 2010 -0800"
      },
      "message": "driver-core: Add attribute argument to class_attribute show/store\n\nPassing the attribute to the low level IO functions allows all kinds\nof cleanups, by sharing low level IO code without requiring\nan own function for every piece of data.\n\nAlso drivers can extend the attributes with own data fields\nand use that in the low level function.\n\nThis makes the class attributes the same as sysdev_class attributes\nand plain attributes.\n\nThis will allow further cleanups in drivers.\n\nFull tree sweep converting all users.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3e45f1d1155894e6f4291f5536b224874d52d8e2",
      "tree": "d7b44dd5248bdb053c0cd6632e82ce8893833519",
      "parents": [
        "62fecb70cfaa9b4c6aa1981acd53b18f4ad925f0"
      ],
      "author": {
        "name": "Eric Miao",
        "email": "eric.y.miao@gmail.com",
        "time": "Fri Mar 05 13:44:35 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:48 2010 -0800"
      },
      "message": "gpio: introduce gpio_request_one() and friends\n\ngpio_request() without initial configuration of the GPIO is normally\nuseless, introduce gpio_request_one() together with GPIOF_ flags for\ninput/output direction and initial output level.\n\ngpio_{request,free}_array() for multiple GPIOs.\n\nSigned-off-by: Eric Miao \u003ceric.y.miao@gmail.com\u003e\nCc: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Ben Nizette \u003cbn@niasdigital.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "24f3c59e1781435835083eab587399c8bdc235b4",
      "tree": "8a82b2b7bb9fad5ddfe8149e4af0fb12bfeb1878",
      "parents": [
        "3f4724027bfe38644146252f7aa979dea7f80720"
      ],
      "author": {
        "name": "Jani Nikula",
        "email": "ext-jani.1.nikula@nokia.com",
        "time": "Fri Jan 08 14:43:03 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 11 09:34:06 2010 -0800"
      },
      "message": "gpiolib: fix poll(2) support reconfigure on sysfs polarity change\n\nPreviously enabled poll(2) support on one edge was never reconfigured when\nsysfs polarity change was triggered from kernel, because \u0027struct device\n*dev\u0027 shadowed an earlier definition.\n\nFound by sparse, which I should\u0027ve run much earlier.\n\nSigned-off-by: Jani Nikula \u003cext-jani.1.nikula@nokia.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0769746183caff9d4334be48c7b0e7d2ec8716c4",
      "tree": "e23768be82bd84cf8331709ecc1fd36c3d468f33",
      "parents": [
        "35570ac6039ef490b9c5abde1fee4803a39bf4e1"
      ],
      "author": {
        "name": "Jani Nikula",
        "email": "ext-jani.1.nikula@nokia.com",
        "time": "Tue Dec 15 16:46:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:01 2009 -0800"
      },
      "message": "gpiolib: add support for changing value polarity in sysfs\n\nDrivers may use gpiolib sysfs as part of their public user space\ninterface. The GPIO number and polarity might change from board to\nboard. The gpio_export_link() call can be used to hide the GPIO number\nfrom user space. Add support for also hiding the GPIO line polarity\nchanges from user space.\n\nSigned-off-by: Jani Nikula \u003cext-jani.1.nikula@nokia.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d62668e1dd830a81ef73ec73386b420cb2a9ca62",
      "tree": "9121a24fe3a04279c374e813342661c16928ea3c",
      "parents": [
        "bcb3a1676b87effbdeffe8da5c44f63433d158d9"
      ],
      "author": {
        "name": "Sergei Shtylyov",
        "email": "sshtylyov@ru.mvista.com",
        "time": "Wed Nov 11 14:26:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 12 07:26:00 2009 -0800"
      },
      "message": "gpiolib: fix device_create() result check\n\nIn case of failure, device_create() returns not NULL but the error code.\nThe current code checks for non-NULL though which causes kernel oops in\nsysfs_create_group() when device_create() fails.  Check for error using\nIS_ERR() and propagate the error value using PTR_ERR() instead of fixed\n-ENODEV code returned now...\n\nSigned-off-by: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "828c09509b9695271bcbdc53e9fc9a6a737148d2",
      "tree": "072ffad6f02db7bf4095e07e2b90247cfa042998",
      "parents": [
        "1c4115e595dec42aa0e81ba47ef46e35b34ed428"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 01 15:43:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 01 16:11:11 2009 -0700"
      },
      "message": "const: constify remaining file_operations\n\n[akpm@linux-foundation.org: fix KVM]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff77c352ae17768c61cfc36357f0a3904552f11c",
      "tree": "195c102f75445654e87453cbce284b2f658d13a8",
      "parents": [
        "d120c17faeb391f5b4b99af8b1e190619934ecdd"
      ],
      "author": {
        "name": "Daniel Glöckner",
        "email": "dg@emlix.com",
        "time": "Tue Sep 22 16:46:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:48 2009 -0700"
      },
      "message": "gpiolib: allow poll() on value\n\nMany gpio chips allow to generate interrupts when the value of a pin\nchanges.  This patch gives usermode application the opportunity to make\nuse of this feature by calling poll(2) on the /sys/class/gpio/gpioN/value\nsysfs file.  The edge to trigger can be set in the edge file in the same\ndirectory.  Possible values are \"none\", \"rising\", \"falling\", and \"both\".\n\nUsing level triggers is not possible with current sysfs since nothing\nchanges the GPIO value (and the IRQ keeps triggering).  Edge triggering\nwill \"just work\".  Note that if there was an event between read() and\npoll(), the poll() returns immediately.\n\nAlso note that this version only supports true GPIO interrupts.  Some\nlater patch might be able to synthesize this behavior by timer-driven\npolling; some systems seem to need that.\n\n[dbrownell@users.sourceforge.net: align ids to 16 bit ids; whitespace]\nSigned-off-by: Daniel Glöckner \u003cdg@emlix.com\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a4177ee7f1a83eecb1d75e85d32664b023ef65e9",
      "tree": "614b12b1f28a1a9090d96bea33639265e3e79839",
      "parents": [
        "d8c1acb1664d17dd995e34507533321e986d9215"
      ],
      "author": {
        "name": "Jani Nikula",
        "email": "ext-jani.1.nikula@nokia.com",
        "time": "Tue Sep 22 16:46:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:46 2009 -0700"
      },
      "message": "gpiolib: allow exported GPIO nodes to be named using sysfs links\n\nCommit 926b663ce8215ba448960e1ff6e58b67a2c3b99b (gpiolib: allow GPIOs to\nbe named) already provides naming on the chip level. This patch provides\nmore flexibility by allowing multiple names where ever in sysfs on a per\nGPIO basis.\n\nAdapted from David Brownell\u0027s comments on a similar concept:\nhttp://lkml.org/lkml/2009/4/20/203.\n\n[randy.dunlap@oracle.com: fix build for CONFIG_GENERIC_GPIO\u003dn]\nSigned-off-by: Jani Nikula \u003cext-jani.1.nikula@nokia.com\u003e\nAcked-by: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Daniel Silverstone \u003cdsilvers@simtec.co.uk\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a0cecffeb52363a57257bbbbd58f4c4537a75bb",
      "tree": "ee7f754d49a2f2ad75b72ec59e90e6fa2c0753eb",
      "parents": [
        "926b663ce8215ba448960e1ff6e58b67a2c3b99b"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Thu Apr 02 16:57:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:51 2009 -0700"
      },
      "message": "gpio: gpio_{request,free}() now required (feature removal)\n\nWe want to phase out the GPIO \"autorequest\" mechanism in gpiolib and\nrequire all callers to use gpio_request().\n\n - Update feature-removal-schedule\n - Update the documentation now\n - Convert the relevant pr_warning() in gpiolib to a WARN()\n   so folk using this mechanism get a noisy stack dump\n\nSome drivers and board init code will probably need to change.\nImplementations not using gpiolib will still be fine; they are already\nrequired to implement gpio_{request,free}() stubs.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "926b663ce8215ba448960e1ff6e58b67a2c3b99b",
      "tree": "d60e6add2528b6a61968b0dc2db2f162bb157639",
      "parents": [
        "f30281f4f7c2a0efcfeddad12277dfdada8f08a7"
      ],
      "author": {
        "name": "Daniel Silverstone",
        "email": "dsilvers@simtec.co.uk",
        "time": "Thu Apr 02 16:57:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:51 2009 -0700"
      },
      "message": "gpiolib: allow GPIOs to be named\n\nAllow GPIOs in GPIOLIB chips to be named.  This name is then used when the\nGPIO is exported to sysfs, although it could be used elsewhere if deemed\nuseful.\n\nSigned-off-by: Daniel Silverstone \u003cdsilvers@simtec.co.uk\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7460db567bbca76bf087d1694d792a1a96bdaa26",
      "tree": "cb0da014bc604f11525d1e9d23b305b007914549",
      "parents": [
        "7bcc1bb1232de6efc0b85e0c7fe38e90b2436318"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Thu Jan 29 14:25:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 18:04:43 2009 -0800"
      },
      "message": "gpiolib: fix request related issue\n\nFix request-already-requested handling in gpio_request().\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14ab309d33efda7b78bad1d331fd1963ed3bd906",
      "tree": "a8a37c43836932c45c164cbbf2ea286e3237e65a",
      "parents": [
        "8f4bbd9f59a6ec0d96ae374ea2a46bfa90cc26e4"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Jan 06 10:44:42 2009 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:42 2009 -0800"
      },
      "message": "gpio: struct device - replace bus_id with dev_name(), dev_set_name()\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "6e8ba729b6332f2a75572e02480936d2b51665aa",
      "tree": "1a705976c90e3160e1afe4e5669782316ff420f9",
      "parents": [
        "1c207f952a3a39f9d07a3e9de0cf6b9a9464eeaa"
      ],
      "author": {
        "name": "Jarkko Nikula",
        "email": "jarkko.nikula@nokia.com",
        "time": "Wed Nov 19 15:36:17 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:57 2008 -0800"
      },
      "message": "gpiolib: extend gpio label column width in debugfs file\n\nThere are already various drivers having bigger label than 12 bytes.  Most\nof them fit well under 20 bytes but make column width exact so that\noversized labels don\u0027t mess up output alignment.\n\nSigned-off-by: Jarkko Nikula \u003cjarkko.nikula@nokia.com\u003e\nAcked-by: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.26.x, 2.6.26.x, 2.6.27.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9301975ec251bab1ad7cfcb84a688b26187e4e4a",
      "tree": "91e48be0bdc67cbcb75bc8a299a3dcf168e0a814",
      "parents": [
        "7110879cf2afbfb7af79675f5ff109e63d631c25",
        "dd3a1db900f2a215a7d7dd71b836e149a6cf5fed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:22:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:23:01 2008 -0700"
      },
      "message": "Merge branch \u0027genirq-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\nThis merges branches irq/genirq, irq/sparseirq-v4, timers/hpet-percpu\nand x86/uv.\n\nThe sparseirq branch is just preliminary groundwork: no sparse IRQs are\nactually implemented by this tree anymore - just the new APIs are added\nwhile keeping the old way intact as well (the new APIs map 1:1 to\nirq_desc[]).  The \u0027real\u0027 sparse IRQ support will then be a relatively\nsmall patch ontop of this - with a v2.6.29 merge target.\n\n* \u0027genirq-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (178 commits)\n  genirq: improve include files\n  intr_remapping: fix typo\n  io_apic: make irq_mis_count available on 64-bit too\n  genirq: fix name space collisions of nr_irqs in arch/*\n  genirq: fix name space collision of nr_irqs in autoprobe.c\n  genirq: use iterators for irq_desc loops\n  proc: fixup irq iterator\n  genirq: add reverse iterator for irq_desc\n  x86: move ack_bad_irq() to irq.c\n  x86: unify show_interrupts() and proc helpers\n  x86: cleanup show_interrupts\n  genirq: cleanup the sparseirq modifications\n  genirq: remove artifacts from sparseirq removal\n  genirq: revert dynarray\n  genirq: remove irq_to_desc_alloc\n  genirq: remove sparse irq code\n  genirq: use inline function for irq_to_desc\n  genirq: consolidate nr_irqs and for_each_irq_desc()\n  x86: remove sparse irq from Kconfig\n  genirq: define nr_irqs for architectures with GENERIC_HARDIRQS\u003dn\n  ...\n"
    },
    {
      "commit": "978ccaa8ea5d8c7bf6b676209f2fc126eae6355b",
      "tree": "4d639469edbdb2df8ec364bae1719bd083bc04da",
      "parents": [
        "e3274e915061a65717454106301d4a5ea8f71783"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Sat Oct 18 20:27:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:36 2008 -0700"
      },
      "message": "gpiolib: fix oops in gpio_get_value_cansleep()\n\nWe can get the following oops from gpio_get_value_cansleep() when a GPIO\ncontroller doesn\u0027t provide a get() callback:\n\n Unable to handle kernel paging request for instruction fetch\n Faulting instruction address: 0x00000000\n Oops: Kernel access of bad area, sig: 11 [#1]\n [...]\n NIP [00000000] 0x0\n LR [c0182fb0] gpio_get_value_cansleep+0x40/0x50\n Call Trace:\n [c7b79e80] [c0183f28] gpio_value_show+0x5c/0x94\n [c7b79ea0] [c01a584c] dev_attr_show+0x30/0x7c\n [c7b79eb0] [c00d6b48] fill_read_buffer+0x68/0xe0\n [c7b79ed0] [c00d6c54] sysfs_read_file+0x94/0xbc\n [c7b79ef0] [c008f24c] vfs_read+0xb4/0x16c\n [c7b79f10] [c008f580] sys_read+0x4c/0x90\n [c7b79f40] [c0013a14] ret_from_syscall+0x0/0x38\n\nIt\u0027s OK to request the value of *any* GPIO; most GPIOs are bidirectional,\nso configuring them as outputs just enables an output driver and doesn\u0027t\ndisable the input logic.\n\nSo the problem is that gpio_get_value_cansleep() isn\u0027t making the same\nsanity check that gpio_get_value() does: making sure this GPIO isn\u0027t one\nof the atypical \"no input logic\" cases.\n\nReported-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.27.x, 2.6.26.x, 2.6.25.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3274e915061a65717454106301d4a5ea8f71783",
      "tree": "e88cb4ef896fe2f4e38b58ed1b0d2f2e543c70cb",
      "parents": [
        "c8fc40cd345bfd88d8a98e7916909b9143502999"
      ],
      "author": {
        "name": "Steven A. Falco",
        "email": "sfalco@harris.com",
        "time": "Sat Oct 18 20:27:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:36 2008 -0700"
      },
      "message": "gpio: modify sysfs gpio export so that \"value\" displays as 0 or 1\n\ngpiolib can export GPIOs to userspace via sysfs.  This patch modifies the\ngpio_value_show() so that any non-zero value is explicitly printed as \"1\",\nrather than whatever numerical value the lower-level driver returns.\n\nSigned-off-by: Steve Falco \u003csfalco@harris.com\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35e8bb5175c1a6ff6253f1a2acb30bfe52a2f500",
      "tree": "88a1e9695824f88efef3340fd53f8dbe576f5852",
      "parents": [
        "93a22f8b95756c53e80308820892119c910d2739"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Wed Oct 15 22:03:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:40 2008 -0700"
      },
      "message": "gpiolib: request/free hooks\n\nAdd a new internal mechanism to gpiolib to support low power\noperations by letting gpio_chip instances see when their GPIOs\nare in use.  When no GPIOs are active, chips may be able to\nenter lower powered runtime states by disabling clocks and/or\npower domains.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: \"Magnus Damm\" \u003cmagnus.damm@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f6d504e73b49374c6093efe6aa60ab55058248a",
      "tree": "414c9e591ba23b2126bc9cad4e0efb1b60693b2d",
      "parents": [
        "2f8d11971b9f54362437ce70f4d1911f0996d542"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Wed Oct 15 22:03:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:40 2008 -0700"
      },
      "message": "gpiolib: gpio_to_irq() hooks\n\nAdd a new gpiolib mechanism: gpio_chip instances can provide mappings\nbetween their (input) GPIOs and any associated IRQs.  This makes it easier\nfor platforms to support IRQs that are provided by board-specific external\nchips instead of as part of their core (such as SOC-integrated GPIOs).\n\nAlso update the irq_to_gpio() description, saying to avoid it because it\u0027s\nnot always supported.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d599d1ca57f443e5c4ff5af1e69d90350082f77",
      "tree": "475b066c18f2b610d6a0ee0a6313237ce61afc4a",
      "parents": [
        "c557fa3e4c156b8713c177d9dde08920130bf551"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "ukleinek@informatik.uni-freiburg.de",
        "time": "Wed Oct 15 22:03:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:40 2008 -0700"
      },
      "message": "gpio_free might sleep, generic part\n\nAccording to the documentation gpio_free should only be called from task\ncontext only.  To make this more explicit add a might sleep to all\nimplementations.\n\nThis is the generic part which changes gpiolib and the fallback\nimplementation only.\n\nSigned-off-by: Uwe Kleine-König \u003cukleinek@informatik.uni-freiburg.de\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08678b0841267c1d00d771fe01548d86043d065e",
      "tree": "7debb21f9e9a768ced43077f7376797a0c46f8c0",
      "parents": [
        "bfea1238beac9d306eeac081c67de5ca6aec4c7a"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Aug 19 20:50:05 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 16 16:52:29 2008 +0200"
      },
      "message": "generic: sparse irqs: use irq_desc() together with dyn_array, instead of irq_desc[]\n\nadd CONFIG_HAVE_SPARSE_IRQ to for use condensed array.\nGet rid of irq_desc[] array assumptions.\n\nPreallocate 32 irq_desc, and irq_desc() will try to get more.\n\n( No change in functionality is expected anywhere, except the odd build\n  failure where we missed a code site or where a crossing commit itroduces\n  new irq_desc[] usage. )\n\nv2: according to Eric, change get_irq_desc() to irq_desc()\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d8f388d8dc8d4f36539dd37c1fff62cc404ea0fc",
      "tree": "df8603775c889f29f8a03c77b9f7913bfd90d296",
      "parents": [
        "8b6dd986823a8d92ed9f54baa5cef8604d9d9d44"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Fri Jul 25 01:46:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:30 2008 -0700"
      },
      "message": "gpio: sysfs interface\n\nThis adds a simple sysfs interface for GPIOs.\n\n    /sys/class/gpio\n    \t/export ... asks the kernel to export a GPIO to userspace\n    \t/unexport ... to return a GPIO to the kernel\n        /gpioN ... for each exported GPIO #N\n\t    /value ... always readable, writes fail for input GPIOs\n\t    /direction ... r/w as: in, out (default low); write high, low\n\t/gpiochipN ... for each gpiochip; #N is its first GPIO\n\t    /base ... (r/o) same as N\n\t    /label ... (r/o) descriptive, not necessarily unique\n\t    /ngpio ... (r/o) number of GPIOs; numbered N .. N+(ngpio - 1)\n\nGPIOs claimed by kernel code may be exported by its owner using a new\ngpio_export() call, which should be most useful for driver debugging.\nSuch exports may optionally be done without a \"direction\" attribute.\n\nUserspace may ask to take over a GPIO by writing to a sysfs control file,\nhelping to cope with incomplete board support or other \"one-off\"\nrequirements that don\u0027t merit full kernel support:\n\n  echo 23 \u003e /sys/class/gpio/export\n\t... will gpio_request(23, \"sysfs\") and gpio_export(23);\n\tuse /sys/class/gpio/gpio-23/direction to (re)configure it,\n\twhen that GPIO can be used as both input and output.\n  echo 23 \u003e /sys/class/gpio/unexport\n\t... will gpio_free(23), when it was exported as above\n\nThe extra D-space footprint is a few hundred bytes, except for the sysfs\nresources associated with each exported GPIO.  The additional I-space\nfootprint is about two thirds of the current size of gpiolib (!).  Since\nno /dev node creation is involved, no \"udev\" support is needed.\n\nRelated changes:\n\n  * This adds a device pointer to \"struct gpio_chip\".  When GPIO\n    providers initialize that, sysfs gpio class devices become children of\n    that device instead of being \"virtual\" devices.\n\n  * The (few) gpio_chip providers which have such a device node have\n    been updated.\n\n  * Some gpio_chip drivers also needed to update their module \"owner\"\n    field ...  for which missing kerneldoc was added.\n\n  * Some gpio_chips don\u0027t support input GPIOs.  Those GPIOs are now\n    flagged appropriately when the chip is registered.\n\nBased on previous patches, and discussion both on and off LKML.\n\nA Documentation/ABI/testing/sysfs-gpio update is ready to submit once this\nmerges to mainline.\n\n[akpm@linux-foundation.org: a few maintenance build fixes]\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Guennadi Liakhovetski \u003cg.liakhovetski@pengutronix.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bff5fda972dc23bd1806a47c2098ae173585d013",
      "tree": "d26a3e5f18ee91b25dc4da7f1d1d0f022dd8d72d",
      "parents": [
        "1d1c1d9b557a12320174058d2d313ffb0f8611f4"
      ],
      "author": {
        "name": "Trent Piepho",
        "email": "xyzzy@speakeasy.org",
        "time": "Fri May 23 13:04:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:11 2008 -0700"
      },
      "message": "gpiolib: fix off by one errors\n\nThe last gpio belonging to a chip is chip-\u003ebase + chip-\u003engpios - 1.  Some\nplaces in the code, but not all, forgot the critical minus one.\n\nSigned-off-by: Trent Piepho \u003cxyzzy@speakeasy.org\u003e\nAcked-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "145980a0b07520f0f82cc40999acc92b349ea40c",
      "tree": "48bc21442adcda4561b8f5356380cc168d059619",
      "parents": [
        "bdf4bbaaee3d4b8f555658333cbce1affe9070fb"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:54:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "drivers: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Ben Dooks \u003cben-linux@fluff.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "169b6a7a6e91e1ea32136681b475cbaf2074bf35",
      "tree": "bf29842528e61cb07c581e43acbe3619a25746ab",
      "parents": [
        "8d0aab2f16c4fa170f32e7a74a52cd0122bbafef"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Mon Apr 28 02:14:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:34 2008 -0700"
      },
      "message": "gpiochip_reserve()\n\nAdd a new function gpiochip_reserve() to reserve ranges of gpios that platform\ncode has pre-allocated.  That is, this marks gpio numbers which will be\nclaimed by drivers that haven\u0027t yet been loaded, and thus are not available\nfor dynamic gpio number allocation.\n\n[akpm@linux-foundation.org: remove unneeded __must_check]\n[david-b@pacbell.net: don\u0027t export gpiochip_reserve (section fix)]\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d0aab2f16c4fa170f32e7a74a52cd0122bbafef",
      "tree": "c9e559489af8f2cbcceda8a323e4ac496114765a",
      "parents": [
        "e6de1808f8ebfeb7e49f3c5a30cb8f2032beb287"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Mon Apr 28 02:14:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:34 2008 -0700"
      },
      "message": "gpiolib: dynamic gpio number allocation\n\nIf gpio_chip-\u003ebase is negative during registration, gpiolib performs dynamic\nbase allocation.  This is useful for devices that aren\u0027t always present, such\nas GPIOs on hotplugged devices rather than mainboards.  (This behavior was\npreviously specified but not implemented.)\n\nTo avoid using any numbers that may have been explicitly assigned but not yet\nregistered, this dynamic allocation assigns GPIO numbers from the biggest\nnumber on down, instead of from the smallest on up.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6de1808f8ebfeb7e49f3c5a30cb8f2032beb287",
      "tree": "2230ea8f384449c7785d636ab016af3b2aa20123",
      "parents": [
        "d72cbed0c486e3db8b56380635f8e845073ce63a"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "g.liakhovetski@pengutronix.de",
        "time": "Mon Apr 28 02:14:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:34 2008 -0700"
      },
      "message": "gpio: define gpio_is_valid()\n\nIntroduce a gpio_is_valid() predicate; use it in gpiolib.\n\nSigned-off-by: Guennadi Liakhovetski \u003cg.liakhovetski@pengutronix.de\u003e\n    [ use inline function; follow the gpio_* naming convention;\n      work without gpiolib; all programming interfaces need docs ]\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "438d8908b379b6322fc3b28d45c9ebdddf58bc20",
      "tree": "ce9439dc8c7e5d9e80f514751fb3b4ce4e414233",
      "parents": [
        "73fcdc9e15c27bb92595c611c8938a36645ea20d"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "g.liakhovetski@pengutronix.de",
        "time": "Mon Apr 28 02:14:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:34 2008 -0700"
      },
      "message": "gpiolib: better rmmod infrastructure\n\nAs long as one or more GPIOs on a gpio chip are used its driver should not be\nunloaded.  The existing mechanism (gpiochip_remove failure) doesn\u0027t address\nthat, since rmmod can no longer be made to fail by having the cleanup code\nreport errors.  Module usecounts are the solution.\n\nAssuming standard \"initialize struct to zero\" policies, this change won\u0027t\naffect SOC platform drivers.  However, drivers for external chips (on I2C and\nSPI busses) should be updated if they can be built as modules.\n\nSigned-off-by: Guennadi Liakhovetski \u003cg.liakhovetski@pengutronix.de\u003e\n[ gpio_ensure_requested() needs to update module usecounts too ]\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2876d08d86f22ce1f276fc29f6baec8b53e32c6",
      "tree": "d9d059fad208001edb58d9dff3ed6ad64c8e7407",
      "parents": [
        "a9c5fff542544c8595bb12efeb278a96d99386fc"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Mon Feb 04 22:28:20 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:12 2008 -0800"
      },
      "message": "gpiolib: add gpio provider infrastructure\n\nProvide new implementation infrastructure that platforms may choose to use\nwhen implementing the GPIO programming interface.  Platforms can update their\nGPIO support to use this.  In many cases the incremental cost to access a\nnon-inlined GPIO should be less than a dozen instructions, with the memory\ncost being about a page (total) of extra data and code.  The upside is:\n\n  * Providing two features which were \"want to have (but OK to defer)\" when\n    GPIO interfaces were first discussed in November 2006:\n\n    -\tA \"struct gpio_chip\" to plug in GPIOs that aren\u0027t directly supported\n\tby SOC platforms, but come from FPGAs or other multifunction devices\n\tusing conventional device registers (like UCB-1x00 or SM501 GPIOs,\n\tand southbridges in PCs with more open specs than usual).\n\n    -\tFull support for message-based GPIO expanders, where registers are\n\taccessed through sleeping I/O calls.  Previous support for these\n\t\"cansleep\" calls was just stubs.  (One example: the widely used\n\tpcf8574 I2C chips, with 8 GPIOs each.)\n\n  * Including a non-stub implementation of the gpio_{request,free}() calls,\n    making those calls much more useful.  The diagnostic labels are also\n    recorded given DEBUG_FS, so /sys/kernel/debug/gpio can show a snapshot\n    of all GPIOs known to this infrastructure.\n\nThe driver programming interfaces introduced in 2.6.21 do not change at all;\nthis infrastructure is entirely below those covers.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Eric Miao \u003ceric.miao@marvell.com\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Philipp Zabel \u003cphilipp.zabel@gmail.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ben Gardner \u003cbgardner@wabtec.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
