[U-Boot] [PATCH 4/4] x86: queensbay: Implement PIRQ routing

Bin Meng bmeng.cn at gmail.com
Fri Apr 24 05:47:31 CEST 2015


Hi Simon,

On Fri, Apr 24, 2015 at 11:39 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 23 April 2015 at 21:36, Bin Meng <bmeng.cn at gmail.com> wrote:
>> Hi Simon,
>>
>> On Fri, Apr 24, 2015 at 11:02 AM, Simon Glass <sjg at chromium.org> wrote:
>>> Hi Bin,
>>>
>>> On 21 April 2015 at 19:56, Bin Meng <bmeng.cn at gmail.com> wrote:
>>>> Implement Intel Queensbay platform-specific PIRQ routing support.
>>>> The chipset PIRQ routing setup is called in the arch_mist_init().
>>>
>>> arch_misc_init()?
>>
>> Will fix.
>>
>>> Also how can this be used on other boards? Should part of this code be
>>> moved to a generic place?
>>
>> Generally Intel interrupt router should be compatible, but the offsets
>> of these interrupt routing registers might be different from platform
>> to platform. The platform-specific part is the internal PCI devices'
>> interrupt pin to PIRQ map.
>>
>>>>
>>>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>>>>
>>>> ---
>>>>
>>>>  arch/x86/cpu/queensbay/Makefile              |   2 +-
>>>>  arch/x86/cpu/queensbay/irq.c                 | 236 +++++++++++++++++++++++++++
>>>>  arch/x86/cpu/queensbay/tnc.c                 |  10 +-
>>>>  arch/x86/include/asm/arch-queensbay/device.h |  94 +++++++++++
>>>>  arch/x86/include/asm/arch-queensbay/irq.h    |  55 +++++++
>>>>  arch/x86/include/asm/arch-queensbay/tnc.h    |  26 ++-
>>>>  arch/x86/include/asm/u-boot-x86.h            |   2 +
>>>>  configs/crownbay_defconfig                   |   1 +
>>>>  include/configs/crownbay.h                   |   1 +
>>>>  9 files changed, 423 insertions(+), 4 deletions(-)
>>>>  create mode 100644 arch/x86/cpu/queensbay/irq.c
>>>>  create mode 100644 arch/x86/include/asm/arch-queensbay/device.h
>>>>  create mode 100644 arch/x86/include/asm/arch-queensbay/irq.h
>>>>
> [snip]
>
>>>> +       writew(PIRQE, rcba + D02IR);
>>>> +       writew(PIRQF, rcba + D03IR);
>>>> +       writew(PIRQG, rcba + D27IR);
>>>> +       writew(PIRQH, rcba + D31IR);
>>>> +       writew(PIRQE, rcba + D23IR);
>>>> +       writew(PIRQF, rcba + D24IR);
>>>> +       writew(PIRQG, rcba + D25IR);
>>>> +       writew(PIRQH, rcba + D26IR);
>>>> +
>>>> +       if (!create_pirq_routing_table()) {
>>>
>>> Can you add a comment here as to why you do this next bit if
>>> create_pirq_routing_table() fails?
>>
>> I am not sure if you misread the codes? If create_pirq_routing_table()
>> fails, it returns non-zero value and the following pirq_route_irqs()
>> will not be called.
>
> Yes I misread it. So should this function return the error code it
> gets? Or maybe add debug()?

Yep, adding one debug() is nice. Will do that in v2.

>>
>>>> +               /* Route PIRQ */
>>>> +               pirq_route_irqs(pirq_routing_table->slots,
>>>> +                               get_irq_slot_count(pirq_routing_table));
>>>> +       }
>>>> +}
>>>> +

Regards,
Bin


More information about the U-Boot mailing list