ppc/xics: introduce a XICSFabric QOM interface to handle ICSs
This interface provides two simple handlers. One is to get an ICS (Interrupt Source Controller) object from an irq number and a second to resend the irqs when needed. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
b9038e7806
commit
51b180051e
@ -745,6 +745,12 @@ static const TypeInfo ics_base_info = {
|
|||||||
.class_size = sizeof(ICSStateClass),
|
.class_size = sizeof(ICSStateClass),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const TypeInfo xics_fabric_info = {
|
||||||
|
.name = TYPE_XICS_FABRIC,
|
||||||
|
.parent = TYPE_INTERFACE,
|
||||||
|
.class_size = sizeof(XICSFabricClass),
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exported functions
|
* Exported functions
|
||||||
*/
|
*/
|
||||||
@ -785,6 +791,7 @@ static void xics_register_types(void)
|
|||||||
type_register_static(&ics_simple_info);
|
type_register_static(&ics_simple_info);
|
||||||
type_register_static(&ics_base_info);
|
type_register_static(&ics_base_info);
|
||||||
type_register_static(&icp_info);
|
type_register_static(&icp_info);
|
||||||
|
type_register_static(&xics_fabric_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(xics_register_types)
|
type_init(xics_register_types)
|
||||||
|
@ -178,6 +178,24 @@ struct ICSIRQState {
|
|||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct XICSFabric {
|
||||||
|
Object parent;
|
||||||
|
} XICSFabric;
|
||||||
|
|
||||||
|
#define TYPE_XICS_FABRIC "xics-fabric"
|
||||||
|
#define XICS_FABRIC(obj) \
|
||||||
|
OBJECT_CHECK(XICSFabric, (obj), TYPE_XICS_FABRIC)
|
||||||
|
#define XICS_FABRIC_CLASS(klass) \
|
||||||
|
OBJECT_CLASS_CHECK(XICSFabricClass, (klass), TYPE_XICS_FABRIC)
|
||||||
|
#define XICS_FABRIC_GET_CLASS(obj) \
|
||||||
|
OBJECT_GET_CLASS(XICSFabricClass, (obj), TYPE_XICS_FABRIC)
|
||||||
|
|
||||||
|
typedef struct XICSFabricClass {
|
||||||
|
InterfaceClass parent;
|
||||||
|
ICSState *(*ics_get)(XICSFabric *xi, int irq);
|
||||||
|
void (*ics_resend)(XICSFabric *xi);
|
||||||
|
} XICSFabricClass;
|
||||||
|
|
||||||
#define XICS_IRQS_SPAPR 1024
|
#define XICS_IRQS_SPAPR 1024
|
||||||
|
|
||||||
qemu_irq xics_get_qirq(XICSState *icp, int irq);
|
qemu_irq xics_get_qirq(XICSState *icp, int irq);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user