|
@@ -7,32 +7,14 @@ world, which changes the way some things have to be initialized. This makes
|
|
|
a need to provide an interface for such platforms to specify available firmware
|
|
|
operations and call them when needed.
|
|
|
|
|
|
-Firmware operations can be specified using struct firmware_ops
|
|
|
-
|
|
|
- struct firmware_ops {
|
|
|
- /*
|
|
|
- * Enters CPU idle mode
|
|
|
- */
|
|
|
- int (*do_idle)(void);
|
|
|
- /*
|
|
|
- * Sets boot address of specified physical CPU
|
|
|
- */
|
|
|
- int (*set_cpu_boot_addr)(int cpu, unsigned long boot_addr);
|
|
|
- /*
|
|
|
- * Boots specified physical CPU
|
|
|
- */
|
|
|
- int (*cpu_boot)(int cpu);
|
|
|
- /*
|
|
|
- * Initializes L2 cache
|
|
|
- */
|
|
|
- int (*l2x0_init)(void);
|
|
|
- };
|
|
|
-
|
|
|
-and then registered with register_firmware_ops function
|
|
|
+Firmware operations can be specified by filling in a struct firmware_ops
|
|
|
+with appropriate callbacks and then registering it with register_firmware_ops()
|
|
|
+function.
|
|
|
|
|
|
void register_firmware_ops(const struct firmware_ops *ops)
|
|
|
|
|
|
-the ops pointer must be non-NULL.
|
|
|
+The ops pointer must be non-NULL. More information about struct firmware_ops
|
|
|
+and its members can be found in arch/arm/include/asm/firmware.h header.
|
|
|
|
|
|
There is a default, empty set of operations provided, so there is no need to
|
|
|
set anything if platform does not require firmware operations.
|