<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/drivers/pinctrl, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-09-14T11:45:34+00:00</updated>
<entry>
<title>pinctl: Add Aspeed driver</title>
<updated>2015-09-14T11:45:34+00:00</updated>
<author>
<name>Joel Stanley</name>
<email>joel@jms.id.au</email>
</author>
<published>2015-05-18T07:04:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=fabab4c400a28067244d877b947c7ff94beff51e'/>
<id>urn:sha1:fabab4c400a28067244d877b947c7ff94beff51e</id>
<content type='text'>
Doesn't do anything yet.

Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>Merge tag 'pinctrl-v4.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl</title>
<updated>2015-07-21T22:27:27+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2015-07-21T22:27:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=71ebd1af094db1c72d69505a27dfecea99c2cb0b'/>
<id>urn:sha1:71ebd1af094db1c72d69505a27dfecea99c2cb0b</id>
<content type='text'>
Pull pin control fixes from Linus Walleij:
 "Here are some overly ripe pin control fixes for the v4.2 series.

  They got delayed because of various crap commits and having to clean
  and rinse the patch stack a few times.  Now they are however looking
  good.

   - some dead defines dropped from the Samsung driver, was targeted for
     -rc2 but got delayed
   - drop the strict mode from abx500, this was too strict
   - fix the R-Car sparse IRQs code to work as intended
   - fix the IRQ code for the pinctrl-single GPIO backend to not enforce
     threaded IRQs
   - clear the latched events/IRQs for the Broadcom BCM2835 driver
   - fix up debugfs for the Freescale imx1 driver
   - fix a typo bug in the Schmitt Trigger setup in the LPC18xx driver"

* tag 'pinctrl-v4.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl: lpc18xx: fix schmitt trigger setup
  Subject: pinctrl: imx1-core: Fix debug output in .pin_config_set callback
  pinctrl: bcm2835: Clear the event latch register when disabling interrupts
  pinctrl: single: ensure pcs irq will not be forced threaded
  sh-pfc: fix sparse GPIOs for R-Car SoCs
  pinctrl: abx500: remove strict mode
  pinctrl: samsung: Remove old unused defines
</content>
</entry>
<entry>
<title>pinctrl: lpc18xx: fix schmitt trigger setup</title>
<updated>2015-07-20T09:01:53+00:00</updated>
<author>
<name>Joachim Eastwood</name>
<email>manabian@gmail.com</email>
</author>
<published>2015-07-14T22:25:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=681ccdcc756f17f847beba5ac4cd3d03e0949489'/>
<id>urn:sha1:681ccdcc756f17f847beba5ac4cd3d03e0949489</id>
<content type='text'>
The param_val variable is what determines if schmitt
trigger is enabled on a pin or not. A typo here mean
that schmitt trigger was always enabled for standard
and i2c pins.

Signed-off-by: Joachim Eastwood &lt;manabian@gmail.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>Subject: pinctrl: imx1-core: Fix debug output in .pin_config_set callback</title>
<updated>2015-07-20T09:01:53+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2015-07-17T07:38:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=9571b25df1dbf4db17191b54f59734e8b77fd591'/>
<id>urn:sha1:9571b25df1dbf4db17191b54f59734e8b77fd591</id>
<content type='text'>
imx1_pinconf_set assumes that the array of pins in struct
imx1_pinctrl_soc_info can be indexed by pin id to get the
pinctrl_pin_desc for a pin. This used to be correct up to commit
607af165c047 which removed some entries from the array and so made it
wrong to access the array by pin id.

The result of this bug is a wrong pin name in the output for small pin
ids and an oops for the bigger ones.

This patch is the result of a discussion that includes patches by Markus
Pargmann and Chris Ruehl.

