Re: [PATCH v6 11/12] tty: serial: Add Nuvoton ma35d1 serial driver support

From: kernel test robot
Date: Thu Mar 30 2023 - 20:30:40 EST


Hi Jacky,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on clk/clk-next linus/master]
[cannot apply to pza/reset/next pza/imx-drm/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Jacky-Huang/arm64-Kconfig-platforms-Add-config-for-Nuvoton-MA35-platform/20230328-102245
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20230328021912.177301-12-ychuang570808%40gmail.com
patch subject: [PATCH v6 11/12] tty: serial: Add Nuvoton ma35d1 serial driver support
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20230331/202303310829.6uVozWbB-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/380d83a62e873855024ca4c660865c654a62748a
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jacky-Huang/arm64-Kconfig-platforms-Add-config-for-Nuvoton-MA35-platform/20230328-102245
git checkout 380d83a62e873855024ca4c660865c654a62748a
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=powerpc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/tty/serial/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202303310829.6uVozWbB-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/tty/serial/ma35d1_serial.c:672:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (pdev->dev.of_node) {
^~~~~~~~~~~~~~~~~
drivers/tty/serial/ma35d1_serial.c:679:27: note: uninitialized use occurs here
up = &ma35d1serial_ports[ret];
^~~
drivers/tty/serial/ma35d1_serial.c:672:2: note: remove the 'if' if its condition is always true
if (pdev->dev.of_node) {
^~~~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/ma35d1_serial.c:668:9: note: initialize the variable 'ret' to silence this warning
int ret;
^
= 0
>> drivers/tty/serial/ma35d1_serial.c:730:6: warning: variable 'i' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (dev->dev.of_node)
^~~~~~~~~~~~~~~~
drivers/tty/serial/ma35d1_serial.c:732:6: note: uninitialized use occurs here
if (i < 0) {
^
drivers/tty/serial/ma35d1_serial.c:730:2: note: remove the 'if' if its condition is always true
if (dev->dev.of_node)
^~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/ma35d1_serial.c:727:7: note: initialize the variable 'i' to silence this warning
int i;
^
= 0
drivers/tty/serial/ma35d1_serial.c:750:6: warning: variable 'i' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (dev->dev.of_node)
^~~~~~~~~~~~~~~~
drivers/tty/serial/ma35d1_serial.c:752:6: note: uninitialized use occurs here
if (i < 0) {
^
drivers/tty/serial/ma35d1_serial.c:750:2: note: remove the 'if' if its condition is always true
if (dev->dev.of_node)
^~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/ma35d1_serial.c:747:7: note: initialize the variable 'i' to silence this warning
int i;
^
= 0
3 warnings generated.


vim +672 drivers/tty/serial/ma35d1_serial.c

658
659 /*
660 * Register a set of serial devices attached to a platform device.
661 * The list is terminated with a zero flags entry, which means we expect
662 * all entries to have at least UPF_BOOT_AUTOCONF set.
663 */
664 static int ma35d1serial_probe(struct platform_device *pdev)
665 {
666 struct resource *res_mem;
667 struct uart_ma35d1_port *up;
668 int ret;
669 struct clk *clk;
670 int err;
671
> 672 if (pdev->dev.of_node) {
673 ret = of_alias_get_id(pdev->dev.of_node, "serial");
674 if (ret < 0) {
675 dev_err(&pdev->dev, "failed to get alias/pdev id, errno %d\n", ret);
676 return ret;
677 }
678 }
679 up = &ma35d1serial_ports[ret];
680 up->port.line = ret;
681 res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
682 if (!res_mem)
683 return -ENODEV;
684
685 up->port.iobase = res_mem->start;
686 up->port.membase = ioremap(up->port.iobase, UART_REG_SIZE);
687 up->port.ops = &ma35d1serial_ops;
688
689 spin_lock_init(&up->port.lock);
690
691 clk = of_clk_get(pdev->dev.of_node, 0);
692 if (IS_ERR(clk)) {
693 err = PTR_ERR(clk);
694 dev_err(&pdev->dev, "failed to get core clk: %d\n", err);
695 return -ENOENT;
696 }
697 err = clk_prepare_enable(clk);
698 if (err)
699 return -ENOENT;
700
701 if (up->port.line != 0)
702 up->port.uartclk = clk_get_rate(clk);
703 up->port.irq = platform_get_irq(pdev, 0);
704 up->port.dev = &pdev->dev;
705 up->port.flags = UPF_BOOT_AUTOCONF;
706 ret = uart_add_one_port(&ma35d1serial_reg, &up->port);
707 platform_set_drvdata(pdev, up);
708 return 0;
709 }
710
711 /*
712 * Remove serial ports registered against a platform device.
713 */
714 static int ma35d1serial_remove(struct platform_device *dev)
715 {
716 struct uart_port *port = platform_get_drvdata(dev);
717
718 if (port) {
719 uart_remove_one_port(&ma35d1serial_reg, port);
720 free_irq(port->irq, port);
721 }
722 return 0;
723 }
724
725 static int ma35d1serial_suspend(struct platform_device *dev, pm_message_t state)
726 {
727 int i;
728 struct uart_ma35d1_port *up;
729
> 730 if (dev->dev.of_node)
731 i = of_alias_get_id(dev->dev.of_node, "serial");
732 if (i < 0) {
733 dev_err(&dev->dev, "failed to get alias/pdev id, errno %d\n", i);
734 return i;
735 }
736 up = &ma35d1serial_ports[i];
737 if (i == 0) {
738 up->console_baud_rate = serial_in(up, UART_REG_BAUD);
739 up->console_line = serial_in(up, UART_REG_LCR);
740 up->console_int = serial_in(up, UART_REG_IER);
741 }
742 return 0;
743 }
744

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests