Re: [PATCH v2] serial: mxs-auart: add Alphascale ASM9260 support

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

 



Hi Peter,

thank you for comments.

Am 28.01.2016 um 17:40 schrieb Peter Hurley:
> Hi Oleksij,
> 
> On 12/14/2015 11:24 AM, Oleksij Rempel wrote:
>> Alphascale ASM9260 uart IP has some common registers with
>> Freescale STMP37XX. This patch provide changes which
>> allow to reuse mxs-auart.c code for ASM9260.
>>
>> Signed-off-by: Oleksij Rempel <linux@xxxxxxxxxxxxxxxx>
>> ---
>>  .../devicetree/bindings/serial/fsl-mxs-auart.txt   |  10 +-
>>  drivers/tty/serial/Kconfig                         |   5 +-
>>  drivers/tty/serial/mxs-auart.c                     | 667 +++++++++++++++++----
>>  3 files changed, 577 insertions(+), 105 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
>> index 7c408c8..5bb2e32 100644
>> --- a/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
>> +++ b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
>> @@ -1,8 +1,8 @@
>>  * Freescale MXS Application UART (AUART)
>>  
>> -Required properties:
>> +Required properties for all SoCs:
>>  - compatible : Should be "fsl,<soc>-auart". The supported SoCs include
>> -  imx23 and imx28.
>> +  imx23 and imx28. Or "alphascale,asm9260-auart".
> 
> Can you rewrite this to make it clear which compatible string is
> appropriate for which SoC?

I would assume it is self descriptive, since "compatible" usually
contains: company name; SoC name and component. Any way, if it is
required i will change it.

> 
>>  - reg : Address and length of the register set for the device
>>  - interrupts : Should contain the auart interrupt numbers
>>  - dmas: DMA specifier, consisting of a phandle to DMA controller node
>>  #define AUART_STAT			0x00000070
>>  #define AUART_DEBUG			0x00000080
>> @@ -136,11 +123,387 @@
>>  #define AUART_STAT_FERR				(1 << 16)
>>  #define AUART_STAT_RXCOUNT_MASK			0xffff
>>  
>> +/* Start of Alphascale asm9260 defines */
> 
> Why are you (re)defining all these bits below when they're identical
> to the MXS register layout?

To provide some kind of documentation. As you can see, there are more
registers as by iMX controller. Not one else have access to docs. In any
case, if it is not welcome i'll remove it.

> 
>> +/* RX ctrl register */
>> +#define ASM9260_HW_CTRL0			0x0000
>> +/* RW. Set to zero for normal operation. */
....
>>  static inline bool auart_dma_enabled(struct mxs_auart_port *s)
>>  {
>>  	return s->flags & MXS_AUART_DMA_ENABLED;
>> @@ -295,19 +670,19 @@ static void mxs_auart_tx_chars(struct mxs_auart_port *s)
>>  	}
>>  
>>  
>> -	while (!(readl(s->port.membase + AUART_STAT) &
>> +	while (!(readl(s->regs.stat) &
>>  		 AUART_STAT_TXFF)) {
>>  		if (s->port.x_char) {
>>  			s->port.icount.tx++;
>>  			writel(s->port.x_char,
>> -				     s->port.membase + AUART_DATA);
>> +				     s->regs.data);
> 
> The convention for adding clones that trivially move register addresses
> is to add i/o accessors that perform the register lookup. For example,
> 
> 	writel(s->port.xchar, s->port.membase + AUART_DATA);
> 
> becomes
> 
> 	mxs_write(s->port.xchar, s, AUART_DATA);

I assume we have here some confusion.
It was:

writel(s->port.x_char, s->port.membase + AUART_DATA);

and i changed it to:

writel(s->port.x_char, s->regs.data);

what kind of advantage will bring new IO function?
-- 
Regards,
Oleksij

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux