1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2016 - Beniamino Galvani <b.galvani@gmail.com> 4 */ 5 6 #ifndef __MESON_SM_H__ 7 #define __MESON_SM_H__ 8 9 /** 10 * meson_sm_read_efuse - read efuse memory into buffer 11 * 12 * @offset: offset from the start efuse memory 13 * @buffer: pointer to buffer 14 * @size: number of bytes to read 15 * @return: number of bytes read 16 */ 17 ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size); 18 19 /** 20 * meson_sm_write_efuse - write into efuse memory from buffer 21 * 22 * @offset: offset from the start efuse memory 23 * @buffer: pointer to buffer 24 * @size: number of bytes to write 25 * @return: number of bytes written 26 */ 27 ssize_t meson_sm_write_efuse(uintptr_t offset, void *buffer, size_t size); 28 29 #define SM_SERIAL_SIZE 12 30 31 /** 32 * meson_sm_get_serial - read chip unique id into buffer 33 * 34 * @buffer: pointer to buffer 35 * @size: buffer size. 36 * @return: zero on success or -errno on failure 37 */ 38 int meson_sm_get_serial(void *buffer, size_t size); 39 40 enum { 41 REBOOT_REASON_COLD = 0, 42 REBOOT_REASON_NORMAL = 1, 43 REBOOT_REASON_RECOVERY = 2, 44 REBOOT_REASON_UPDATE = 3, 45 REBOOT_REASON_FASTBOOT = 4, 46 REBOOT_REASON_SUSPEND_OFF = 5, 47 REBOOT_REASON_HIBERNATE = 6, 48 REBOOT_REASON_BOOTLOADER = 7, 49 REBOOT_REASON_SHUTDOWN_REBOOT = 8, 50 REBOOT_REASON_RPMBP = 9, 51 REBOOT_REASON_CRASH_DUMP = 11, 52 REBOOT_REASON_KERNEL_PANIC = 12, 53 REBOOT_REASON_WATCHDOG_REBOOT = 13, 54 }; 55 56 /** 57 * meson_sm_get_reboot_reason - get reboot reason 58 */ 59 int meson_sm_get_reboot_reason(void); 60 61 #endif /* __MESON_SM_H__ */ 62