Merge tag 'v5.5-next-soc' of https://git.kernel.org/pub/scm/linux/kernel/git/matthias.bgg/linux into arm/drivers
cmdq: - clean ups of unused code and debuggability - add cmdq_instruction to make the function call interface more readable - add functions for polling and providing info for the user of cmdq scpsys: - add bindings for MT6765 * tag 'v5.5-next-soc' of https://git.kernel.org/pub/scm/linux/kernel/git/matthias.bgg/linux: dt-bindings: mediatek: add MT6765 power dt-bindings soc: mediatek: cmdq: delete not used define soc: mediatek: cmdq: add cmdq_dev_get_client_reg function soc: mediatek: cmdq: add polling function soc: mediatek: cmdq: define the instruction struct soc: mediatek: cmdq: remove OR opertaion from err return Link: https://lore.kernel.org/r/9b365e76-e346-f813-d750-d7cfd0d16e4e@gmail.com Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
@@ -15,6 +15,12 @@
|
||||
|
||||
struct cmdq_pkt;
|
||||
|
||||
struct cmdq_client_reg {
|
||||
u8 subsys;
|
||||
u16 offset;
|
||||
u16 size;
|
||||
};
|
||||
|
||||
struct cmdq_client {
|
||||
spinlock_t lock;
|
||||
u32 pkt_cnt;
|
||||
@@ -24,6 +30,21 @@ struct cmdq_client {
|
||||
u32 timeout_ms; /* in unit of microsecond */
|
||||
};
|
||||
|
||||
/**
|
||||
* cmdq_dev_get_client_reg() - parse cmdq client reg from the device
|
||||
* node of CMDQ client
|
||||
* @dev: device of CMDQ mailbox client
|
||||
* @client_reg: CMDQ client reg pointer
|
||||
* @idx: the index of desired reg
|
||||
*
|
||||
* Return: 0 for success; else the error code is returned
|
||||
*
|
||||
* Help CMDQ client parsing the cmdq client reg
|
||||
* from the device node of CMDQ client.
|
||||
*/
|
||||
int cmdq_dev_get_client_reg(struct device *dev,
|
||||
struct cmdq_client_reg *client_reg, int idx);
|
||||
|
||||
/**
|
||||
* cmdq_mbox_create() - create CMDQ mailbox client and channel
|
||||
* @dev: device of CMDQ mailbox client
|
||||
@@ -99,6 +120,38 @@ int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event);
|
||||
*/
|
||||
int cmdq_pkt_clear_event(struct cmdq_pkt *pkt, u16 event);
|
||||
|
||||
/**
|
||||
* cmdq_pkt_poll() - Append polling command to the CMDQ packet, ask GCE to
|
||||
* execute an instruction that wait for a specified
|
||||
* hardware register to check for the value w/o mask.
|
||||
* All GCE hardware threads will be blocked by this
|
||||
* instruction.
|
||||
* @pkt: the CMDQ packet
|
||||
* @subsys: the CMDQ sub system code
|
||||
* @offset: register offset from CMDQ sub system
|
||||
* @value: the specified target register value
|
||||
*
|
||||
* Return: 0 for success; else the error code is returned
|
||||
*/
|
||||
int cmdq_pkt_poll(struct cmdq_pkt *pkt, u8 subsys,
|
||||
u16 offset, u32 value);
|
||||
|
||||
/**
|
||||
* cmdq_pkt_poll_mask() - Append polling command to the CMDQ packet, ask GCE to
|
||||
* execute an instruction that wait for a specified
|
||||
* hardware register to check for the value w/ mask.
|
||||
* All GCE hardware threads will be blocked by this
|
||||
* instruction.
|
||||
* @pkt: the CMDQ packet
|
||||
* @subsys: the CMDQ sub system code
|
||||
* @offset: register offset from CMDQ sub system
|
||||
* @value: the specified target register value
|
||||
* @mask: the specified target register mask
|
||||
*
|
||||
* Return: 0 for success; else the error code is returned
|
||||
*/
|
||||
int cmdq_pkt_poll_mask(struct cmdq_pkt *pkt, u8 subsys,
|
||||
u16 offset, u32 value, u32 mask);
|
||||
/**
|
||||
* cmdq_pkt_flush_async() - trigger CMDQ to asynchronously execute the CMDQ
|
||||
* packet and call back at the end of done packet
|
||||
|
Reference in New Issue
Block a user