Fixes: 607af165c047 ("pinctrl: i.MX27: Remove nonexistent pad definitions")
Cc: stable@vger.kernel.org
Reported-by: Chris Ruehl &lt;chris.ruehl@gtsys.com.hk&gt;
Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Reviewed-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>pinctrl: bcm2835: Clear the event latch register when disabling interrupts</title>
<updated>2015-07-20T09:01:52+00:00</updated>
<author>
<name>Jonathan Bell</name>
<email>jonathan@raspberrypi.org</email>
</author>
<published>2015-06-30T11:35:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=714b1dd8f72e39ef4bc0f38f7f341bb1d57d98bf'/>
<id>urn:sha1:714b1dd8f72e39ef4bc0f38f7f341bb1d57d98bf</id>
<content type='text'>
It's possible to hit a race condition if interrupts are generated on a GPIO
pin when the IRQ line in question is being disabled.

If the interrupt is freed, bcm2835_gpio_irq_disable() is called which
disables the event generation sources (edge, level). If an event occurred
between the last disabling of hard IRQs and the write to the event
source registers, a bit would be set in the GPIO event detect register
(GPEDSn) which goes unacknowledged by bcm2835_gpio_irq_handler()
so Linux complains loudly.

There is no per-GPIO mask register, so when disabling GPIO interrupts
write 1 to the relevant bit in GPEDSn to clear out any stale events.

Signed-off-by: Jonathan Bell &lt;jonathan@raspberrypi.org&gt;
Acked-by: Stephen Warren &lt;swarren@wwwdotorg.org&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>pinctrl: single: ensure pcs irq will not be forced threaded</title>
<updated>2015-07-20T09:01:52+00:00</updated>
<author>
<name>Grygorii Strashko</name>
<email>grygorii.strashko@ti.com</email>
</author>
<published>2015-07-06T15:13:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c10372e615b8f790d30cbfcf59e43908ca42bf1a'/>
<id>urn:sha1:c10372e615b8f790d30cbfcf59e43908ca42bf1a</id>
<content type='text'>
The PSC IRQ is requested using request_irq() API and as result it can
be forced to be threaded IRQ in RT-Kernel if PCS_QUIRK_HAS_SHARED_IRQ
is enabled for pinctrl domain.

As result, following 'possible irq lock inversion dependency' report
can be seen:
=========================================================
[ INFO: possible irq lock inversion dependency detected ]
3.14.43-rt42-00360-g96ff499-dirty #24 Not tainted
---------------------------------------------------------
irq/369-pinctrl/927 just changed the state of lock:
 (&amp;pcs-&gt;lock){+.....}, at: [&lt;c0375b54&gt;] pcs_irq_handle+0x48/0x9c
but this lock was taken by another, HARDIRQ-safe lock in the past:
 (&amp;irq_desc_lock_class){-.....}

and interrupts could create inverse lock ordering between them.

other info that might help us debug this:
 Possible interrupt unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;pcs-&gt;lock);
                               local_irq_disable();
                               lock(&amp;irq_desc_lock_class);
                               lock(&amp;pcs-&gt;lock);
  &lt;Interrupt&gt;
    lock(&amp;irq_desc_lock_class);

 *** DEADLOCK ***

no locks held by irq/369-pinctrl/927.

