From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752056AbcHHGMG (ORCPT ); Mon, 8 Aug 2016 02:12:06 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:41969 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750884AbcHHGME (ORCPT ); Mon, 8 Aug 2016 02:12:04 -0400 Subject: Re: [PATCH v3 3/3] serial: 8250_dw: add ACPI support for uart on Hisilicon Hip05 soc To: , , , References: <1468580485-28567-1-git-send-email-wangkefeng.wang@huawei.com> <1468580485-28567-4-git-send-email-wangkefeng.wang@huawei.com> CC: , , , , , Linux Kernel Mailing List From: Kefeng Wang Message-ID: Date: Mon, 8 Aug 2016 14:10:47 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <1468580485-28567-4-git-send-email-wangkefeng.wang@huawei.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.19.180] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020202.57A82288.00B7,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: b03363219d1f864daad1951f055152e0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org + kernel malilist Hi Andriy and all, any comments, thanks. On 2016/7/15 19:01, Kefeng Wang wrote: > Use built-in device properties to set device parameters for the > existing device probed by acpi. > > Add ACPI identifier for UART on Hisilicon Hip05 soc, be careful > that it is not 16550 compatibal, so we need set "reg-io-width" > and "reg-shift" by _DSD method in DSDT. > > Signed-off-by: Kefeng Wang > --- > drivers/tty/serial/8250/8250_dw.c | 23 +++++++++++++++++------ > 1 file changed, 17 insertions(+), 6 deletions(-) > > diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c > index d6934310..5ab9cfe 100644 > --- a/drivers/tty/serial/8250/8250_dw.c > +++ b/drivers/tty/serial/8250/8250_dw.c > @@ -297,12 +297,6 @@ static void dw8250_quirks(struct uart_port *p, struct dw8250_data *data) > p->serial_in = dw8250_serial_in32be; > p->serial_out = dw8250_serial_out32be; > } > - } else if (has_acpi_companion(p->dev)) { > - p->iotype = UPIO_MEM32; > - p->regshift = 2; > - p->serial_in = dw8250_serial_in32; > - /* So far none of there implement the Busy Functionality */ > - data->uart_16550_compatible = true; > } > > /* Platforms with iDMA */ > @@ -352,6 +346,19 @@ static void dw8250_setup_port(struct uart_port *p) > up->capabilities |= UART_CAP_AFE; > } > > +static struct property_entry dw8250_properties[] = { > + PROPERTY_ENTRY_U32("reg-io-width", 4), > + PROPERTY_ENTRY_U32("reg-shift", 2), > + PROPERTY_ENTRY_BOOL("snps,uart-16550-compatible"), > + { }, > +}; > + > +/* non 16550 compatible id list*/ > +static const struct acpi_device_id non_16550_ids[] = { > + { "HISI0031", 0 }, > + { }, > +}; > + > static int dw8250_probe(struct platform_device *pdev) > { > struct uart_8250_port uart = {}; > @@ -395,6 +402,9 @@ static int dw8250_probe(struct platform_device *pdev) > if (!data) > return -ENOMEM; > > + if (has_acpi_companion(dev) && !acpi_match_device(non_16550_ids, dev)) > + platform_device_add_properties(pdev, dw8250_properties); > + > data->dma.fn = dw8250_fallback_dma_filter; > data->usr_reg = DW_UART_USR; > p->private_data = data; > @@ -619,6 +629,7 @@ static const struct acpi_device_id dw8250_acpi_match[] = { > { "APMC0D08", 0}, > { "AMD0020", 0 }, > { "AMDI0020", 0 }, > + { "HISI0031", 0 }, > { }, > }; > MODULE_DEVICE_TABLE(acpi, dw8250_acpi_match); >