aboutsummaryrefslogtreecommitdiff
path: root/hw/psi.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2016-07-07 11:50:05 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-07-13 17:06:24 +1000
commit24cd81df5b0bf584a0d382b84f45099db46aa727 (patch)
treef53317c37af8c0f18a205f00e2e4dafd5fac004f /hw/psi.c
parent1d5643c568f444c52e914013bc090ea55469cf49 (diff)
downloadskiboot-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.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/hw/psi.c b/hw/psi.c
index 46e059a..3efc177 100644
--- a/hw/psi.c
+++ b/hw/psi.c
@@ -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);
}
+