[Skiboot] [PATCH v2 2/5] hw/psi-p9: Make interrupt name array global
Oliver O'Halloran
oohall at gmail.com
Thu Sep 5 13:08:42 AEST 2019
The array is currently a static constant inside psi_p9_irq_name() which
returns a malloc()ed pointer due to the API required by the interrupt
source ops interface. Make the name array a static global and move it
further up in the file so we can use it in other functions.
Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
---
hw/psi.c | 54 +++++++++++++++++++++++++++---------------------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/hw/psi.c b/hw/psi.c
index a74c105ff0ec..99ec06ac488a 100644
--- a/hw/psi.c
+++ b/hw/psi.c
@@ -509,6 +509,33 @@ static const struct irq_source_ops psi_p8_irq_ops = {
.name = psi_p8_irq_name,
};
+static const char *p9_psi_int_names[P9_PSI_NUM_IRQS] = {
+ "psi:fsp",
+ "psi:occ",
+ "psi:fsi",
+ "psi:lpchc",
+ "psi:local_err",
+ "psi:global_err",
+ "psi:external",
+ "psi:lpc_serirq_mux0", /* Have a callback to get name ? */
+ "psi:lpc_serirq_mux1", /* Have a callback to get name ? */
+ "psi:lpc_serirq_mux2", /* Have a callback to get name ? */
+ "psi:lpc_serirq_mux3", /* Have a callback to get name ? */
+ "psi:i2c",
+ "psi:dio",
+ "psi:psu"
+};
+
+static char *psi_p9_irq_name(struct irq_source *is, uint32_t isn)
+{
+ struct psi *psi = is->data;
+ uint32_t idx = isn - psi->interrupt;
+
+ if (idx >= ARRAY_SIZE(p9_psi_int_names))
+ return NULL;
+ return strdup(p9_psi_int_names[idx]);
+}
+
static void psihb_p9_interrupt(struct irq_source *is, uint32_t isn)
{
struct psi *psi = is->data;
@@ -583,33 +610,6 @@ static uint64_t psi_p9_irq_attributes(struct irq_source *is __unused,
return IRQ_ATTR_TARGET_OPAL | IRQ_ATTR_TYPE_LSI;
}
-static char *psi_p9_irq_name(struct irq_source *is, uint32_t isn)
-{
- struct psi *psi = is->data;
- uint32_t idx = isn - psi->interrupt;
-
- static const char *names[P9_PSI_NUM_IRQS] = {
- "psi:fsp",
- "psi:occ",
- "psi:fsi",
- "psi:lpchc",
- "psi:local_err",
- "psi:global_err",
- "psi:external",
- "psi:lpc_serirq_mux0", /* Have a callback to get name ? */
- "psi:lpc_serirq_mux1", /* Have a callback to get name ? */
- "psi:lpc_serirq_mux2", /* Have a callback to get name ? */
- "psi:lpc_serirq_mux3", /* Have a callback to get name ? */
- "psi:i2c",
- "psi:dio",
- "psi:psu"
- };
-
- if (idx >= P9_PSI_NUM_IRQS)
- return NULL;
- return strdup(names[idx]);
-}
-
static const struct irq_source_ops psi_p9_irq_ops = {
.interrupt = psihb_p9_interrupt,
.attributes = psi_p9_irq_attributes,
--
2.21.0
More information about the Skiboot
mailing list