power: zynqmp: Add power domain driver for ZynqMP
Driver should be enabled by CONFIG_POWER_DOMAIN=y and CONFIG_ZYNQMP_POWER_DOMAIN=y. Power domain driver doesn't have own DT node but it uses zynqmp firmware DT node that's why there is a need to bind driver when firmware node is found. Driver itself is simple. It is sending pmufw config object overlay for enabling access to device which is done in ...domain_request(). In ...domain_on() capabilities are passed and node is requested. This should be bare minimum of required to get power domain driver working. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com> Link: https://lore.kernel.org/r/f4b9433b91c0b18c375b061c7a4e29d428f70547.1644226055.git.michal.simek@xilinx.com
This commit is contained in:
@@ -371,4 +371,35 @@ void zynqmp_pmufw_load_config_object(const void *cfg_obj, size_t size);
|
||||
int xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2,
|
||||
u32 arg3, u32 *ret_payload);
|
||||
|
||||
/* Type of Config Object */
|
||||
#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U
|
||||
#define PM_CONFIG_OBJECT_TYPE_OVERLAY 0x2U
|
||||
|
||||
/* Section Id */
|
||||
#define PM_CONFIG_SLAVE_SECTION_ID 0x102U
|
||||
#define PM_CONFIG_SET_CONFIG_SECTION_ID 0x107U
|
||||
|
||||
/* Flag Option */
|
||||
#define PM_SLAVE_FLAG_IS_SHAREABLE 0x1U
|
||||
#define PM_MASTER_USING_SLAVE_MASK 0x2U
|
||||
|
||||
/* IPI Mask for Master */
|
||||
#define PM_CONFIG_IPI_PSU_CORTEXA53_0_MASK 0x00000001
|
||||
#define PM_CONFIG_IPI_PSU_CORTEXR5_0_MASK 0x00000100
|
||||
#define PM_CONFIG_IPI_PSU_CORTEXR5_1_MASK 0x00000200
|
||||
|
||||
enum zynqmp_pm_request_ack {
|
||||
ZYNQMP_PM_REQUEST_ACK_NO = 1,
|
||||
ZYNQMP_PM_REQUEST_ACK_BLOCKING = 2,
|
||||
ZYNQMP_PM_REQUEST_ACK_NON_BLOCKING = 3,
|
||||
};
|
||||
|
||||
/* Node capabilities */
|
||||
#define ZYNQMP_PM_CAPABILITY_ACCESS 0x1U
|
||||
#define ZYNQMP_PM_CAPABILITY_CONTEXT 0x2U
|
||||
#define ZYNQMP_PM_CAPABILITY_WAKEUP 0x4U
|
||||
#define ZYNQMP_PM_CAPABILITY_UNUSABLE 0x8U
|
||||
|
||||
#define ZYNQMP_PM_MAX_QOS 100U
|
||||
|
||||
#endif /* _ZYNQMP_FIRMWARE_H_ */
|
||||
|
||||
Reference in New Issue
Block a user