root/arch/arm/include/asm/firmware.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. register_firmware_ops

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) 2012 Samsung Electronics.
   4  * Kyungmin Park <kyungmin.park@samsung.com>
   5  * Tomasz Figa <t.figa@samsung.com>
   6  */
   7 
   8 #ifndef __ASM_ARM_FIRMWARE_H
   9 #define __ASM_ARM_FIRMWARE_H
  10 
  11 #include <linux/bug.h>
  12 
  13 /*
  14  * struct firmware_ops
  15  *
  16  * A structure to specify available firmware operations.
  17  *
  18  * A filled up structure can be registered with register_firmware_ops().
  19  */
  20 struct firmware_ops {
  21         /*
  22          * Inform the firmware we intend to enter CPU idle mode
  23          */
  24         int (*prepare_idle)(unsigned long mode);
  25         /*
  26          * Enters CPU idle mode
  27          */
  28         int (*do_idle)(unsigned long mode);
  29         /*
  30          * Sets boot address of specified physical CPU
  31          */
  32         int (*set_cpu_boot_addr)(int cpu, unsigned long boot_addr);
  33         /*
  34          * Gets boot address of specified physical CPU
  35          */
  36         int (*get_cpu_boot_addr)(int cpu, unsigned long *boot_addr);
  37         /*
  38          * Boots specified physical CPU
  39          */
  40         int (*cpu_boot)(int cpu);
  41         /*
  42          * Initializes L2 cache
  43          */
  44         int (*l2x0_init)(void);
  45         /*
  46          * Enter system-wide suspend.
  47          */
  48         int (*suspend)(void);
  49         /*
  50          * Restore state of privileged hardware after system-wide suspend.
  51          */
  52         int (*resume)(void);
  53 };
  54 
  55 /* Global pointer for current firmware_ops structure, can't be NULL. */
  56 extern const struct firmware_ops *firmware_ops;
  57 
  58 /*
  59  * call_firmware_op(op, ...)
  60  *
  61  * Checks if firmware operation is present and calls it,
  62  * otherwise returns -ENOSYS
  63  */
  64 #define call_firmware_op(op, ...)                                       \
  65         ((firmware_ops->op) ? firmware_ops->op(__VA_ARGS__) : (-ENOSYS))
  66 
  67 /*
  68  * register_firmware_ops(ops)
  69  *
  70  * A function to register platform firmware_ops struct.
  71  */
  72 static inline void register_firmware_ops(const struct firmware_ops *ops)
  73 {
  74         BUG_ON(!ops);
  75 
  76         firmware_ops = ops;
  77 }
  78 
  79 #endif

/* [<][>][^][v][top][bottom][index][help] */