diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2016-07-07 11:50:05 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-07-13 17:06:24 +1000 |
commit | 24cd81df5b0bf584a0d382b84f45099db46aa727 (patch) | |
tree | f53317c37af8c0f18a205f00e2e4dafd5fac004f /hw/psi.c | |
parent | 1d5643c568f444c52e914013bc090ea55469cf49 (diff) | |
download | skiboot-24cd81df5b0bf584a0d382b84f45099db46aa727.zip skiboot-24cd81df5b0bf584a0d382b84f45099db46aa727.tar.gz skiboot-24cd81df5b0bf584a0d382b84f45099db46aa727.tar.bz2 |
interrupts: Expose irq_source and change prototypes of all ops
This makes irq_source public, and change all irq_source_ops to take
the source pointer as a first argument (they can still dig the void *
data out of that).
This will allow us to embed/wrap it for XIVE later on.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/psi.c')
-rw-r--r-- | hw/psi.c | 29 |
1 files changed, 15 insertions, 14 deletions
@@ -343,9 +343,9 @@ bool psi_poll_fsp_interrupt(struct psi *psi) return !!(in_be64(psi->regs + PSIHB_CR) & PSIHB_CR_FSP_IRQ); } -static void psi_interrupt(void *data, uint32_t isn __unused) +static void psi_interrupt(struct irq_source *is, uint32_t isn __unused) { - struct psi *psi = data; + struct psi *psi = is->data; u64 val; val = in_be64(psi->regs + PSIHB_CR); @@ -395,10 +395,10 @@ static void psi_interrupt(void *data, uint32_t isn __unused) fsp_console_poll(NULL); } -static int64_t psi_p7_set_xive(void *data, uint32_t isn __unused, - uint16_t server, uint8_t priority) +static int64_t psi_p7_set_xive(struct irq_source *is, uint32_t isn __unused, + uint16_t server, uint8_t priority) { - struct psi *psi = data; + struct psi *psi = is->data; uint64_t xivr; if (!psi->working) @@ -414,10 +414,10 @@ static int64_t psi_p7_set_xive(void *data, uint32_t isn __unused, return OPAL_SUCCESS; } -static int64_t psi_p7_get_xive(void *data, uint32_t isn __unused, - uint16_t *server, uint8_t *priority) +static int64_t psi_p7_get_xive(struct irq_source *is, uint32_t isn __unused, + uint16_t *server, uint8_t *priority) { - struct psi *psi = data; + struct psi *psi = is->data; uint64_t xivr; if (!psi->working) @@ -432,10 +432,10 @@ static int64_t psi_p7_get_xive(void *data, uint32_t isn __unused, return OPAL_SUCCESS; } -static int64_t psi_p8_set_xive(void *data, uint32_t isn, - uint16_t server, uint8_t priority) +static int64_t psi_p8_set_xive(struct irq_source *is, uint32_t isn, + uint16_t server, uint8_t priority) { - struct psi *psi = data; + struct psi *psi = is->data; uint64_t xivr_p, xivr; switch(isn & 7) { @@ -471,10 +471,10 @@ static int64_t psi_p8_set_xive(void *data, uint32_t isn, return OPAL_SUCCESS; } -static int64_t psi_p8_get_xive(void *data, uint32_t isn __unused, - uint16_t *server, uint8_t *priority) +static int64_t psi_p8_get_xive(struct irq_source *is, uint32_t isn __unused, + uint16_t *server, uint8_t *priority) { - struct psi *psi = data; + struct psi *psi = is->data; uint64_t xivr_p, xivr; switch(isn & 7) { @@ -919,3 +919,4 @@ void psi_init(void) dt_for_each_compatible(dt_root, np, "ibm,psihb-x") psi_init_psihb(np); } + |