diff mbox series

[V2] serial: 8250_pnp: Support configurable clock frequency

Message ID 20210705130010.1231798-1-chenhuacai@loongson.cn
State Superseded
Headers show
Series [V2] serial: 8250_pnp: Support configurable clock frequency | expand

Commit Message

Huacai Chen July 5, 2021, 1 p.m. UTC
From: Jianmin Lv <lvjianmin@loongson.cn>

ACPI-based Loongson boards need configurable rather than fixed clock
frequency for serial ports.

Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
V2: Remove unnecessary braces for single statement blocks 

 drivers/tty/serial/8250/8250_pnp.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

andy@surfacebook.localdomain July 12, 2021, 8:34 p.m. UTC | #1
Mon, Jul 05, 2021 at 09:00:10PM +0800, Huacai Chen kirjoitti:
> From: Jianmin Lv <lvjianmin@loongson.cn>

> 

> ACPI-based Loongson boards need configurable rather than fixed clock

> frequency for serial ports.


...

>  #include <linux/kernel.h>

>  #include <linux/serial_core.h>

>  #include <linux/bitops.h>

> +#include <linux/property.h>


Can you try to keep it ordered (to some extend), please?

...

>  	uart.port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;

>  	if (pnp_irq_flags(dev, 0) & IORESOURCE_IRQ_SHAREABLE)

>  		uart.port.flags |= UPF_SHARE_IRQ;

> -	uart.port.uartclk = 1843200;

> +	if (device_property_read_u32(&dev->dev, "clock-frequency", &uart.port.uartclk))

> +		uart.port.uartclk = 1843200;

>  	uart.port.dev = &dev->dev;


You can avoid conditional completely by calling 

	device_property_read_u32(&dev->dev, "clock-frequency", &uart.port.uartclk);

here.

-- 
With Best Regards,
Andy Shevchenko
Huacai Chen July 14, 2021, 2:36 a.m. UTC | #2
Hi, Andy


&gt; -----原始邮件-----
&gt; 发件人: andy@surfacebook.localdomain
&gt; 发送时间: 2021-07-13 04:34:41 (星期二)
&gt; 收件人: "Huacai Chen" <chenhuacai@loongson.cn>
&gt; 抄送: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>, linux-serial@vger.kernel.org, "Xuefeng Li" <lixuefeng@loongson.cn>, "Jiaxun Yang" <jiaxun.yang@flygoat.com>, "Jianmin Lv" <lvjianmin@loongson.cn>
&gt; 主题: Re: [PATCH V2] serial: 8250_pnp: Support configurable clock frequency
&gt; 
&gt; Mon, Jul 05, 2021 at 09:00:10PM +0800, Huacai Chen kirjoitti:
&gt; &gt; From: Jianmin Lv <lvjianmin@loongson.cn>
&gt; &gt; 
&gt; &gt; ACPI-based Loongson boards need configurable rather than fixed clock
&gt; &gt; frequency for serial ports.
&gt; 
&gt; ...
&gt; 
&gt; &gt;  #include <linux kernel.h="">
&gt; &gt;  #include <linux serial_core.h="">
&gt; &gt;  #include <linux bitops.h="">
&gt; &gt; +#include <linux property.h="">
&gt; 
&gt; Can you try to keep it ordered (to some extend), please?
Existing headers is not in order, should I sort them completely?

&gt; 
&gt; ...
&gt; 
&gt; &gt;  	uart.port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;
&gt; &gt;  	if (pnp_irq_flags(dev, 0) &amp; IORESOURCE_IRQ_SHAREABLE)
&gt; &gt;  		uart.port.flags |= UPF_SHARE_IRQ;
&gt; &gt; -	uart.port.uartclk = 1843200;
&gt; &gt; +	if (device_property_read_u32(&amp;dev-&gt;dev, "clock-frequency", &amp;uart.port.uartclk))
&gt; &gt; +		uart.port.uartclk = 1843200;
&gt; &gt;  	uart.port.dev = &amp;dev-&gt;dev;
&gt; 
&gt; You can avoid conditional completely by calling 
&gt; 
&gt; 	device_property_read_u32(&amp;dev-&gt;dev, "clock-frequency", &amp;uart.port.uartclk);
I want to get the property by this function, and set to default value (1843200) if fails. If remove the condition, how to set the default? Thanks.

Huacai
&gt; 
&gt; here.
&gt; 
&gt; -- 
&gt; With Best Regards,
&gt; Andy Shevchenko
&gt; 
</linux></linux></linux></linux></lvjianmin@loongson.cn></lvjianmin@loongson.cn></jiaxun.yang@flygoat.com></lixuefeng@loongson.cn></gregkh@linuxfoundation.org></chenhuacai@loongson.cn>
Andy Shevchenko July 14, 2021, 8:57 a.m. UTC | #3
On Wed, Jul 14, 2021 at 5:36 AM 陈华才 <chenhuacai@loongson.cn> wrote:

