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