the shortest dependencies between 2nd lock and 1st lock:
  -&gt; (&amp;irq_desc_lock_class){-.....} ops: 58724 {
     IN-HARDIRQ-W at:
                       [&lt;c0090040&gt;] lock_acquire+0x9c/0x158
                       [&lt;c07065c8&gt;] _raw_spin_lock+0x48/0x58
                       [&lt;c009edac&gt;] handle_fasteoi_irq+0x24/0x15c
                       [&lt;c009abb0&gt;] generic_handle_irq+0x3c/0x4c
                       [&lt;c000f83c&gt;] handle_IRQ+0x50/0xa0
                       [&lt;c0008674&gt;] gic_handle_irq+0x3c/0x6c
                       [&lt;c0707a04&gt;] __irq_svc+0x44/0x8c
                       [&lt;c000fc44&gt;] arch_cpu_idle+0x40/0x4c
                       [&lt;c009aadc&gt;] cpu_startup_entry+0x270/0x2e0
                       [&lt;c06fcbf8&gt;] rest_init+0xd4/0xe4
                       [&lt;c0a44bfc&gt;] start_kernel+0x3d0/0x3dc
                       [&lt;80008084&gt;] 0x80008084
     INITIAL USE at:
                      [&lt;c0090040&gt;] lock_acquire+0x9c/0x158
                      [&lt;c070674c&gt;] _raw_spin_lock_irqsave+0x54/0x68
                      [&lt;c009aff8&gt;] __irq_get_desc_lock+0x64/0xa4
                      [&lt;c009e38c&gt;] irq_set_chip+0x30/0x78
                      [&lt;c009ec30&gt;] irq_set_chip_and_handler_name+0x24/0x3c
                      [&lt;c036ca10&gt;] gic_irq_domain_map+0x48/0xb4
                      [&lt;c00a0a80&gt;] irq_domain_associate+0x84/0x1d4
                      [&lt;c00a1154&gt;] irq_create_mapping+0x80/0x11c
                      [&lt;c00a1270&gt;] irq_create_of_mapping+0x80/0x120
                      [&lt;c05cdaa8&gt;] irq_of_parse_and_map+0x34/0x3c
                      [&lt;c0a4ea24&gt;] omap_dm_timer_init_one+0x90/0x30c
                      [&lt;c0a4eef0&gt;] omap5_realtime_timer_init+0x8c/0x48c
                      [&lt;c0a486b0&gt;] time_init+0x28/0x38
                      [&lt;c0a44a6c&gt;] start_kernel+0x240/0x3dc
                      [&lt;80008084&gt;] 0x80008084
   }
   ... key      at: [&lt;c1049ce0&gt;] irq_desc_lock_class+0x0/0x8
   ... acquired at:
   [&lt;c07065c8&gt;] _raw_spin_lock+0x48/0x58
   [&lt;c0375a90&gt;] pcs_irq_unmask+0x58/0xa0
   [&lt;c009ea48&gt;] irq_enable+0x38/0x48
   [&lt;c009ead0&gt;] irq_startup+0x78/0x7c
   [&lt;c009d440&gt;] __setup_irq+0x4a8/0x4f4
   [&lt;c009d5dc&gt;] request_threaded_irq+0xb8/0x138
   [&lt;c0415a5c&gt;] omap_8250_startup+0x4c/0x148
   [&lt;c041276c&gt;] serial8250_startup+0x24/0x30
   [&lt;c040d0ec&gt;] uart_startup.part.9+0x5c/0x1b4
   [&lt;c040dbcc&gt;] uart_open+0xf4/0x16c
   [&lt;c03f0540&gt;] tty_open+0x170/0x61c
   [&lt;c0157028&gt;] chrdev_open+0xbc/0x1b4
   [&lt;c0150494&gt;] do_dentry_open+0x1e8/0x2bc
   [&lt;c0150a84&gt;] finish_open+0x44/0x5c
   [&lt;c0160d50&gt;] do_last.isra.47+0x710/0xca0
   [&lt;c01613a4&gt;] path_openat+0xc4/0x640
   [&lt;c0162904&gt;] do_filp_open+0x3c/0x98
   [&lt;c0151bdc&gt;] do_sys_open+0x114/0x1d8
   [&lt;c0151cc8&gt;] SyS_open+0x28/0x2c
   [&lt;c0a44d70&gt;] kernel_init_freeable+0x168/0x1e4
   [&lt;c06fcc24&gt;] kernel_init+0x1c/0xf8
   [&lt;c000eee8&gt;] ret_from_fork+0x14/0x20

-&gt; (&amp;pcs-&gt;lock){+.....} ops: 65 {
   HARDIRQ-ON-W at:
                    [&lt;c0090040&gt;] lock_acquire+0x9c/0x158
                    [&lt;c07065c8&gt;] _raw_spin_lock+0x48/0x58
                    [&lt;c0375b54&gt;] pcs_irq_handle+0x48/0x9c
                    [&lt;c0375c5c&gt;] pcs_irq_handler+0x1c/0x28
                    [&lt;c009c458&gt;] irq_forced_thread_fn+0x30/0x74
                    [&lt;c009c784&gt;] irq_thread+0x158/0x1c4
                    [&lt;c0063fc4&gt;] kthread+0xd4/0xe8
                    [&lt;c000eee8&gt;] ret_from_fork+0x14/0x20
   INITIAL USE at:
                   [&lt;c0090040&gt;] lock_acquire+0x9c/0x158
                   [&lt;c070674c&gt;] _raw_spin_lock_irqsave+0x54/0x68
                   [&lt;c0375344&gt;] pcs_enable+0x7c/0xe8
                   [&lt;c0372a44&gt;] pinmux_enable_setting+0x178/0x220
                   [&lt;c036fecc&gt;] pinctrl_select_state+0x110/0x194
                   [&lt;c04732dc&gt;] pinctrl_bind_pins+0x7c/0x108
                   [&lt;c045853c&gt;] driver_probe_device+0x70/0x254
                   [&lt;c0458810&gt;] __driver_attach+0x9c/0xa0
                   [&lt;c045674c&gt;] bus_for_each_dev+0x78/0xac
                   [&lt;c0458030&gt;] driver_attach+0x2c/0x30
                   [&lt;c0457c78&gt;] bus_add_driver+0x15c/0x204
                   [&lt;c0458ee0&gt;] driver_register+0x88/0x108
                   [&lt;c045a168&gt;] __platform_driver_register+0x64/0x6c
                   [&lt;c0a8170c&gt;] omap_hsmmc_driver_init+0x1c/0x20
                   [&lt;c0008a94&gt;] do_one_initcall+0x110/0x170
                   [&lt;c0a44d48&gt;] kernel_init_freeable+0x140/0x1e4
                   [&lt;c06fcc24&gt;] kernel_init+0x1c/0xf8
                   [&lt;c000eee8&gt;] ret_from_fork+0x14/0x20
 }
 ... key      at: [&lt;c1088a8c&gt;] __key.18572+0x0/0x8
 ... acquired at:
   [&lt;c008cdd4&gt;] mark_lock+0x388/0x76c
   [&lt;c008df40&gt;] __lock_acquire+0x6d0/0x1f98
   [&lt;c0090040&gt;] lock_acquire+0x9c/0x158
   [&lt;c07065c8&gt;] _raw_spin_lock+0x48/0x58
   [&lt;c0375b54&gt;] pcs_irq_handle+0x48/0x9c
   [&lt;c0375c5c&gt;] pcs_irq_handler+0x1c/0x28
   [&lt;c009c458&gt;] irq_forced_thread_fn+0x30/0x74
   [&lt;c009c784&gt;] irq_thread+0x158/0x1c4
   [&lt;c0063fc4&gt;] kthread+0xd4/0xe8
   [&lt;c000eee8&gt;] ret_from_fork+0x14/0x20

stack backtrace:
CPU: 1 PID: 927 Comm: irq/369-pinctrl Not tainted 3.14.43-rt42-00360-g96ff499-dirty #24
[&lt;c00177e0&gt;] (unwind_backtrace) from [&lt;c00130b0&gt;] (show_stack+0x20/0x24)
[&lt;c00130b0&gt;] (show_stack) from [&lt;c0702958&gt;] (dump_stack+0x84/0xd0)
[&lt;c0702958&gt;] (dump_stack) from [&lt;c008bcfc&gt;] (print_irq_inversion_bug+0x1d0/0x21c)
[&lt;c008bcfc&gt;] (print_irq_inversion_bug) from [&lt;c008bf18&gt;] (check_usage_backwards+0xb4/0x11c)
[&lt;c008bf18&gt;] (check_usage_backwards) from [&lt;c008cdd4&gt;] (mark_lock+0x388/0x76c)
[&lt;c008cdd4&gt;] (mark_lock) from [&lt;c008df40&gt;] (__lock_acquire+0x6d0/0x1f98)
[&lt;c008df40&gt;] (__lock_acquire) from [&lt;c0090040&gt;] (lock_acquire+0x9c/0x158)
[&lt;c0090040&gt;] (lock_acquire) from [&lt;c07065c8&gt;] (_raw_spin_lock+0x48/0x58)
[&lt;c07065c8&gt;] (_raw_spin_lock) from [&lt;c0375b54&gt;] (pcs_irq_handle+0x48/0x9c)
[&lt;c0375b54&gt;] (pcs_irq_handle) from [&lt;c0375c5c&gt;] (pcs_irq_handler+0x1c/0x28)
[&lt;c0375c5c&gt;] (pcs_irq_handler) from [&lt;c009c458&gt;] (irq_forced_thread_fn+0x30/0x74)
[&lt;c009c458&gt;] (irq_forced_thread_fn) from [&lt;c009c784&gt;] (irq_thread+0x158/0x1c4)
[&lt;c009c784&gt;] (irq_thread) from [&lt;c0063fc4&gt;] (kthread+0xd4/0xe8)
[&lt;c0063fc4&gt;] (kthread) from [&lt;c000eee8&gt;] (ret_from_fork+0x14/0x20)

To fix it use IRQF_NO_THREAD to ensure that pcs irq will not be forced threaded.

Cc: Tony Lindgren &lt;tony@atomide.com&gt;
Cc: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Acked-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>sh-pfc: fix sparse GPIOs for R-Car SoCs</title>
<updated>2015-07-20T09:01:52+00:00</updated>
<author>
<name>Sergei Shtylyov</name>
<email>sergei.shtylyov@cogentembedded.com</email>
</author>
<published>2015-06-25T22:40:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=61bb3aef92a4d102382f399eafccd5c72be6fdf2'/>
<id>urn:sha1:61bb3aef92a4d102382f399eafccd5c72be6fdf2</id>
<content type='text'>
The PFC driver causes the kernel to hang on the R-Car gen2 SoC based  boards
when the CPU_ALL_PORT() macro is fixed to reflect the reality, i.e. when the
GPIO space becomes actually sparse.  This happens because the _GP_GPIO() macro
includes  an indexed initializer which causes the "holes" (array entries filled
with all 0s) between the groups  of the existing GPIOs; and the driver can't
cope with that.  There seems to  be no reason to use the indexed initializer,
so we can remove the index specifier and so avoid the "holes".

Signed-off-by: Sergei Shtylyov &lt;sergei.shtylyov@cogentembedded.com&gt;
Acked-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Tested-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>pinctrl: abx500: remove strict mode</title>
<updated>2015-07-20T09:01:51+00:00</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2015-07-08T13:12:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=27aa2e3a3c99d3319de12ada0d292e33f5831e60'/>
<id>urn:sha1:27aa2e3a3c99d3319de12ada0d292e33f5831e60</id>
<content type='text'>
Commit a21763a0b1e5a5ab8310f581886d04beadc16616
"pinctrl: nomadik: activate strict mux mode"
put all Nomadik pin controllers to strict mode. This was
not good on the Snowball platform: the muxing of GPIOs to
different pins is done with hogs in the DTS file, and then
these GPIOs are used by offset, relying on hogs to mux the
pins. Since that means the pin controller "owns" the pins
and at the same time we have a GPIO user, this pin controller
is by definition not strict.

Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
<entry>
<title>Update Viresh Kumar's email address</title>
<updated>2015-07-17T23:39:53+00:00</updated>
<author>
<name>Viresh Kumar</name>
<email>viresh.kumar@linaro.org</email>
</author>
<published>2015-07-17T23:23:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=da89947b47a3a355f33a75d7672892c147ed880d'/>
<id>urn:sha1:da89947b47a3a355f33a75d7672892c147ed880d</id>
<content type='text'>
Switch to my kernel.org alias instead of a badly named gmail address,
which I rarely use.

Signed-off-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>pinctrl: samsung: Remove old unused defines</title>
<updated>2015-07-17T07:55:55+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2015-06-15T04:54:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=5cde07abcbc57b3430b044cb2cf028d97d7a7254'/>
<id>urn:sha1:5cde07abcbc57b3430b044cb2cf028d97d7a7254</id>
<content type='text'>
Since 9a2c1c3b91aa ("pinctrl: samsung: Allow grouping multiple
pinmux/pinconf nodes") the defines for GPIO group and function names are
not used anywhere in the driver.

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Inspired-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
</entry>
</feed>
