cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

firmware.h (1728B)


      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 */
     20struct 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. */
     56extern 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 */
     72static inline void register_firmware_ops(const struct firmware_ops *ops)
     73{
     74	BUG_ON(!ops);
     75
     76	firmware_ops = ops;
     77}
     78
     79#endif