diff options
Diffstat (limited to 'drivers/firmware/arm_scmi')
| -rw-r--r-- | drivers/firmware/arm_scmi/clock.c | 5 | ||||
| -rw-r--r-- | drivers/firmware/arm_scmi/driver.c | 3 | ||||
| -rw-r--r-- | drivers/firmware/arm_scmi/optee.c | 8 | 
3 files changed, 9 insertions, 7 deletions
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c index cf6fed6dec77..45600acc0f45 100644 --- a/drivers/firmware/arm_scmi/clock.c +++ b/drivers/firmware/arm_scmi/clock.c @@ -49,7 +49,7 @@ struct scmi_msg_resp_clock_describe_rates {  	struct {  		__le32 value_low;  		__le32 value_high; -	} rate[0]; +	} rate[];  #define RATE_TO_U64(X)		\  ({				\  	typeof(X) x = (X);	\ @@ -210,7 +210,8 @@ scmi_clock_describe_rates_get(const struct scmi_protocol_handle *ph, u32 clk_id,  	if (rate_discrete && rate) {  		clk->list.num_rates = tot_rate_cnt; -		sort(rate, tot_rate_cnt, sizeof(*rate), rate_cmp_func, NULL); +		sort(clk->list.rates, tot_rate_cnt, sizeof(*rate), +		     rate_cmp_func, NULL);  	}  	clk->rate_discrete = rate_discrete; diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 46118300a4d1..e17c6568344d 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -679,7 +679,8 @@ static void scmi_handle_response(struct scmi_chan_info *cinfo,  	xfer = scmi_xfer_command_acquire(cinfo, msg_hdr);  	if (IS_ERR(xfer)) { -		scmi_clear_channel(info, cinfo); +		if (MSG_XTRACT_TYPE(msg_hdr) == MSG_TYPE_DELAYED_RESP) +			scmi_clear_channel(info, cinfo);  		return;  	} diff --git a/drivers/firmware/arm_scmi/optee.c b/drivers/firmware/arm_scmi/optee.c index 734f1eeee161..8302a2b4aeeb 100644 --- a/drivers/firmware/arm_scmi/optee.c +++ b/drivers/firmware/arm_scmi/optee.c @@ -405,8 +405,8 @@ static int scmi_optee_chan_free(int id, void *p, void *data)  	return 0;  } -static struct scmi_shared_mem *get_channel_shm(struct scmi_optee_channel *chan, -					       struct scmi_xfer *xfer) +static struct scmi_shared_mem __iomem * +get_channel_shm(struct scmi_optee_channel *chan, struct scmi_xfer *xfer)  {  	if (!chan)  		return NULL; @@ -419,7 +419,7 @@ static int scmi_optee_send_message(struct scmi_chan_info *cinfo,  				   struct scmi_xfer *xfer)  {  	struct scmi_optee_channel *channel = cinfo->transport_info; -	struct scmi_shared_mem *shmem = get_channel_shm(channel, xfer); +	struct scmi_shared_mem __iomem *shmem = get_channel_shm(channel, xfer);  	int ret;  	mutex_lock(&channel->mu); @@ -436,7 +436,7 @@ static void scmi_optee_fetch_response(struct scmi_chan_info *cinfo,  				      struct scmi_xfer *xfer)  {  	struct scmi_optee_channel *channel = cinfo->transport_info; -	struct scmi_shared_mem *shmem = get_channel_shm(channel, xfer); +	struct scmi_shared_mem __iomem *shmem = get_channel_shm(channel, xfer);  	shmem_fetch_response(shmem, xfer);  }  | 