...

> &gt; &gt;  #include <linux kernel.h="">

> &gt; &gt;  #include <linux serial_core.h="">

> &gt; &gt;  #include <linux bitops.h="">

> &gt; &gt; +#include <linux property.h="">

> &gt;

> &gt; Can you try to keep it ordered (to some extend), please?

> Existing headers is not in order,


That's why I added in the parentheses "to some extent".

> should I sort them completely?


Just put property.h before serial_core.h.

...

> &gt; &gt;       uart.port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;

> &gt; &gt;       if (pnp_irq_flags(dev, 0) &amp; IORESOURCE_IRQ_SHAREABLE)

> &gt; &gt;               uart.port.flags |= UPF_SHARE_IRQ;

> &gt; &gt; -     uart.port.uartclk = 1843200;

> &gt; &gt; +     if (device_property_read_u32(&amp;dev-&gt;dev, "clock-frequency", &amp;uart.port.uartclk))

> &gt; &gt; +             uart.port.uartclk = 1843200;

> &gt; &gt;       uart.port.dev = &amp;dev-&gt;dev;

> &gt;

> &gt; You can avoid conditional completely by calling

> &gt;

> &gt;    device_property_read_u32(&amp;dev-&gt;dev, "clock-frequency", &amp;uart.port.uartclk);

> I want to get the property by this function, and set to default value (1843200) if fails. If remove the condition, how to set the default? Thanks.


As I explained above.

x = $default_value;
device_property_read_u32(..., &x);

-- 
With Best Regards,
Andy Shevchenko
Huacai Chen July 15, 2021, 4:46 a.m. UTC | #4
Hi, Andy,

On Wed, Jul 14, 2021 at 4:58 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>

> On Wed, Jul 14, 2021 at 5:36 AM 陈华才 <chenhuacai@loongson.cn> wrote:

>

> ...

>

> > &gt; &gt;  #include <linux kernel.h="">

> > &gt; &gt;  #include <linux serial_core.h="">

> > &gt; &gt;  #include <linux bitops.h="">

> > &gt; &gt; +#include <linux property.h="">

> > &gt;

> > &gt; Can you try to keep it ordered (to some extend), please?

> > Existing headers is not in order,

>

> That's why I added in the parentheses "to some extent".

>

> > should I sort them completely?

>

> Just put property.h before serial_core.h.

>

> ...

>

> > &gt; &gt;       uart.port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;

> > &gt; &gt;       if (pnp_irq_flags(dev, 0) &amp; IORESOURCE_IRQ_SHAREABLE)

> > &gt; &gt;               uart.port.flags |= UPF_SHARE_IRQ;

> > &gt; &gt; -     uart.port.uartclk = 1843200;

> > &gt; &gt; +     if (device_property_read_u32(&amp;dev-&gt;dev, "clock-frequency", &amp;uart.port.uartclk))

> > &gt; &gt; +             uart.port.uartclk = 1843200;

> > &gt; &gt;       uart.port.dev = &amp;dev-&gt;dev;

> > &gt;

> > &gt; You can avoid conditional completely by calling

> > &gt;

> > &gt;    device_property_read_u32(&amp;dev-&gt;dev, "clock-frequency", &amp;uart.port.uartclk);

> > I want to get the property by this function, and set to default value (1843200) if fails. If remove the condition, how to set the default? Thanks.

>

> As I explained above.

>

> x = $default_value;

> device_property_read_u32(..., &x);

I know, thanks.

Huacai
>

> --

> With Best Regards,

> Andy Shevchenko
diff mbox series

Patch

diff --git a/drivers/tty/serial/8250/8250_pnp.c b/drivers/tty/serial/8250/8250_pnp.c
index de90d681b64c..5f8fc724ba46 100644
--- a/drivers/tty/serial/8250/8250_pnp.c
+++ b/drivers/tty/serial/8250/8250_pnp.c
@@ -15,6 +15,7 @@ 
 #include <linux/kernel.h>
 #include <linux/serial_core.h>
 #include <linux/bitops.h>
+#include <linux/property.h>
 
 #include <asm/byteorder.h>
 
@@ -474,7 +475,8 @@  serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
 	uart.port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;
 	if (pnp_irq_flags(dev, 0) & IORESOURCE_IRQ_SHAREABLE)
 		uart.port.flags |= UPF_SHARE_IRQ;
-	uart.port.uartclk = 1843200;
+	if (device_property_read_u32(&dev->dev, "clock-frequency", &uart.port.uartclk))
+		uart.port.uartclk = 1843200;
 	uart.port.dev = &dev->dev;
 
 	line = serial8250_register_8250_port(&uart);