Re: [PATCH 5/6] net: can: flexcan: split the Message Buffer RAM area

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/31/2018 08:30 AM, Pankaj Bansal wrote:
> 
>> -----Original Message-----
>> From: Marc Kleine-Budde [mailto:mkl@xxxxxxxxxxxxxx]
>> Sent: Monday, July 30, 2018 8:21 PM
>> To: Pankaj Bansal <pankaj.bansal@xxxxxxx>; linux-can@xxxxxxxxxxxxxxx
>> Subject: Re: [PATCH 5/6] net: can: flexcan: split the Message Buffer RAM
>> area
>>
>> On 07/30/2018 06:07 PM, Pankaj Bansal wrote:
>>> The message buffer RAM area is not a contiguous 1KB area but 2
>>> partitions of 512 bytes each. Till now, we used Message buffers with
>>> payload size 8 bytes, which translates to 32 MBs per partition and no
>>> spare space is left in any partition.
>>> However, in upcoming SOC LX2160A the message buffers can have
>> payload
>>> size greater than 8 bytes. This results in less than 32 MBs per
>>> partition and some empty area is left at the end of each
>>> partition.This empty area should not be accessed.
>>> Therefore, split the Message Buffer RAM area into two partitions.
>>>
>>> Signed-off-by: Pankaj Bansal <pankaj.bansal@xxxxxxx>
>>> ---
>>>  drivers/net/can/flexcan.c | 66 ++++++++++++++++++++++++++++---------
>>>  1 file changed, 50 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
>>> index 15fa983a8237..147405e703f0 100644
>>> --- a/drivers/net/can/flexcan.c
>>> +++ b/drivers/net/can/flexcan.c
>>> @@ -223,7 +223,8 @@ struct flexcan_regs {
>>>  	u32 rxfgmask;		/* 0x48 */
>>>  	u32 rxfir;		/* 0x4c */
>>>  	u32 _reserved3[12];	/* 0x50 */
>>> -	u32 mb[256];		/* 0x80 */
>>> +	u32 mb1[128];		/* 0x80 */
>>> +	u32 mb2[128];		/* 0x280 */
>>>  	/* FIFO-mode:
>>>  	 *			MB
>>>  	 * 0x080...0x08f	0	RX message buffer
>>> @@ -262,6 +263,8 @@ struct flexcan_priv {
>>>  	struct flexcan_mb __iomem *tx_mb;
>>>  	struct flexcan_mb __iomem *tx_mb_reserved;
>>>  	u8 tx_mb_idx;
>>> +	u8 mb_count_block1;
>>> +	u8 mb_count_block2;
>>
>> What's the difference between these two?
> 
> This tells the number of Message Buffers in each RAM block.
> 
> suppose Block0 is configured to 8 bytes payload, Block1 to 16 bytes,
> than the following table indicates how the Message Buffers will be
> arranged into RAM.

Does this make any sense in a real world scenario? How do you plan to
configure these partitions?

> RAM partition example
> ________________________________________________________________________________
> RAM block | Payload size | Number of MBs in the RAM block | Message Buffer range
> 0         | 8            | 32                             | 0 to 31
> 1         | 16           | 21                             |32 to 52
> --------------------------------------------------------------------------------

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux