xref: /qemu/include/hw/arm/linux-boot-if.h (revision d8b1ae4237b5f8cf5037a7f341ff43dc02955256)
1*d8b1ae42SPeter Maydell /*
2*d8b1ae42SPeter Maydell  * hw/arm/linux-boot-if.h : interface for devices which need to behave
3*d8b1ae42SPeter Maydell  * specially for direct boot of an ARM Linux kernel
4*d8b1ae42SPeter Maydell  */
5*d8b1ae42SPeter Maydell 
6*d8b1ae42SPeter Maydell #ifndef HW_ARM_LINUX_BOOT_IF_H
7*d8b1ae42SPeter Maydell #define HW_ARM_LINUX_BOOT_IF_H
8*d8b1ae42SPeter Maydell 
9*d8b1ae42SPeter Maydell #include "qom/object.h"
10*d8b1ae42SPeter Maydell 
11*d8b1ae42SPeter Maydell #define TYPE_ARM_LINUX_BOOT_IF "arm-linux-boot-if"
12*d8b1ae42SPeter Maydell #define ARM_LINUX_BOOT_IF_CLASS(klass) \
13*d8b1ae42SPeter Maydell     OBJECT_CLASS_CHECK(ARMLinuxBootIfClass, (klass), TYPE_ARM_LINUX_BOOT_IF)
14*d8b1ae42SPeter Maydell #define ARM_LINUX_BOOT_IF_GET_CLASS(obj) \
15*d8b1ae42SPeter Maydell     OBJECT_GET_CLASS(ARMLinuxBootIfClass, (obj), TYPE_ARM_LINUX_BOOT_IF)
16*d8b1ae42SPeter Maydell #define ARM_LINUX_BOOT_IF(obj) \
17*d8b1ae42SPeter Maydell     INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF)
18*d8b1ae42SPeter Maydell 
19*d8b1ae42SPeter Maydell typedef struct ARMLinuxBootIf {
20*d8b1ae42SPeter Maydell     /*< private >*/
21*d8b1ae42SPeter Maydell     Object parent_obj;
22*d8b1ae42SPeter Maydell } ARMLinuxBootIf;
23*d8b1ae42SPeter Maydell 
24*d8b1ae42SPeter Maydell typedef struct ARMLinuxBootIfClass {
25*d8b1ae42SPeter Maydell     /*< private >*/
26*d8b1ae42SPeter Maydell     InterfaceClass parent_class;
27*d8b1ae42SPeter Maydell 
28*d8b1ae42SPeter Maydell     /*< public >*/
29*d8b1ae42SPeter Maydell     /** arm_linux_init: configure the device for a direct boot
30*d8b1ae42SPeter Maydell      * of an ARM Linux kernel (so that device reset puts it into
31*d8b1ae42SPeter Maydell      * the state the kernel expects after firmware initialization,
32*d8b1ae42SPeter Maydell      * rather than the true hardware reset state). This callback is
33*d8b1ae42SPeter Maydell      * called once after machine construction is complete (before the
34*d8b1ae42SPeter Maydell      * first system reset).
35*d8b1ae42SPeter Maydell      *
36*d8b1ae42SPeter Maydell      * @obj: the object implementing this interface
37*d8b1ae42SPeter Maydell      * @secure_boot: true if we are booting Secure, false for NonSecure
38*d8b1ae42SPeter Maydell      * (or for a CPU which doesn't support TrustZone)
39*d8b1ae42SPeter Maydell      */
40*d8b1ae42SPeter Maydell     void (*arm_linux_init)(ARMLinuxBootIf *obj, bool secure_boot);
41*d8b1ae42SPeter Maydell } ARMLinuxBootIfClass;
42*d8b1ae42SPeter Maydell 
43*d8b1ae42SPeter Maydell #endif
44