All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthias Brugger <matthias.bgg@gmail.com>
To: Dennis-YC Hsieh <dennis-yc.hsieh@mediatek.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Jassi Brar <jassisinghbrar@gmail.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
	linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	devicetree@vger.kernel.org, wsd_upstream@mediatek.com,
	dri-devel@lists.freedesktop.org,
	Bibby Hsieh <bibby.hsieh@mediatek.com>,
	CK Hu <ck.hu@mediatek.com>,
	Houlong Wei <houlong.wei@mediatek.com>,
	linux-arm-kernel@lists.infradead.org,
	HS Liao <hs.liao@mediatek.com>
Subject: Re: [PATCH v5 09/13] soc: mediatek: cmdq: add write_s value function
Date: Mon, 25 May 2020 10:39:54 +0200	[thread overview]
Message-ID: <68535bf6-9824-5077-4811-374c893cdc03@gmail.com> (raw)
In-Reply-To: <1590373621.31522.7.camel@mtkswgap22>



On 25/05/2020 04:27, Dennis-YC Hsieh wrote:
> 
> On Sun, 2020-05-24 at 20:13 +0200, Matthias Brugger wrote:
>>
>> On 24/05/2020 19:31, Dennis-YC Hsieh wrote:
>>> Hi Matthias,
>>>
>>> Thanks for your comment.
>>>
>>> On Sat, 2020-05-16 at 20:20 +0200, Matthias Brugger wrote:
>>>>
>>>> On 08/03/2020 11:52, Dennis YC Hsieh wrote:
>>>>> add write_s function in cmdq helper functions which
>>>>> writes a constant value to address with large dma
>>>>> access support.
>>>>>
>>>>> Signed-off-by: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com>
>>>>> Reviewed-by: CK Hu <ck.hu@mediatek.com>
>>>>> ---
>>>>>  drivers/soc/mediatek/mtk-cmdq-helper.c | 26 ++++++++++++++++++++++++++
>>>>>  include/linux/soc/mediatek/mtk-cmdq.h  | 14 ++++++++++++++
>>>>>  2 files changed, 40 insertions(+)
>>>>>
>>>>> diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> index 03c129230cd7..a9ebbabb7439 100644
>>>>> --- a/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> @@ -269,6 +269,32 @@ int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  }
>>>>>  EXPORT_SYMBOL(cmdq_pkt_write_s);
>>>>>  
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask)
>>>>> +{
>>>>> +	struct cmdq_instruction inst = { {0} };
>>>>> +	int err;
>>>>> +
>>>>> +	if (mask != U32_MAX) {
>>>>> +		inst.op = CMDQ_CODE_MASK;
>>>>> +		inst.mask = ~mask;
>>>>> +		err = cmdq_pkt_append_command(pkt, inst);
>>>>> +		if (err < 0)
>>>>> +			return err;
>>>>> +
>>>>> +		inst.op = CMDQ_CODE_WRITE_S_MASK;
>>>>> +	} else {
>>>>> +		inst.op = CMDQ_CODE_WRITE_S;
>>>>> +	}
>>>>> +
>>>>> +	inst.sop = high_addr_reg_idx;
>>>>
>>>> Writing u16 value in a 5 bit wide variable?
>>>
>>> We need only 5 bits in this case. I'll change high_addr_reg_idx
>>> parameter to u8.
>>>
>>
>> Ok, please make sure to mask the value, so that it's explicit in the code that
>> we only use the lowest 5 bits of high_addr_reg_idx.
> 
> Is it necessary to mask the value?
> Since sop already defined as "u8 sop:5;", I thought it is explicit that
> only use 5 bits and compiler should do the rest jobs.

Yes but it makes the code more explicit if we have a
inst.sop = high_addr_reg_idx & 0x1f;

What do you think?

Regards,
Matthias

> 
> 
> Regards,
> Dennis
> 
>>
>> Regards,
>> Matthias
>>
>>>>
>>>>> +	inst.offset = addr_low;
>>>>> +	inst.value = value;
>>>>> +
>>>>> +	return cmdq_pkt_append_command(pkt, inst);
>>>>> +}
>>>>> +EXPORT_SYMBOL(cmdq_pkt_write_s_value);
>>>>> +
>>>>>  int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event)
>>>>>  {
>>>>>  	struct cmdq_instruction inst = { {0} };
>>>>> diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> index 01b4184af310..fec292aac83c 100644
>>>>> --- a/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> +++ b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> @@ -135,6 +135,20 @@ int cmdq_pkt_read_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx, u16 addr_low,
>>>>>  int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  		     u16 addr_low, u16 src_reg_idx, u32 mask);
>>>>>  
>>>>> +/**
>>>>> + * cmdq_pkt_write_s_value() - append write_s command with mask to the CMDQ
>>>>> + *			      packet which write value to a physical address
>>>>> + * @pkt:	the CMDQ packet
>>>>> + * @high_addr_reg_idx:	internal regisger ID which contains high address of pa
>>>>
>>>> register
>>>
>>> will fix
>>>
>>>
>>> Regards,
>>> Dennis
>>>
>>>>
>>>>> + * @addr_low:	low address of pa
>>>>> + * @value:	the specified target value
>>>>> + * @mask:	the specified target mask
>>>>> + *
>>>>> + * Return: 0 for success; else the error code is returned
>>>>> + */
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask);
>>>>> +
>>>>>  /**
>>>>>   * cmdq_pkt_wfe() - append wait for event command to the CMDQ packet
>>>>>   * @pkt:	the CMDQ packet
>>>>>
>>>
> 

WARNING: multiple messages have this Message-ID (diff)
From: Matthias Brugger <matthias.bgg@gmail.com>
To: Dennis-YC Hsieh <dennis-yc.hsieh@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org,
	Philipp Zabel <p.zabel@pengutronix.de>,
	wsd_upstream@mediatek.com, David Airlie <airlied@linux.ie>,
	Jassi Brar <jassisinghbrar@gmail.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	HS Liao <hs.liao@mediatek.com>, Rob Herring <robh+dt@kernel.org>,
	linux-mediatek@lists.infradead.org,
	Houlong Wei <houlong.wei@mediatek.com>,
	Daniel Vetter <daniel@ffwll.ch>, CK Hu <ck.hu@mediatek.com>,
	Bibby Hsieh <bibby.hsieh@mediatek.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 09/13] soc: mediatek: cmdq: add write_s value function
Date: Mon, 25 May 2020 10:39:54 +0200	[thread overview]
Message-ID: <68535bf6-9824-5077-4811-374c893cdc03@gmail.com> (raw)
In-Reply-To: <1590373621.31522.7.camel@mtkswgap22>



On 25/05/2020 04:27, Dennis-YC Hsieh wrote:
> 
> On Sun, 2020-05-24 at 20:13 +0200, Matthias Brugger wrote:
>>
>> On 24/05/2020 19:31, Dennis-YC Hsieh wrote:
>>> Hi Matthias,
>>>
>>> Thanks for your comment.
>>>
>>> On Sat, 2020-05-16 at 20:20 +0200, Matthias Brugger wrote:
>>>>
>>>> On 08/03/2020 11:52, Dennis YC Hsieh wrote:
>>>>> add write_s function in cmdq helper functions which
>>>>> writes a constant value to address with large dma
>>>>> access support.
>>>>>
>>>>> Signed-off-by: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com>
>>>>> Reviewed-by: CK Hu <ck.hu@mediatek.com>
>>>>> ---
>>>>>  drivers/soc/mediatek/mtk-cmdq-helper.c | 26 ++++++++++++++++++++++++++
>>>>>  include/linux/soc/mediatek/mtk-cmdq.h  | 14 ++++++++++++++
>>>>>  2 files changed, 40 insertions(+)
>>>>>
>>>>> diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> index 03c129230cd7..a9ebbabb7439 100644
>>>>> --- a/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> @@ -269,6 +269,32 @@ int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  }
>>>>>  EXPORT_SYMBOL(cmdq_pkt_write_s);
>>>>>  
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask)
>>>>> +{
>>>>> +	struct cmdq_instruction inst = { {0} };
>>>>> +	int err;
>>>>> +
>>>>> +	if (mask != U32_MAX) {
>>>>> +		inst.op = CMDQ_CODE_MASK;
>>>>> +		inst.mask = ~mask;
>>>>> +		err = cmdq_pkt_append_command(pkt, inst);
>>>>> +		if (err < 0)
>>>>> +			return err;
>>>>> +
>>>>> +		inst.op = CMDQ_CODE_WRITE_S_MASK;
>>>>> +	} else {
>>>>> +		inst.op = CMDQ_CODE_WRITE_S;
>>>>> +	}
>>>>> +
>>>>> +	inst.sop = high_addr_reg_idx;
>>>>
>>>> Writing u16 value in a 5 bit wide variable?
>>>
>>> We need only 5 bits in this case. I'll change high_addr_reg_idx
>>> parameter to u8.
>>>
>>
>> Ok, please make sure to mask the value, so that it's explicit in the code that
>> we only use the lowest 5 bits of high_addr_reg_idx.
> 
> Is it necessary to mask the value?
> Since sop already defined as "u8 sop:5;", I thought it is explicit that
> only use 5 bits and compiler should do the rest jobs.

Yes but it makes the code more explicit if we have a
inst.sop = high_addr_reg_idx & 0x1f;

What do you think?

Regards,
Matthias

> 
> 
> Regards,
> Dennis
> 
>>
>> Regards,
>> Matthias
>>
>>>>
>>>>> +	inst.offset = addr_low;
>>>>> +	inst.value = value;
>>>>> +
>>>>> +	return cmdq_pkt_append_command(pkt, inst);
>>>>> +}
>>>>> +EXPORT_SYMBOL(cmdq_pkt_write_s_value);
>>>>> +
>>>>>  int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event)
>>>>>  {
>>>>>  	struct cmdq_instruction inst = { {0} };
>>>>> diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> index 01b4184af310..fec292aac83c 100644
>>>>> --- a/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> +++ b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> @@ -135,6 +135,20 @@ int cmdq_pkt_read_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx, u16 addr_low,
>>>>>  int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  		     u16 addr_low, u16 src_reg_idx, u32 mask);
>>>>>  
>>>>> +/**
>>>>> + * cmdq_pkt_write_s_value() - append write_s command with mask to the CMDQ
>>>>> + *			      packet which write value to a physical address
>>>>> + * @pkt:	the CMDQ packet
>>>>> + * @high_addr_reg_idx:	internal regisger ID which contains high address of pa
>>>>
>>>> register
>>>
>>> will fix
>>>
>>>
>>> Regards,
>>> Dennis
>>>
>>>>
>>>>> + * @addr_low:	low address of pa
>>>>> + * @value:	the specified target value
>>>>> + * @mask:	the specified target mask
>>>>> + *
>>>>> + * Return: 0 for success; else the error code is returned
>>>>> + */
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask);
>>>>> +
>>>>>  /**
>>>>>   * cmdq_pkt_wfe() - append wait for event command to the CMDQ packet
>>>>>   * @pkt:	the CMDQ packet
>>>>>
>>>
> 

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: Matthias Brugger <matthias.bgg@gmail.com>
To: Dennis-YC Hsieh <dennis-yc.hsieh@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org,
	Philipp Zabel <p.zabel@pengutronix.de>,
	wsd_upstream@mediatek.com, David Airlie <airlied@linux.ie>,
	Jassi Brar <jassisinghbrar@gmail.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	HS Liao <hs.liao@mediatek.com>, Rob Herring <robh+dt@kernel.org>,
	linux-mediatek@lists.infradead.org,
	Houlong Wei <houlong.wei@mediatek.com>,
	Daniel Vetter <daniel@ffwll.ch>, CK Hu <ck.hu@mediatek.com>,
	Bibby Hsieh <bibby.hsieh@mediatek.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 09/13] soc: mediatek: cmdq: add write_s value function
Date: Mon, 25 May 2020 10:39:54 +0200	[thread overview]
Message-ID: <68535bf6-9824-5077-4811-374c893cdc03@gmail.com> (raw)
In-Reply-To: <1590373621.31522.7.camel@mtkswgap22>



On 25/05/2020 04:27, Dennis-YC Hsieh wrote:
> 
> On Sun, 2020-05-24 at 20:13 +0200, Matthias Brugger wrote:
>>
>> On 24/05/2020 19:31, Dennis-YC Hsieh wrote:
>>> Hi Matthias,
>>>
>>> Thanks for your comment.
>>>
>>> On Sat, 2020-05-16 at 20:20 +0200, Matthias Brugger wrote:
>>>>
>>>> On 08/03/2020 11:52, Dennis YC Hsieh wrote:
>>>>> add write_s function in cmdq helper functions which
>>>>> writes a constant value to address with large dma
>>>>> access support.
>>>>>
>>>>> Signed-off-by: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com>
>>>>> Reviewed-by: CK Hu <ck.hu@mediatek.com>
>>>>> ---
>>>>>  drivers/soc/mediatek/mtk-cmdq-helper.c | 26 ++++++++++++++++++++++++++
>>>>>  include/linux/soc/mediatek/mtk-cmdq.h  | 14 ++++++++++++++
>>>>>  2 files changed, 40 insertions(+)
>>>>>
>>>>> diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> index 03c129230cd7..a9ebbabb7439 100644
>>>>> --- a/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> @@ -269,6 +269,32 @@ int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  }
>>>>>  EXPORT_SYMBOL(cmdq_pkt_write_s);
>>>>>  
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask)
>>>>> +{
>>>>> +	struct cmdq_instruction inst = { {0} };
>>>>> +	int err;
>>>>> +
>>>>> +	if (mask != U32_MAX) {
>>>>> +		inst.op = CMDQ_CODE_MASK;
>>>>> +		inst.mask = ~mask;
>>>>> +		err = cmdq_pkt_append_command(pkt, inst);
>>>>> +		if (err < 0)
>>>>> +			return err;
>>>>> +
>>>>> +		inst.op = CMDQ_CODE_WRITE_S_MASK;
>>>>> +	} else {
>>>>> +		inst.op = CMDQ_CODE_WRITE_S;
>>>>> +	}
>>>>> +
>>>>> +	inst.sop = high_addr_reg_idx;
>>>>
>>>> Writing u16 value in a 5 bit wide variable?
>>>
>>> We need only 5 bits in this case. I'll change high_addr_reg_idx
>>> parameter to u8.
>>>
>>
>> Ok, please make sure to mask the value, so that it's explicit in the code that
>> we only use the lowest 5 bits of high_addr_reg_idx.
> 
> Is it necessary to mask the value?
> Since sop already defined as "u8 sop:5;", I thought it is explicit that
> only use 5 bits and compiler should do the rest jobs.

Yes but it makes the code more explicit if we have a
inst.sop = high_addr_reg_idx & 0x1f;

What do you think?

Regards,
Matthias

> 
> 
> Regards,
> Dennis
> 
>>
>> Regards,
>> Matthias
>>
>>>>
>>>>> +	inst.offset = addr_low;
>>>>> +	inst.value = value;
>>>>> +
>>>>> +	return cmdq_pkt_append_command(pkt, inst);
>>>>> +}
>>>>> +EXPORT_SYMBOL(cmdq_pkt_write_s_value);
>>>>> +
>>>>>  int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event)
>>>>>  {
>>>>>  	struct cmdq_instruction inst = { {0} };
>>>>> diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> index 01b4184af310..fec292aac83c 100644
>>>>> --- a/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> +++ b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> @@ -135,6 +135,20 @@ int cmdq_pkt_read_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx, u16 addr_low,
>>>>>  int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  		     u16 addr_low, u16 src_reg_idx, u32 mask);
>>>>>  
>>>>> +/**
>>>>> + * cmdq_pkt_write_s_value() - append write_s command with mask to the CMDQ
>>>>> + *			      packet which write value to a physical address
>>>>> + * @pkt:	the CMDQ packet
>>>>> + * @high_addr_reg_idx:	internal regisger ID which contains high address of pa
>>>>
>>>> register
>>>
>>> will fix
>>>
>>>
>>> Regards,
>>> Dennis
>>>
>>>>
>>>>> + * @addr_low:	low address of pa
>>>>> + * @value:	the specified target value
>>>>> + * @mask:	the specified target mask
>>>>> + *
>>>>> + * Return: 0 for success; else the error code is returned
>>>>> + */
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask);
>>>>> +
>>>>>  /**
>>>>>   * cmdq_pkt_wfe() - append wait for event command to the CMDQ packet
>>>>>   * @pkt:	the CMDQ packet
>>>>>
>>>
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Matthias Brugger <matthias.bgg@gmail.com>
To: Dennis-YC Hsieh <dennis-yc.hsieh@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org, wsd_upstream@mediatek.com,
	David Airlie <airlied@linux.ie>,
	Jassi Brar <jassisinghbrar@gmail.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	HS Liao <hs.liao@mediatek.com>, Rob Herring <robh+dt@kernel.org>,
	linux-mediatek@lists.infradead.org,
	Houlong Wei <houlong.wei@mediatek.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 09/13] soc: mediatek: cmdq: add write_s value function
Date: Mon, 25 May 2020 10:39:54 +0200	[thread overview]
Message-ID: <68535bf6-9824-5077-4811-374c893cdc03@gmail.com> (raw)
In-Reply-To: <1590373621.31522.7.camel@mtkswgap22>



On 25/05/2020 04:27, Dennis-YC Hsieh wrote:
> 
> On Sun, 2020-05-24 at 20:13 +0200, Matthias Brugger wrote:
>>
>> On 24/05/2020 19:31, Dennis-YC Hsieh wrote:
>>> Hi Matthias,
>>>
>>> Thanks for your comment.
>>>
>>> On Sat, 2020-05-16 at 20:20 +0200, Matthias Brugger wrote:
>>>>
>>>> On 08/03/2020 11:52, Dennis YC Hsieh wrote:
>>>>> add write_s function in cmdq helper functions which
>>>>> writes a constant value to address with large dma
>>>>> access support.
>>>>>
>>>>> Signed-off-by: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com>
>>>>> Reviewed-by: CK Hu <ck.hu@mediatek.com>
>>>>> ---
>>>>>  drivers/soc/mediatek/mtk-cmdq-helper.c | 26 ++++++++++++++++++++++++++
>>>>>  include/linux/soc/mediatek/mtk-cmdq.h  | 14 ++++++++++++++
>>>>>  2 files changed, 40 insertions(+)
>>>>>
>>>>> diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> index 03c129230cd7..a9ebbabb7439 100644
>>>>> --- a/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
>>>>> @@ -269,6 +269,32 @@ int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  }
>>>>>  EXPORT_SYMBOL(cmdq_pkt_write_s);
>>>>>  
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask)
>>>>> +{
>>>>> +	struct cmdq_instruction inst = { {0} };
>>>>> +	int err;
>>>>> +
>>>>> +	if (mask != U32_MAX) {
>>>>> +		inst.op = CMDQ_CODE_MASK;
>>>>> +		inst.mask = ~mask;
>>>>> +		err = cmdq_pkt_append_command(pkt, inst);
>>>>> +		if (err < 0)
>>>>> +			return err;
>>>>> +
>>>>> +		inst.op = CMDQ_CODE_WRITE_S_MASK;
>>>>> +	} else {
>>>>> +		inst.op = CMDQ_CODE_WRITE_S;
>>>>> +	}
>>>>> +
>>>>> +	inst.sop = high_addr_reg_idx;
>>>>
>>>> Writing u16 value in a 5 bit wide variable?
>>>
>>> We need only 5 bits in this case. I'll change high_addr_reg_idx
>>> parameter to u8.
>>>
>>
>> Ok, please make sure to mask the value, so that it's explicit in the code that
>> we only use the lowest 5 bits of high_addr_reg_idx.
> 
> Is it necessary to mask the value?
> Since sop already defined as "u8 sop:5;", I thought it is explicit that
> only use 5 bits and compiler should do the rest jobs.

Yes but it makes the code more explicit if we have a
inst.sop = high_addr_reg_idx & 0x1f;

What do you think?

Regards,
Matthias

> 
> 
> Regards,
> Dennis
> 
>>
>> Regards,
>> Matthias
>>
>>>>
>>>>> +	inst.offset = addr_low;
>>>>> +	inst.value = value;
>>>>> +
>>>>> +	return cmdq_pkt_append_command(pkt, inst);
>>>>> +}
>>>>> +EXPORT_SYMBOL(cmdq_pkt_write_s_value);
>>>>> +
>>>>>  int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event)
>>>>>  {
>>>>>  	struct cmdq_instruction inst = { {0} };
>>>>> diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> index 01b4184af310..fec292aac83c 100644
>>>>> --- a/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> +++ b/include/linux/soc/mediatek/mtk-cmdq.h
>>>>> @@ -135,6 +135,20 @@ int cmdq_pkt_read_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx, u16 addr_low,
>>>>>  int cmdq_pkt_write_s(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>>  		     u16 addr_low, u16 src_reg_idx, u32 mask);
>>>>>  
>>>>> +/**
>>>>> + * cmdq_pkt_write_s_value() - append write_s command with mask to the CMDQ
>>>>> + *			      packet which write value to a physical address
>>>>> + * @pkt:	the CMDQ packet
>>>>> + * @high_addr_reg_idx:	internal regisger ID which contains high address of pa
>>>>
>>>> register
>>>
>>> will fix
>>>
>>>
>>> Regards,
>>> Dennis
>>>
>>>>
>>>>> + * @addr_low:	low address of pa
>>>>> + * @value:	the specified target value
>>>>> + * @mask:	the specified target mask
>>>>> + *
>>>>> + * Return: 0 for success; else the error code is returned
>>>>> + */
>>>>> +int cmdq_pkt_write_s_value(struct cmdq_pkt *pkt, u16 high_addr_reg_idx,
>>>>> +			   u16 addr_low, u32 value, u32 mask);
>>>>> +
>>>>>  /**
>>>>>   * cmdq_pkt_wfe() - append wait for event command to the CMDQ packet
>>>>>   * @pkt:	the CMDQ packet
>>>>>
>>>
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2020-05-25  8:40 UTC|newest]

Thread overview: 172+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-08 10:52 [PATCH v5 00/13] support gce on mt6779 platform Dennis YC Hsieh
2020-03-08 10:52 ` Dennis YC Hsieh
2020-03-08 10:52 ` Dennis YC Hsieh
2020-03-08 10:52 ` Dennis YC Hsieh
2020-03-08 10:52 ` [PATCH v5 01/13] dt-binding: gce: add gce header file for mt6779 Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52 ` [PATCH v5 02/13] mailbox: cmdq: variablize address shift in platform Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-20  1:05   ` Jassi Brar
2020-03-20  1:05     ` Jassi Brar
2020-03-20  1:05     ` Jassi Brar
2020-03-20  1:05     ` Jassi Brar
2020-03-23  1:11     ` Dennis-YC Hsieh
2020-03-23  1:11       ` Dennis-YC Hsieh
2020-03-23  1:11       ` Dennis-YC Hsieh
2020-03-23  1:11       ` Dennis-YC Hsieh
2020-03-08 10:52 ` [PATCH v5 03/13] mailbox: cmdq: support mt6779 gce platform definition Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 16:10   ` Matthias Brugger
2020-05-16 16:10     ` Matthias Brugger
2020-05-16 16:10     ` Matthias Brugger
2020-05-16 16:10     ` Matthias Brugger
2020-03-08 10:52 ` [PATCH v5 04/13] mailbox: mediatek: cmdq: clear task in channel before shutdown Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52 ` [PATCH v5 05/13] soc: mediatek: cmdq: return send msg error code Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 17:56   ` Matthias Brugger
2020-05-16 17:56     ` Matthias Brugger
2020-05-16 17:56     ` Matthias Brugger
2020-05-16 17:56     ` Matthias Brugger
2020-03-08 10:52 ` [PATCH v5 06/13] soc: mediatek: cmdq: add assign function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 17:59   ` Matthias Brugger
2020-05-16 17:59     ` Matthias Brugger
2020-05-16 17:59     ` Matthias Brugger
2020-05-16 17:59     ` Matthias Brugger
2020-05-24 17:01     ` Dennis-YC Hsieh
2020-05-24 17:01       ` Dennis-YC Hsieh
2020-05-24 17:01       ` Dennis-YC Hsieh
2020-05-24 17:01       ` Dennis-YC Hsieh
2020-05-24 18:09       ` Matthias Brugger
2020-05-24 18:09         ` Matthias Brugger
2020-05-24 18:09         ` Matthias Brugger
2020-05-24 18:09         ` Matthias Brugger
2020-03-08 10:52 ` [PATCH v5 07/13] soc: mediatek: cmdq: add write_s function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 18:14   ` Matthias Brugger
2020-05-16 18:14     ` Matthias Brugger
2020-05-16 18:14     ` Matthias Brugger
2020-05-16 18:14     ` Matthias Brugger
2020-05-24 17:26     ` Dennis-YC Hsieh
2020-05-24 17:26       ` Dennis-YC Hsieh
2020-05-24 17:26       ` Dennis-YC Hsieh
2020-05-24 17:26       ` Dennis-YC Hsieh
2020-05-24 18:12       ` Matthias Brugger
2020-05-24 18:12         ` Matthias Brugger
2020-05-24 18:12         ` Matthias Brugger
2020-05-24 18:12         ` Matthias Brugger
2020-03-08 10:52 ` [PATCH v5 08/13] soc: mediatek: cmdq: add read_s function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52 ` [PATCH v5 09/13] soc: mediatek: cmdq: add write_s value function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 18:20   ` Matthias Brugger
2020-05-16 18:20     ` Matthias Brugger
2020-05-16 18:20     ` Matthias Brugger
2020-05-16 18:20     ` Matthias Brugger
2020-05-24 17:31     ` Dennis-YC Hsieh
2020-05-24 17:31       ` Dennis-YC Hsieh
2020-05-24 17:31       ` Dennis-YC Hsieh
2020-05-24 17:31       ` Dennis-YC Hsieh
2020-05-24 18:13       ` Matthias Brugger
2020-05-24 18:13         ` Matthias Brugger
2020-05-24 18:13         ` Matthias Brugger
2020-05-24 18:13         ` Matthias Brugger
2020-05-25  2:27         ` Dennis-YC Hsieh
2020-05-25  2:27           ` Dennis-YC Hsieh
2020-05-25  2:27           ` Dennis-YC Hsieh
2020-05-25  2:27           ` Dennis-YC Hsieh
2020-05-25  8:39           ` Matthias Brugger [this message]
2020-05-25  8:39             ` Matthias Brugger
2020-05-25  8:39             ` Matthias Brugger
2020-05-25  8:39             ` Matthias Brugger
2020-05-25 10:38             ` Dennis-YC Hsieh
2020-05-25 10:38               ` Dennis-YC Hsieh
2020-05-25 10:38               ` Dennis-YC Hsieh
2020-05-25 10:38               ` Dennis-YC Hsieh
2020-05-25 13:59               ` Matthias Brugger
2020-05-25 13:59                 ` Matthias Brugger
2020-05-25 13:59                 ` Matthias Brugger
2020-05-25 13:59                 ` Matthias Brugger
2020-03-08 10:52 ` [PATCH v5 10/13] soc: mediatek: cmdq: export finalize function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 18:22   ` Matthias Brugger
2020-05-16 18:22     ` Matthias Brugger
2020-05-16 18:22     ` Matthias Brugger
2020-05-16 18:22     ` Matthias Brugger
2020-05-24 17:32     ` Dennis-YC Hsieh
2020-05-24 17:32       ` Dennis-YC Hsieh
2020-05-24 17:32       ` Dennis-YC Hsieh
2020-05-24 17:32       ` Dennis-YC Hsieh
2020-05-25  0:23     ` Chun-Kuang Hu
2020-05-25  0:23       ` Chun-Kuang Hu
2020-05-25  0:23       ` Chun-Kuang Hu
2020-05-25  0:23       ` Chun-Kuang Hu
2020-05-25  8:38       ` Matthias Brugger
2020-05-25  8:38         ` Matthias Brugger
2020-05-25  8:38         ` Matthias Brugger
2020-05-25  8:38         ` Matthias Brugger
2020-05-25 10:48         ` Chun-Kuang Hu
2020-05-25 10:48           ` Chun-Kuang Hu
2020-05-25 10:48           ` Chun-Kuang Hu
2020-05-25 10:48           ` Chun-Kuang Hu
2020-03-08 10:52 ` [PATCH v5 11/13] soc: mediatek: cmdq: add jump function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-09  1:48   ` CK Hu
2020-03-09  1:48     ` CK Hu
2020-03-09  1:48     ` CK Hu
2020-03-09  1:48     ` CK Hu
2020-03-08 10:52 ` [PATCH v5 12/13] soc: mediatek: cmdq: add clear option in cmdq_pkt_wfe api Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-09  2:07   ` CK Hu
2020-03-09  2:07     ` CK Hu
2020-03-09  2:07     ` CK Hu
2020-03-09  2:07     ` CK Hu
2020-05-16 18:30   ` Matthias Brugger
2020-05-16 18:30     ` Matthias Brugger
2020-05-16 18:30     ` Matthias Brugger
2020-05-16 18:30     ` Matthias Brugger
2020-05-24 17:32     ` Dennis-YC Hsieh
2020-05-24 17:32       ` Dennis-YC Hsieh
2020-05-24 17:32       ` Dennis-YC Hsieh
2020-05-24 17:32       ` Dennis-YC Hsieh
2020-03-08 10:52 ` [PATCH v5 13/13] soc: mediatek: cmdq: add set event function Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-03-08 10:52   ` Dennis YC Hsieh
2020-05-16 18:32   ` Matthias Brugger
2020-05-16 18:32     ` Matthias Brugger
2020-05-16 18:32     ` Matthias Brugger
2020-05-16 18:32     ` Matthias Brugger
2020-05-24 17:39     ` Dennis-YC Hsieh
2020-05-24 17:39       ` Dennis-YC Hsieh
2020-05-24 17:39       ` Dennis-YC Hsieh
2020-05-24 17:39       ` Dennis-YC Hsieh
2020-05-24 18:15       ` Matthias Brugger
2020-05-24 18:15         ` Matthias Brugger
2020-05-24 18:15         ` Matthias Brugger
2020-05-24 18:15         ` Matthias Brugger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=68535bf6-9824-5077-4811-374c893cdc03@gmail.com \
    --to=matthias.bgg@gmail.com \
    --cc=airlied@linux.ie \
    --cc=bibby.hsieh@mediatek.com \
    --cc=ck.hu@mediatek.com \
    --cc=daniel@ffwll.ch \
    --cc=dennis-yc.hsieh@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=houlong.wei@mediatek.com \
    --cc=hs.liao@mediatek.com \
    --cc=jassisinghbrar@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=p.zabel@pengutronix.de \
    --cc=robh+dt@kernel.org \
    --cc=wsd_upstream@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.