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

Re: [Xen-devel] [PATCH] arm/acpi: Add Server Base System Architecture UART support




On 05/27/2016 08:04 AM, Julien Grall wrote:
> Hello Shanker,
>
> On 27/05/16 01:28, Shanker Donthineni wrote:
>> The ARM Server Base System Architecture describes a generic UART
>> interface. It doesn't support clock control registers to set
>> baudrate. So, extend the driver probe() to handle SBSA interface
>> types and set the baudrate to 115200 for SBSA interfaces.
>
> I cannot find any mention of the baudrate in the SBSA. Where does it come 
> from?
>
Yes, no where mentioned about the baudrate in SBSA document. I used 115200 
based on the  the Linux  PL011 driver.

> Also the driver is using registers which should not be touch for the SBSA 
> UART (see appendix B in the SBSA ARM-DEN-0029 v3.0). So this need to be 
> address to get a proper support.
>
Yes, I agree with you, Which registers it is touching other than baudrate 
control registers?

>> Signed-off-by: Shanker Donthineni <shankerd@xxxxxxxxxxxxxx>
>> ---
>> https://silver.arm.com/download/download.tm?pv=2950177
>>   xen/drivers/char/pl011.c | 25 +++++++++++++++++++++----
>>   1 file changed, 21 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
>> index 1212d5c..81d095f 100644
>> --- a/xen/drivers/char/pl011.c
>> +++ b/xen/drivers/char/pl011.c
>> @@ -226,14 +226,14 @@ static struct uart_driver __read_mostly pl011_driver = 
>> {
>>       .vuart_info   = pl011_vuart,
>>   };
>>
>> -static int __init pl011_uart_init(int irq, u64 addr, u64 size)
>> +static int __init pl011_uart_init(int irq, u64 addr, u64 size, int baud)
>>   {
>>       struct pl011 *uart;
>>
>>       uart = &pl011_com;
>>       uart->irq       = irq;
>>       uart->clock_hz  = 0x16e3600;
>> -    uart->baud      = BAUD_AUTO;
>> +    uart->baud      = baud;
>>       uart->data_bits = 8;
>>       uart->parity    = PARITY_NONE;
>>       uart->stop_bits = 1;
>> @@ -285,7 +285,7 @@ static int __init pl011_dt_uart_init(struct 
>> dt_device_node *dev,
>>           return -EINVAL;
>>       }
>>
>> -    res = pl011_uart_init(res, addr, size);
>> +    res = pl011_uart_init(res, addr, size, BAUD_AUTO);
>>       if ( res < 0 )
>>       {
>>           printk("pl011: Unable to initialize\n");
>> @@ -315,6 +315,7 @@ static int __init pl011_acpi_uart_init(const void *data)
>>   {
>>       acpi_status status;
>>       struct acpi_table_spcr *spcr = NULL;
>> +    int baud = BAUD_AUTO;
>>       int res;
>>
>>       status = acpi_get_table(ACPI_SIG_SPCR, 0,
>> @@ -326,17 +327,23 @@ static int __init pl011_acpi_uart_init(const void 
>> *data)
>>           return -EINVAL;
>>       }
>>
>> +    if ( (spcr->interface_type == ACPI_DBG2_SBSA_32) ||
>
> Based on the DBG2 spec, this value is deprecated. So I do not think we should 
> support it.
>

I'll fix.

>> +         (spcr->interface_type == ACPI_DBG2_SBSA) )
>> +        baud = 115200;
>> +
>>       /* trigger/polarity information is not available in spcr */
>>       irq_set_type(spcr->interrupt, IRQ_TYPE_LEVEL_HIGH);
>>
>>       res = pl011_uart_init(spcr->interrupt, spcr->serial_port.address,
>> -                          PAGE_SIZE);
>> +                          PAGE_SIZE, baud);
>>       if ( res < 0 )
>>       {
>>           printk("pl011: Unable to initialize\n");
>>           return res;
>>       }
>>
>> +
>> +
>
> Spurious changes.
>
>>       return 0;
>>   }
>>
>> @@ -344,6 +351,16 @@ ACPI_DEVICE_START(apl011, "PL011 UART", DEVICE_SERIAL)
>>           .class_type = ACPI_DBG2_PL011,
>>           .init = pl011_acpi_uart_init,
>>   ACPI_DEVICE_END
>> +
>> +ACPI_DEVICE_START(asbsa_uart, "SBSA UART", DEVICE_SERIAL)
>> +        .class_type = ACPI_DBG2_SBSA,
>> +        .init = pl011_acpi_uart_init,
>> +ACPI_DEVICE_END
>> +
>> +ACPI_DEVICE_START(asbsa32_uart, "SBSA32 UART", DEVICE_SERIAL)
>> +        .class_type = ACPI_DBG2_SBSA_32,
>> +        .init = pl011_acpi_uart_init,
>> +ACPI_DEVICE_END
>>   #endif
>>
>>   /*
>>
>
> Regards,
>

-- 
Shanker Donthineni
Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux 
Foundation Collaborative Project


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.