<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/pinctrl/sirf, branch v3.14.4</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>pinctrl: sirf: fix kernel panic in gpio_lock_as_irq</title>
<updated>2014-03-05T09:11:47+00:00</updated>
<author>
<name>Barry Song</name>
<email>Baohua.Song@csr.com</email>
</author>
<published>2014-03-05T06:55:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e291fd20ef0870ed527470ca9c2402ba6f44d31c'/>
<id>e291fd20ef0870ed527470ca9c2402ba6f44d31c</id>
<content type='text'>
commit 655dada6277991 causes kernel panic, this patch fixes it.

    [    1.197816] [ffffffee] *pgd=0d7fd821, *pte=00000000, *ppte=00000000
    [    1.204070] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
    [    1.209447] Modules linked in:
    [    1.212490] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc1 #3
    [    1.218737] task: cd03c000 ti: cd040000 task.ti: cd040000
    [    1.224127] PC is at gpiod_lock_as_irq+0xc/0x64
    [    1.228634] LR is at sirfsoc_gpio_irq_startup+0x18/0x44
    [    1.233842] pc : [&lt;c01d3990&gt;]    lr : [&lt;c01d1c38&gt;]    psr: a0000193
    [    1.233842] sp : cd041d30  ip : 00000000  fp : 00000000
    [    1.245296] r10: 00000000  r9 : cd023db4  r8 : 60000113
    [    1.250505] r7 : 0000003e  r6 : cd023dd4  r5 : c06bfa54  r4 : cd023d80
    [    1.257014] r3 : 00000020  r2 : 00000000  r1 : ffffffea  r0 : ffffffea
    [    1.263526] Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    [    1.270903] Control: 10c53c7d  Table: 00004059  DAC: 00000015
    [    1.276631] Process swapper/0 (pid: 1, stack limit = 0xcd040240)
    [    1.282620] Stack: (0xcd041d30 to 0xcd042000)
    [    1.286963] 1d20:                                     cd023d80 c01d1c38 c01d1c20 cd023d80
    [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
    [    1.286963] 1d20:                                     cd023d80 c01d1c38 c01d1c20 cd023d80
    [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
    [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
    [    1.303283] 1d60: 00000800 00000083 ccb6d880 cd023d80 c02b41d8 00000083 0000003e ccb7c410
    [    1.311442] 1d80: 00000000 c00671dc 00000083 0000003e c02b41d8 cd3dd5c0 0000003e ccb7c634
    [    1.319601] 1da0: cd040030 c00672a8 cd3dd5c0 ccb7c410 ccb6d340 ccb7c410 ccb6d340 cd3dd400
    [    1.327760] 1dc0: cd3dd410 c02b4434 ccb7c410 c01265a8 00000001 cd3dd410 c0687108 00000000
    [    1.335919] 1de0: c0687108 00000000 00000000 c0240170 c0240158 cd3dd410 c06c30d0 c023e8bc
    [    1.344079] 1e00: c023e9d4 00000000 cd3dd410 c023e9d4 c0682150 c023cf88 cd003e98 cd2d50c4
    [    1.352238] 1e20: cd3dd410 cd3dd444 c06822f0 c023e768 cd3dd418 cd3dd410 c06822f0 c023de14
    [    1.360397] 1e40: cd3dd418 00000000 cd3dd410 c023c398 cd041e78 cd041ea8 cd3dd400 cd3dd410
    [    1.368556] 1e60: 00000083 00000000 cd3dd400 cd3dd410 00000083 000000c8 c04e00c8 c023fee8
    [    1.376715] 1e80: 00000000 cd041ea8 cd3dd400 00000001 00000083 c024048c c0435ef8 c0434dec
    [    1.384874] 1ea0: c068da58 c04c6d04 c0682150 c0435ef8 ffffffff 00000000 00000000 c068da58
    [    1.393033] 1ec0: 00000020 00000000 00000000 00000000 c05dabb8 00000007 c068d640 c068d640
    [    1.401193] 1ee0: c04c247c c04c249c 00000000 c00088e8 cd004c00 c043bbb8 cd029180 c03812a0
    [    1.409352] 1f00: 00000000 00000000 60000113 c0673728 60000113 c0673728 00000000 00000000
    [    1.417511] 1f20: cd7fce01 c0390a54 00000065 c003a81c c049e8bc 00000007 cd7fce0e 00000007
    [    1.425670] 1f40: 00000000 c05dabb8 00000007 c068d640 c068d640 c04c050c c04e00c8 00000065
    [    1.433829] 1f60: c04e00c0 c04c0c54 00000007 00000007 c04c050c c037d8fc cd03c000 c004322c
    [    1.441988] 1f80: c0662b40 0000d640 c03737c0 00000000 00000000 00000000 00000000 00000000
    [    1.450147] 1fa0: 00000000 c03737cc 00000000 c000e478 00000000 00000000 00000000 00000000
    [    1.458307] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.466467] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 0002d481 05014092
    [    1.474640] [&lt;c01d3990&gt;] (gpiod_lock_as_irq) from [&lt;c01d1c38&gt;] (sirfsoc_gpio_irq_startup+0x18/0x44)
    [    1.483661] [&lt;c01d1c38&gt;] (sirfsoc_gpio_irq_startup) from [&lt;c0068438&gt;] (irq_startup+0x34/0x6c)
    [    1.492163] [&lt;c0068438&gt;] (irq_startup) from [&lt;c0067044&gt;] (__setup_irq+0x450/0x4b8)
    [    1.499714] [&lt;c0067044&gt;] (__setup_irq) from [&lt;c00671dc&gt;] (request_threaded_irq+0xa8/0x128)
    [    1.507960] [&lt;c00671dc&gt;] (request_threaded_irq) from [&lt;c00672a8&gt;] (request_any_context_irq+0x4c/0x7c)
    [    1.517164] [&lt;c00672a8&gt;] (request_any_context_irq) from [&lt;c02b4434&gt;] (gpio_extcon_probe+0x144/0x1d4)
    [    1.526279] [&lt;c02b4434&gt;] (gpio_extcon_probe) from [&lt;c0240170&gt;] (platform_drv_probe+0x18/0x48)
    [    1.534783] [&lt;c0240170&gt;] (platform_drv_probe) from [&lt;c023e8bc&gt;] (driver_probe_device+0x120/0x238)
    [    1.543641] [&lt;c023e8bc&gt;] (driver_probe_device) from [&lt;c023cf88&gt;] (bus_for_each_drv+0x58/0x8c)
    [    1.552143] [&lt;c023cf88&gt;] (bus_for_each_drv) from [&lt;c023e768&gt;] (device_attach+0x74/0x88)
    [    1.560126] [&lt;c023e768&gt;] (device_attach) from [&lt;c023de14&gt;] (bus_probe_device+0x84/0xa8)
    [    1.568113] [&lt;c023de14&gt;] (bus_probe_device) from [&lt;c023c398&gt;] (device_add+0x440/0x520)
    [    1.576012] [&lt;c023c398&gt;] (device_add) from [&lt;c023fee8&gt;] (platform_device_add+0xb4/0x214)
    [    1.584084] [&lt;c023fee8&gt;] (platform_device_add) from [&lt;c024048c&gt;] (platform_device_register_full+0xb8/0xdc)
    [    1.593719] [&lt;c024048c&gt;] (platform_device_register_full) from [&lt;c04c6d04&gt;] (sirfsoc_init_late+0xec/0xf4)
    [    1.603185] [&lt;c04c6d04&gt;] (sirfsoc_init_late) from [&lt;c04c249c&gt;] (init_machine_late+0x20/0x28)
    [    1.611603] [&lt;c04c249c&gt;] (init_machine_late) from [&lt;c00088e8&gt;] (do_one_initcall+0xf8/0x144)
    [    1.619934] [&lt;c00088e8&gt;] (do_one_initcall) from [&lt;c04c0c54&gt;] (kernel_init_freeable+0x13c/0x1dc)
    [    1.628620] [&lt;c04c0c54&gt;] (kernel_init_freeable) from [&lt;c03737cc&gt;] (kernel_init+0xc/0x118)

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 655dada6277991 causes kernel panic, this patch fixes it.

    [    1.197816] [ffffffee] *pgd=0d7fd821, *pte=00000000, *ppte=00000000
    [    1.204070] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
    [    1.209447] Modules linked in:
    [    1.212490] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc1 #3
    [    1.218737] task: cd03c000 ti: cd040000 task.ti: cd040000
    [    1.224127] PC is at gpiod_lock_as_irq+0xc/0x64
    [    1.228634] LR is at sirfsoc_gpio_irq_startup+0x18/0x44
    [    1.233842] pc : [&lt;c01d3990&gt;]    lr : [&lt;c01d1c38&gt;]    psr: a0000193
    [    1.233842] sp : cd041d30  ip : 00000000  fp : 00000000
    [    1.245296] r10: 00000000  r9 : cd023db4  r8 : 60000113
    [    1.250505] r7 : 0000003e  r6 : cd023dd4  r5 : c06bfa54  r4 : cd023d80
    [    1.257014] r3 : 00000020  r2 : 00000000  r1 : ffffffea  r0 : ffffffea
    [    1.263526] Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    [    1.270903] Control: 10c53c7d  Table: 00004059  DAC: 00000015
    [    1.276631] Process swapper/0 (pid: 1, stack limit = 0xcd040240)
    [    1.282620] Stack: (0xcd041d30 to 0xcd042000)
    [    1.286963] 1d20:                                     cd023d80 c01d1c38 c01d1c20 cd023d80
    [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
    [    1.286963] 1d20:                                     cd023d80 c01d1c38 c01d1c20 cd023d80
    [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
    [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
    [    1.303283] 1d60: 00000800 00000083 ccb6d880 cd023d80 c02b41d8 00000083 0000003e ccb7c410
    [    1.311442] 1d80: 00000000 c00671dc 00000083 0000003e c02b41d8 cd3dd5c0 0000003e ccb7c634
    [    1.319601] 1da0: cd040030 c00672a8 cd3dd5c0 ccb7c410 ccb6d340 ccb7c410 ccb6d340 cd3dd400
    [    1.327760] 1dc0: cd3dd410 c02b4434 ccb7c410 c01265a8 00000001 cd3dd410 c0687108 00000000
    [    1.335919] 1de0: c0687108 00000000 00000000 c0240170 c0240158 cd3dd410 c06c30d0 c023e8bc
    [    1.344079] 1e00: c023e9d4 00000000 cd3dd410 c023e9d4 c0682150 c023cf88 cd003e98 cd2d50c4
    [    1.352238] 1e20: cd3dd410 cd3dd444 c06822f0 c023e768 cd3dd418 cd3dd410 c06822f0 c023de14
    [    1.360397] 1e40: cd3dd418 00000000 cd3dd410 c023c398 cd041e78 cd041ea8 cd3dd400 cd3dd410
    [    1.368556] 1e60: 00000083 00000000 cd3dd400 cd3dd410 00000083 000000c8 c04e00c8 c023fee8
    [    1.376715] 1e80: 00000000 cd041ea8 cd3dd400 00000001 00000083 c024048c c0435ef8 c0434dec
    [    1.384874] 1ea0: c068da58 c04c6d04 c0682150 c0435ef8 ffffffff 00000000 00000000 c068da58
    [    1.393033] 1ec0: 00000020 00000000 00000000 00000000 c05dabb8 00000007 c068d640 c068d640
    [    1.401193] 1ee0: c04c247c c04c249c 00000000 c00088e8 cd004c00 c043bbb8 cd029180 c03812a0
    [    1.409352] 1f00: 00000000 00000000 60000113 c0673728 60000113 c0673728 00000000 00000000
    [    1.417511] 1f20: cd7fce01 c0390a54 00000065 c003a81c c049e8bc 00000007 cd7fce0e 00000007
    [    1.425670] 1f40: 00000000 c05dabb8 00000007 c068d640 c068d640 c04c050c c04e00c8 00000065
    [    1.433829] 1f60: c04e00c0 c04c0c54 00000007 00000007 c04c050c c037d8fc cd03c000 c004322c
    [    1.441988] 1f80: c0662b40 0000d640 c03737c0 00000000 00000000 00000000 00000000 00000000
    [    1.450147] 1fa0: 00000000 c03737cc 00000000 c000e478 00000000 00000000 00000000 00000000
    [    1.458307] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.466467] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 0002d481 05014092
    [    1.474640] [&lt;c01d3990&gt;] (gpiod_lock_as_irq) from [&lt;c01d1c38&gt;] (sirfsoc_gpio_irq_startup+0x18/0x44)
    [    1.483661] [&lt;c01d1c38&gt;] (sirfsoc_gpio_irq_startup) from [&lt;c0068438&gt;] (irq_startup+0x34/0x6c)
    [    1.492163] [&lt;c0068438&gt;] (irq_startup) from [&lt;c0067044&gt;] (__setup_irq+0x450/0x4b8)
    [    1.499714] [&lt;c0067044&gt;] (__setup_irq) from [&lt;c00671dc&gt;] (request_threaded_irq+0xa8/0x128)
    [    1.507960] [&lt;c00671dc&gt;] (request_threaded_irq) from [&lt;c00672a8&gt;] (request_any_context_irq+0x4c/0x7c)
    [    1.517164] [&lt;c00672a8&gt;] (request_any_context_irq) from [&lt;c02b4434&gt;] (gpio_extcon_probe+0x144/0x1d4)
    [    1.526279] [&lt;c02b4434&gt;] (gpio_extcon_probe) from [&lt;c0240170&gt;] (platform_drv_probe+0x18/0x48)
    [    1.534783] [&lt;c0240170&gt;] (platform_drv_probe) from [&lt;c023e8bc&gt;] (driver_probe_device+0x120/0x238)
    [    1.543641] [&lt;c023e8bc&gt;] (driver_probe_device) from [&lt;c023cf88&gt;] (bus_for_each_drv+0x58/0x8c)
    [    1.552143] [&lt;c023cf88&gt;] (bus_for_each_drv) from [&lt;c023e768&gt;] (device_attach+0x74/0x88)
    [    1.560126] [&lt;c023e768&gt;] (device_attach) from [&lt;c023de14&gt;] (bus_probe_device+0x84/0xa8)
    [    1.568113] [&lt;c023de14&gt;] (bus_probe_device) from [&lt;c023c398&gt;] (device_add+0x440/0x520)
    [    1.576012] [&lt;c023c398&gt;] (device_add) from [&lt;c023fee8&gt;] (platform_device_add+0xb4/0x214)
    [    1.584084] [&lt;c023fee8&gt;] (platform_device_add) from [&lt;c024048c&gt;] (platform_device_register_full+0xb8/0xdc)
    [    1.593719] [&lt;c024048c&gt;] (platform_device_register_full) from [&lt;c04c6d04&gt;] (sirfsoc_init_late+0xec/0xf4)
    [    1.603185] [&lt;c04c6d04&gt;] (sirfsoc_init_late) from [&lt;c04c249c&gt;] (init_machine_late+0x20/0x28)
    [    1.611603] [&lt;c04c249c&gt;] (init_machine_late) from [&lt;c00088e8&gt;] (do_one_initcall+0xf8/0x144)
    [    1.619934] [&lt;c00088e8&gt;] (do_one_initcall) from [&lt;c04c0c54&gt;] (kernel_init_freeable+0x13c/0x1dc)
    [    1.628620] [&lt;c04c0c54&gt;] (kernel_init_freeable) from [&lt;c03737cc&gt;] (kernel_init+0xc/0x118)

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: correct the pin index of ac97_pins group</title>
<updated>2014-02-03T08:08:17+00:00</updated>
<author>
<name>Qipan Li</name>
<email>Qipan.Li@csr.com</email>
</author>
<published>2014-01-27T06:01:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fa74d0d3e30cf079e94db327ea6d4726cd7d5871'/>
<id>fa74d0d3e30cf079e94db327ea6d4726cd7d5871</id>
<content type='text'>
according to datasheet and ac97_muxmask assignment, ac97_pins should be
corrected.

Signed-off-by: Qipan Li &lt;Qipan.Li@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
according to datasheet and ac97_muxmask assignment, ac97_pins should be
corrected.

Signed-off-by: Qipan Li &lt;Qipan.Li@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: lock IRQs when starting them</title>
<updated>2014-01-15T12:59:44+00:00</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2014-01-15T09:07:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=655dada62779917e2337b9abf8ab95e891cc0938'/>
<id>655dada62779917e2337b9abf8ab95e891cc0938</id>
<content type='text'>
This uses the new API for tagging GPIO lines as in use by
IRQs. This enforces a few semantic checks on how the underlying
GPIO line is used.

Also assign the gpio_chip.dev pointer to be used for error
messages.

Cc: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This uses the new API for tagging GPIO lines as in use by
IRQs. This enforces a few semantic checks on how the underlying
GPIO line is used.

Also assign the gpio_chip.dev pointer to be used for error
messages.

Cc: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: put gpio interrupt pin into input status automatically</title>
<updated>2014-01-15T08:10:00+00:00</updated>
<author>
<name>Barry Song</name>
<email>Baohua.Song@csr.com</email>
</author>
<published>2014-01-11T08:48:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b07ddcdcb28764d4deb26933d803cb38c370f01b'/>
<id>b07ddcdcb28764d4deb26933d803cb38c370f01b</id>
<content type='text'>
busses like i2c, spi and so on can parse the virq of their subnode automatically by
irq_of_parse_and_map(). for example, i2c will do that in of_i2c_register_devices().
people can put hwirq number attached to a gpio controller in dts, and drivers can
directly request the parsed virq.

for example, for an i2c client as below,
tangoc-ts@5c{
	compatible = "pixcir,tangoc-ts";
	interrupt-parent = &lt;&amp;gpio&gt;;
	interrupts = &lt;3 0&gt;;
	reg = &lt;0x5c&gt;;
};
in i2c client probe(), it will request_irq(client-&gt;irq, ...) without
calling gpio_direction_input().
so here when we set irq type, we also put the pin to input direction.

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
busses like i2c, spi and so on can parse the virq of their subnode automatically by
irq_of_parse_and_map(). for example, i2c will do that in of_i2c_register_devices().
people can put hwirq number attached to a gpio controller in dts, and drivers can
directly request the parsed virq.

for example, for an i2c client as below,
tangoc-ts@5c{
	compatible = "pixcir,tangoc-ts";
	interrupt-parent = &lt;&amp;gpio&gt;;
	interrupts = &lt;3 0&gt;;
	reg = &lt;0x5c&gt;;
};
in i2c client probe(), it will request_irq(client-&gt;irq, ...) without
calling gpio_direction_input().
so here when we set irq type, we also put the pin to input direction.

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: use only one irq_domain for the whole device node</title>
<updated>2014-01-15T08:07:56+00:00</updated>
<author>
<name>Barry Song</name>
<email>Baohua.Song@csr.com</email>
</author>
<published>2014-01-11T08:48:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8daeffb058f78deb0b0ef2cb67ef741c38788bf9'/>
<id>8daeffb058f78deb0b0ef2cb67ef741c38788bf9</id>
<content type='text'>
in sirfsoc gpio probe(), we create 5 irq_domains for 5 gpio banks. but
in irq_create_of_mapping() of irqchip core level, irq_find_host() can
only return the 1st irq_domain attached the pinctrl dt device node as
we can see from the codes:

unsigned int irq_create_of_mapping(struct device_node *controller,
				   const u32 *intspec, unsigned int intsize)
{
	struct irq_domain *domain;
	...
	domain = controller ? irq_find_host(controller) : irq_default_domain;
}

struct irq_domain *irq_find_host(struct device_node *node)
{
	struct irq_domain *h, *found = NULL;
	int rc;

	/* We might want to match the legacy controller last since
	 * it might potentially be set to match all interrupts in
	 * the absence of a device node. This isn't a problem so far
	 * yet though...
	 */
	mutex_lock(&amp;irq_domain_mutex);
	list_for_each_entry(h, &amp;irq_domain_list, link) {
		if (h-&gt;ops-&gt;match)
			rc = h-&gt;ops-&gt;match(h, node);
		else
			rc = (h-&gt;of_node != NULL) &amp;&amp; (h-&gt;of_node == node);

		if (rc) {
			found = h;
			break;
		}
	}
	mutex_unlock(&amp;irq_domain_mutex);
	return found;
}

for sirfsoc, the 1st irq_domain attached to the device_node(controller) only
can do linear for the 1st 32 gpios. so for devices who use gpio hwirq above
32 and put the information in dt like:
                                tangoc-ts@5c{
                                        compatible = "pixcir,tangoc-ts";
+                                       interrupt-parent = &lt;&amp;gpio&gt;;
+                                       interrupts = &lt;34 0&gt;;
                                };

we will fail to get the virq for these devices as hwirq will be bigger than
domain-&gt;revmap_data.linear.size in:
unsigned int irq_linear_revmap(struct irq_domain *domain,
			       irq_hw_number_t hwirq)
{

	/* Check revmap bounds; complain if exceeded */
	if (WARN_ON(hwirq &gt;= domain-&gt;revmap_data.linear.size))
		return 0;

	return domain-&gt;revmap_data.linear.revmap[hwirq];
}

this patch drops redundant irq_domain and keep only one to fix the problem.

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
in sirfsoc gpio probe(), we create 5 irq_domains for 5 gpio banks. but
in irq_create_of_mapping() of irqchip core level, irq_find_host() can
only return the 1st irq_domain attached the pinctrl dt device node as
we can see from the codes:

unsigned int irq_create_of_mapping(struct device_node *controller,
				   const u32 *intspec, unsigned int intsize)
{
	struct irq_domain *domain;
	...
	domain = controller ? irq_find_host(controller) : irq_default_domain;
}

struct irq_domain *irq_find_host(struct device_node *node)
{
	struct irq_domain *h, *found = NULL;
	int rc;

	/* We might want to match the legacy controller last since
	 * it might potentially be set to match all interrupts in
	 * the absence of a device node. This isn't a problem so far
	 * yet though...
	 */
	mutex_lock(&amp;irq_domain_mutex);
	list_for_each_entry(h, &amp;irq_domain_list, link) {
		if (h-&gt;ops-&gt;match)
			rc = h-&gt;ops-&gt;match(h, node);
		else
			rc = (h-&gt;of_node != NULL) &amp;&amp; (h-&gt;of_node == node);

		if (rc) {
			found = h;
			break;
		}
	}
	mutex_unlock(&amp;irq_domain_mutex);
	return found;
}

for sirfsoc, the 1st irq_domain attached to the device_node(controller) only
can do linear for the 1st 32 gpios. so for devices who use gpio hwirq above
32 and put the information in dt like:
                                tangoc-ts@5c{
                                        compatible = "pixcir,tangoc-ts";
+                                       interrupt-parent = &lt;&amp;gpio&gt;;
+                                       interrupts = &lt;34 0&gt;;
                                };

we will fail to get the virq for these devices as hwirq will be bigger than
domain-&gt;revmap_data.linear.size in:
unsigned int irq_linear_revmap(struct irq_domain *domain,
			       irq_hw_number_t hwirq)
{

	/* Check revmap bounds; complain if exceeded */
	if (WARN_ON(hwirq &gt;= domain-&gt;revmap_data.linear.size))
		return 0;

	return domain-&gt;revmap_data.linear.revmap[hwirq];
}

this patch drops redundant irq_domain and keep only one to fix the problem.

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: add pin group for USP0 with only RX or TX frame sync</title>
<updated>2014-01-08T09:51:10+00:00</updated>
<author>
<name>Rongjun Ying</name>
<email>Rongjun.Ying@csr.com</email>
</author>
<published>2014-01-03T02:59:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8385af02bad1724a720f6ba4c1ec590d4f082229'/>
<id>8385af02bad1724a720f6ba4c1ec590d4f082229</id>
<content type='text'>
USP0 has multiple functions, and has RX and TX frame sync signals,
for some scenarios like audio PCM, we don't need both of them.
so here we add two possibilities for USP0 only holding one of TX
and RX frame sync.

Signed-off-by: Rongjun Ying &lt;Rongjun.Ying@csr.com&gt;
Signed-off-by: Barry Song &lt;Barry.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
USP0 has multiple functions, and has RX and TX frame sync signals,
for some scenarios like audio PCM, we don't need both of them.
so here we add two possibilities for USP0 only holding one of TX
and RX frame sync.

Signed-off-by: Rongjun Ying &lt;Rongjun.Ying@csr.com&gt;
Signed-off-by: Barry Song &lt;Barry.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: fix the pins of sdmmc5 connected with TriG</title>
<updated>2014-01-08T09:50:21+00:00</updated>
<author>
<name>Bin Shi</name>
<email>Bin.Shi@csr.com</email>
</author>
<published>2014-01-03T02:59:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cbc3b873c8a152fb76a0d4d5697319d9beda3d85'/>
<id>cbc3b873c8a152fb76a0d4d5697319d9beda3d85</id>
<content type='text'>
sdmmc5 has only 3 pins CMD, CLK, DATA which are connected with CSR
TriG RF multi-GNSS. The hardware connection is like:
DATA -- GPS_SGN
CLK  -- GPS_RF_CLK
CMD  -- GPS_MAG
here we drop redundant pins in sdmmc5 group.

Signed-off-by: Bin Shi &lt;Bin.Shi@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sdmmc5 has only 3 pins CMD, CLK, DATA which are connected with CSR
TriG RF multi-GNSS. The hardware connection is like:
DATA -- GPS_SGN
CLK  -- GPS_RF_CLK
CMD  -- GPS_MAG
here we drop redundant pins in sdmmc5 group.

Signed-off-by: Bin Shi &lt;Bin.Shi@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: add lost usp1_uart_nostreamctrl group for atlas6</title>
<updated>2014-01-08T09:48:38+00:00</updated>
<author>
<name>Qipan Li</name>
<email>Qipan.Li@csr.com</email>
</author>
<published>2014-01-03T02:59:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6225633d7154f6ce005e389ef0a80ee2cc644608'/>
<id>6225633d7154f6ce005e389ef0a80ee2cc644608</id>
<content type='text'>
commit af614b2301f0e304 adds lost USP-based UART pin groups for prima2,
but missed usp1_uart_nostreamctrl group for atlas6, this patch fixes it.

this makes USP(Universal Serial Ports) port1 can work as uart without
stream ctrl.

Signed-off-by: Qipan Li &lt;Qipan.Li@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit af614b2301f0e304 adds lost USP-based UART pin groups for prima2,
but missed usp1_uart_nostreamctrl group for atlas6, this patch fixes it.

this makes USP(Universal Serial Ports) port1 can work as uart without
stream ctrl.

Signed-off-by: Qipan Li &lt;Qipan.Li@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: add USB1/UART1 pinmux usb/uart share</title>
<updated>2013-10-08T08:19:26+00:00</updated>
<author>
<name>Rong Wang</name>
<email>Rong.Wang@csr.com</email>
</author>
<published>2013-09-29T14:27:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6a08a92ec45782e5543addf5f8785e2560a078f6'/>
<id>6a08a92ec45782e5543addf5f8785e2560a078f6</id>
<content type='text'>
dn and dp of USB1 can share with UART1(UART1 can route rx,tx to dn and dp pins of USB1).
here we add this pinmux capability.
USB1/UART1 mode selection has dedicated control register in RSC module, here we attach
the register offset of private data of related pin groups.

Signed-off-by: Rong Wang &lt;Rong.Wang@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
dn and dp of USB1 can share with UART1(UART1 can route rx,tx to dn and dp pins of USB1).
here we add this pinmux capability.
USB1/UART1 mode selection has dedicated control register in RSC module, here we attach
the register offset of private data of related pin groups.

Signed-off-by: Rong Wang &lt;Rong.Wang@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>pinctrl: sirf: add lost USP-based UART pin groups for prima2</title>
<updated>2013-10-08T08:18:15+00:00</updated>
<author>
<name>Qipan Li</name>
<email>Qipan.Li@csr.com</email>
</author>
<published>2013-09-29T14:27:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=af614b2301f0e30423240a754ec2812a4c793201'/>
<id>af614b2301f0e30423240a754ec2812a4c793201</id>
<content type='text'>
USP(Universal Serial Ports) can be UART as commit 5df831117b85a08e7aa,
this patch defines the USP-based UART function pin groups for prima2.

Signed-off-by: Qipan Li &lt;Qipan.Li@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
USP(Universal Serial Ports) can be UART as commit 5df831117b85a08e7aa,
this patch defines the USP-based UART function pin groups for prima2.

Signed-off-by: Qipan Li &lt;Qipan.Li@csr.com&gt;
Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
