PSCI v1.0 augmented the power_state parameter format specification (extended stateid) and introduced a way to probe it through the PSCI_FEATURES interface. This patch implements code that detects the power_state format at run-time through the PSCI_FEATURES interface, so that the power_state argument can be properly detected and validated in the kernel according to the information provided through firmware.
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -58,6 +58,13 @@ · 57 unmodified lines | ||
| 58 | 58 | #define PSCI_0_2_POWER_STATE_AFFL_MASK \ |
| 59 | 59 | (0x3 << PSCI_0_2_POWER_STATE_AFFL_SHIFT) |
| 60 | 60 | |
| 61 | +/* PSCI extended power state encoding for CPU_SUSPEND function */ | |
| 62 | +#define PSCI_1_0_EXT_POWER_STATE_ID_MASK 0xfffffff | |
| 63 | +#define PSCI_1_0_EXT_POWER_STATE_ID_SHIFT 0 | |
| 64 | +#define PSCI_1_0_EXT_POWER_STATE_TYPE_SHIFT 30 | |
| 65 | +#define PSCI_1_0_EXT_POWER_STATE_TYPE_MASK \ | |
| 66 | + (0x1 << PSCI_1_0_EXT_POWER_STATE_TYPE_SHIFT) | |
| 67 | + | |
| 61 | 68 | /* PSCI v0.2 affinity level state returned by AFFINITY_INFO */ |
| 62 | 69 | #define PSCI_0_2_AFFINITY_LEVEL_ON 0 |
| 63 | 70 | #define PSCI_0_2_AFFINITY_LEVEL_OFF 1 |
| @@ -78,6 +85,11 @@ · 14 unmodified lines | ||
| 78 | 85 | #define PSCI_VERSION_MINOR(ver) \ |
| 79 | 86 | ((ver) & PSCI_VERSION_MINOR_MASK) |
| 80 | 87 | |
| 88 | +/* PSCI features decoding (>=1.0) */ | |
| 89 | +#define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT 1 | |
| 90 | +#define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK \ | |
| 91 | + (0x1 << PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT) | |
| 92 | + | |
| 81 | 93 | /* PSCI return values (inclusive of all PSCI versions) */ |
| 82 | 94 | #define PSCI_RET_SUCCESS 0 |
| 83 | 95 | #define PSCI_RET_NOT_SUPPORTED -1 |