lkml.org 
[lkml]   [2015]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 01/10] irqchip: irq-mips-gic: export gic_send_ipi
    On Fri, 28 Aug 2015, Qais Yousef wrote:
    > Thanks a lot for the detailed explanation. I wasn't looking for a quick and
    > dirty solution but my view of the problem is much simpler than yours so my
    > idea of a solution would look quick and dirty. I have a better appreciation of
    > the problem now and a way to approach it :-)
    >
    > From DT point of view are we OK with this form then
    >
    > coprocessor {
    > interrupt-source = <&intc INT_SPEC COP_HWAFFINITY>;
    > interrupt-sink = <&intc INT_SPEC CPU_HWAFFINITY>;
    > }
    >
    > and if the root controller sends normal IPI as it sends normal device
    > interrupts then interrupt-sink can be a standard interrupts property (like in
    > my case)
    >
    > coprocessor {
    > interrupt-source = <&intc INT_SPEC COP_HWAFFINITY>;
    > interrupts = <INT_SPEC>;
    > }
    >
    > Does this look right to you? Is there something else that needs to be covered
    > still?

    I'm not an DT wizard. I leave that to the DT experts.

    > One more thing I can think of now is that the coprocessor will need the raw
    > irq numbers that are picked by linux so that it can use them to trigger the
    > IPI. Are we ok to add a function that returns this raw irq number (as opposed
    > to linux irq number) directly from DT? The way this is communicated to the
    > coprocessor will be platform specific.

    Why do you want that to be hacked into DT?

    > > To configure your coprocessor proper, we need a translation
    > > mechanism from the linux interrupt number to the magic value which
    > > needs to be written into the trigger register when the coprocessor
    > > wants to send an interrupt or an IPI.
    > >
    > > int irq_get_irq_hwcfg(unsigned int irq, struct irq_hwcfg *cfg);
    > >
    > > struct irq_hwcfg needs to be defined, but it might look like this:
    > >
    > > {
    > > /* Generic fields */
    > > x;
    > > ...
    > > union {
    > > mips_gic;
    > > ...
    > > };
    > > };

    That function provides you the information which you have to hand over
    to your coprocessor firmware.

    Thanks,

    tglx


    \
     
     \ /
      Last update: 2015-08-28 16:41    [W:4.896 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site