Message ID | 20210705130010.1231798-1-chenhuacai@loongson.cn |
---|---|
State | Superseded |
Headers | show |
Series | [V2] serial: 8250_pnp: Support configurable clock frequency | expand |
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
Hi, Andy > -----原始邮件----- > 发件人: andy@surfacebook.localdomain > 发送时间: 2021-07-13 04:34:41 (星期二) > 收件人: "Huacai Chen" <chenhuacai@loongson.cn> > 抄送: "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> > 主题: Re: [PATCH V2] serial: 8250_pnp: Support configurable clock frequency > > 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? Existing headers is not in order, should I sort them completely? > > ... > > > 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); 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 > > here. > > -- > With Best Regards, > Andy Shevchenko > </linux></linux></linux></linux></lvjianmin@loongson.cn></lvjianmin@loongson.cn></jiaxun.yang@flygoat.com></lixuefeng@loongson.cn></gregkh@linuxfoundation.org></chenhuacai@loongson.cn>
On Wed, Jul 14, 2021 at 5:36 AM 陈华才 <chenhuacai@loongson.cn> wrote: ... > > > #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? > 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. ... > > > 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); > 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
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: > > ... > > > > > #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? > > 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. > > ... > > > > > 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); > > 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 --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);