From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, Yu Tu <yu.tu@amlogic.com>
Cc: lkp@intel.com, kbuild-all@lists.01.org,
linux-serial@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: [tty:tty-testing 30/42] drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779,785,790,794,799.
Date: Mon, 28 Feb 2022 10:17:19 +0300 [thread overview]
Message-ID: <202202270400.rQqj5xav-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
head: 71404f653cf7858fdbb81dd5419a8a4ac4ffa20c
commit: 44023b8e1f14bc72bb773dd84dc3563fc912d210 [30/42] tty: serial: meson: Describes the calculation of the UART baud rate clock using a clock frame
config: arc-randconfig-m031-20220226 (https://download.01.org/0day-ci/archive/20220227/202202270400.rQqj5xav-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779,785,790,794,799.
vim +/pclk +832 drivers/tty/serial/meson_uart.c
ff7693d079e58f Carlo Caione 2014-08-17 737 static int meson_uart_probe(struct platform_device *pdev)
ff7693d079e58f Carlo Caione 2014-08-17 738 {
44023b8e1f14bc Yu Tu 2022-02-25 739 struct meson_uart_data *private_data;
5b680619834714 Lad Prabhakar 2021-12-24 740 struct resource *res_mem;
ff7693d079e58f Carlo Caione 2014-08-17 741 struct uart_port *port;
44023b8e1f14bc Yu Tu 2022-02-25 742 struct clk *pclk;
27d44e05d7b85d Neil Armstrong 2021-05-18 743 u32 fifosize = 64; /* Default is 64, 128 for EE UART_0 */
ff7693d079e58f Carlo Caione 2014-08-17 744 int ret = 0;
5b680619834714 Lad Prabhakar 2021-12-24 745 int irq;
ff7693d079e58f Carlo Caione 2014-08-17 746
ff7693d079e58f Carlo Caione 2014-08-17 747 if (pdev->dev.of_node)
ff7693d079e58f Carlo Caione 2014-08-17 748 pdev->id = of_alias_get_id(pdev->dev.of_node, "serial");
ff7693d079e58f Carlo Caione 2014-08-17 749
a26988e8fef4b2 Loys Ollivier 2019-01-14 750 if (pdev->id < 0) {
021212f5335229 Colin Ian King 2021-04-26 751 int id;
021212f5335229 Colin Ian King 2021-04-26 752
a26988e8fef4b2 Loys Ollivier 2019-01-14 753 for (id = AML_UART_PORT_OFFSET; id < AML_UART_PORT_NUM; id++) {
a26988e8fef4b2 Loys Ollivier 2019-01-14 754 if (!meson_ports[id]) {
a26988e8fef4b2 Loys Ollivier 2019-01-14 755 pdev->id = id;
a26988e8fef4b2 Loys Ollivier 2019-01-14 756 break;
a26988e8fef4b2 Loys Ollivier 2019-01-14 757 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 758 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 759 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 760
ff7693d079e58f Carlo Caione 2014-08-17 761 if (pdev->id < 0 || pdev->id >= AML_UART_PORT_NUM)
ff7693d079e58f Carlo Caione 2014-08-17 762 return -EINVAL;
ff7693d079e58f Carlo Caione 2014-08-17 763
ff7693d079e58f Carlo Caione 2014-08-17 764 res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ff7693d079e58f Carlo Caione 2014-08-17 765 if (!res_mem)
ff7693d079e58f Carlo Caione 2014-08-17 766 return -ENODEV;
ff7693d079e58f Carlo Caione 2014-08-17 767
44023b8e1f14bc Yu Tu 2022-02-25 768 pclk = devm_clk_get(&pdev->dev, "pclk");
44023b8e1f14bc Yu Tu 2022-02-25 769 if (IS_ERR(pclk))
44023b8e1f14bc Yu Tu 2022-02-25 770 return dev_err_probe(&pdev->dev, PTR_ERR(pclk),
44023b8e1f14bc Yu Tu 2022-02-25 771 "Failed to get the 'pclk' clock\n");
44023b8e1f14bc Yu Tu 2022-02-25 772
44023b8e1f14bc Yu Tu 2022-02-25 773 ret = clk_prepare_enable(pclk);
44023b8e1f14bc Yu Tu 2022-02-25 774 if (ret)
44023b8e1f14bc Yu Tu 2022-02-25 775 return ret;
44023b8e1f14bc Yu Tu 2022-02-25 776
5b680619834714 Lad Prabhakar 2021-12-24 777 irq = platform_get_irq(pdev, 0);
5b680619834714 Lad Prabhakar 2021-12-24 778 if (irq < 0)
5b680619834714 Lad Prabhakar 2021-12-24 779 return irq;
Do we need to do a clk_prepare_disable() on error paths?
ff7693d079e58f Carlo Caione 2014-08-17 780
27d44e05d7b85d Neil Armstrong 2021-05-18 781 of_property_read_u32(pdev->dev.of_node, "fifo-size", &fifosize);
27d44e05d7b85d Neil Armstrong 2021-05-18 782
ff7693d079e58f Carlo Caione 2014-08-17 783 if (meson_ports[pdev->id]) {
ff7693d079e58f Carlo Caione 2014-08-17 784 dev_err(&pdev->dev, "port %d already allocated\n", pdev->id);
ff7693d079e58f Carlo Caione 2014-08-17 785 return -EBUSY;
ff7693d079e58f Carlo Caione 2014-08-17 786 }
ff7693d079e58f Carlo Caione 2014-08-17 787
ff7693d079e58f Carlo Caione 2014-08-17 788 port = devm_kzalloc(&pdev->dev, sizeof(struct uart_port), GFP_KERNEL);
ff7693d079e58f Carlo Caione 2014-08-17 789 if (!port)
ff7693d079e58f Carlo Caione 2014-08-17 790 return -ENOMEM;
ff7693d079e58f Carlo Caione 2014-08-17 791
6436dd8f9b25ea Yu Tu 2022-02-25 792 port->membase = devm_ioremap_resource(&pdev->dev, res_mem);
841f913e770f3c Yu Tu 2022-02-25 793 if (IS_ERR(port->membase))
841f913e770f3c Yu Tu 2022-02-25 794 return PTR_ERR(port->membase);
841f913e770f3c Yu Tu 2022-02-25 795
44023b8e1f14bc Yu Tu 2022-02-25 796 private_data = devm_kzalloc(&pdev->dev, sizeof(*private_data),
44023b8e1f14bc Yu Tu 2022-02-25 797 GFP_KERNEL);
44023b8e1f14bc Yu Tu 2022-02-25 798 if (!private_data)
44023b8e1f14bc Yu Tu 2022-02-25 799 return -ENOMEM;
44023b8e1f14bc Yu Tu 2022-02-25 800
44023b8e1f14bc Yu Tu 2022-02-25 801 if (device_get_match_data(&pdev->dev))
44023b8e1f14bc Yu Tu 2022-02-25 802 private_data->use_xtal_clk = true;
ff7693d079e58f Carlo Caione 2014-08-17 803
ff7693d079e58f Carlo Caione 2014-08-17 804 port->iotype = UPIO_MEM;
ff7693d079e58f Carlo Caione 2014-08-17 805 port->mapbase = res_mem->start;
ff3b9cad7d6309 Heiner Kallweit 2017-04-19 806 port->mapsize = resource_size(res_mem);
5b680619834714 Lad Prabhakar 2021-12-24 807 port->irq = irq;
1b1ecaa69c4f90 Heiner Kallweit 2017-04-19 808 port->flags = UPF_BOOT_AUTOCONF | UPF_LOW_LATENCY;
dca3ac8d3bc943 Dmitry Safonov 2019-12-13 809 port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_MESON_CONSOLE);
ff7693d079e58f Carlo Caione 2014-08-17 810 port->dev = &pdev->dev;
ff7693d079e58f Carlo Caione 2014-08-17 811 port->line = pdev->id;
ff7693d079e58f Carlo Caione 2014-08-17 812 port->type = PORT_MESON;
ff7693d079e58f Carlo Caione 2014-08-17 813 port->x_char = 0;
ff7693d079e58f Carlo Caione 2014-08-17 814 port->ops = &meson_uart_ops;
27d44e05d7b85d Neil Armstrong 2021-05-18 815 port->fifosize = fifosize;
44023b8e1f14bc Yu Tu 2022-02-25 816 port->private_data = private_data;
44023b8e1f14bc Yu Tu 2022-02-25 817
44023b8e1f14bc Yu Tu 2022-02-25 818 ret = meson_uart_probe_clocks(port);
44023b8e1f14bc Yu Tu 2022-02-25 819 if (ret)
44023b8e1f14bc Yu Tu 2022-02-25 820 return ret;
ff7693d079e58f Carlo Caione 2014-08-17 821
ff7693d079e58f Carlo Caione 2014-08-17 822 meson_ports[pdev->id] = port;
ff7693d079e58f Carlo Caione 2014-08-17 823 platform_set_drvdata(pdev, port);
ff7693d079e58f Carlo Caione 2014-08-17 824
00661dd855b5b1 Ben Dooks 2015-11-18 825 /* reset port before registering (and possibly registering console) */
00661dd855b5b1 Ben Dooks 2015-11-18 826 meson_uart_reset(port);
00661dd855b5b1 Ben Dooks 2015-11-18 827
ff7693d079e58f Carlo Caione 2014-08-17 828 ret = uart_add_one_port(&meson_uart_driver, port);
ff7693d079e58f Carlo Caione 2014-08-17 829 if (ret)
ff7693d079e58f Carlo Caione 2014-08-17 830 meson_ports[pdev->id] = NULL;
ff7693d079e58f Carlo Caione 2014-08-17 831
ff7693d079e58f Carlo Caione 2014-08-17 @832 return ret;
ff7693d079e58f Carlo Caione 2014-08-17 833 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [tty:tty-testing 30/42] drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779, 785, 790, 794, 799.
Date: Sun, 27 Feb 2022 04:16:10 +0800 [thread overview]
Message-ID: <202202270400.rQqj5xav-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8616 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-serial(a)vger.kernel.org
TO: Yu Tu <yu.tu@amlogic.com>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
head: 71404f653cf7858fdbb81dd5419a8a4ac4ffa20c
commit: 44023b8e1f14bc72bb773dd84dc3563fc912d210 [30/42] tty: serial: meson: Describes the calculation of the UART baud rate clock using a clock frame
:::::: branch date: 11 hours ago
:::::: commit date: 11 hours ago
config: arc-randconfig-m031-20220226 (https://download.01.org/0day-ci/archive/20220227/202202270400.rQqj5xav-lkp(a)intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779,785,790,794,799.
vim +/pclk +832 drivers/tty/serial/meson_uart.c
9f60e0e7aea66e Helmut Klein 2017-06-14 736
ff7693d079e58f Carlo Caione 2014-08-17 737 static int meson_uart_probe(struct platform_device *pdev)
ff7693d079e58f Carlo Caione 2014-08-17 738 {
44023b8e1f14bc Yu Tu 2022-02-25 739 struct meson_uart_data *private_data;
5b680619834714 Lad Prabhakar 2021-12-24 740 struct resource *res_mem;
ff7693d079e58f Carlo Caione 2014-08-17 741 struct uart_port *port;
44023b8e1f14bc Yu Tu 2022-02-25 742 struct clk *pclk;
27d44e05d7b85d Neil Armstrong 2021-05-18 743 u32 fifosize = 64; /* Default is 64, 128 for EE UART_0 */
ff7693d079e58f Carlo Caione 2014-08-17 744 int ret = 0;
5b680619834714 Lad Prabhakar 2021-12-24 745 int irq;
ff7693d079e58f Carlo Caione 2014-08-17 746
ff7693d079e58f Carlo Caione 2014-08-17 747 if (pdev->dev.of_node)
ff7693d079e58f Carlo Caione 2014-08-17 748 pdev->id = of_alias_get_id(pdev->dev.of_node, "serial");
ff7693d079e58f Carlo Caione 2014-08-17 749
a26988e8fef4b2 Loys Ollivier 2019-01-14 750 if (pdev->id < 0) {
021212f5335229 Colin Ian King 2021-04-26 751 int id;
021212f5335229 Colin Ian King 2021-04-26 752
a26988e8fef4b2 Loys Ollivier 2019-01-14 753 for (id = AML_UART_PORT_OFFSET; id < AML_UART_PORT_NUM; id++) {
a26988e8fef4b2 Loys Ollivier 2019-01-14 754 if (!meson_ports[id]) {
a26988e8fef4b2 Loys Ollivier 2019-01-14 755 pdev->id = id;
a26988e8fef4b2 Loys Ollivier 2019-01-14 756 break;
a26988e8fef4b2 Loys Ollivier 2019-01-14 757 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 758 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 759 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 760
ff7693d079e58f Carlo Caione 2014-08-17 761 if (pdev->id < 0 || pdev->id >= AML_UART_PORT_NUM)
ff7693d079e58f Carlo Caione 2014-08-17 762 return -EINVAL;
ff7693d079e58f Carlo Caione 2014-08-17 763
ff7693d079e58f Carlo Caione 2014-08-17 764 res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ff7693d079e58f Carlo Caione 2014-08-17 765 if (!res_mem)
ff7693d079e58f Carlo Caione 2014-08-17 766 return -ENODEV;
ff7693d079e58f Carlo Caione 2014-08-17 767
44023b8e1f14bc Yu Tu 2022-02-25 768 pclk = devm_clk_get(&pdev->dev, "pclk");
44023b8e1f14bc Yu Tu 2022-02-25 769 if (IS_ERR(pclk))
44023b8e1f14bc Yu Tu 2022-02-25 770 return dev_err_probe(&pdev->dev, PTR_ERR(pclk),
44023b8e1f14bc Yu Tu 2022-02-25 771 "Failed to get the 'pclk' clock\n");
44023b8e1f14bc Yu Tu 2022-02-25 772
44023b8e1f14bc Yu Tu 2022-02-25 773 ret = clk_prepare_enable(pclk);
44023b8e1f14bc Yu Tu 2022-02-25 774 if (ret)
44023b8e1f14bc Yu Tu 2022-02-25 775 return ret;
44023b8e1f14bc Yu Tu 2022-02-25 776
5b680619834714 Lad Prabhakar 2021-12-24 777 irq = platform_get_irq(pdev, 0);
5b680619834714 Lad Prabhakar 2021-12-24 778 if (irq < 0)
5b680619834714 Lad Prabhakar 2021-12-24 779 return irq;
ff7693d079e58f Carlo Caione 2014-08-17 780
27d44e05d7b85d Neil Armstrong 2021-05-18 781 of_property_read_u32(pdev->dev.of_node, "fifo-size", &fifosize);
27d44e05d7b85d Neil Armstrong 2021-05-18 782
ff7693d079e58f Carlo Caione 2014-08-17 783 if (meson_ports[pdev->id]) {
ff7693d079e58f Carlo Caione 2014-08-17 784 dev_err(&pdev->dev, "port %d already allocated\n", pdev->id);
ff7693d079e58f Carlo Caione 2014-08-17 785 return -EBUSY;
ff7693d079e58f Carlo Caione 2014-08-17 786 }
ff7693d079e58f Carlo Caione 2014-08-17 787
ff7693d079e58f Carlo Caione 2014-08-17 788 port = devm_kzalloc(&pdev->dev, sizeof(struct uart_port), GFP_KERNEL);
ff7693d079e58f Carlo Caione 2014-08-17 789 if (!port)
ff7693d079e58f Carlo Caione 2014-08-17 790 return -ENOMEM;
ff7693d079e58f Carlo Caione 2014-08-17 791
6436dd8f9b25ea Yu Tu 2022-02-25 792 port->membase = devm_ioremap_resource(&pdev->dev, res_mem);
841f913e770f3c Yu Tu 2022-02-25 793 if (IS_ERR(port->membase))
841f913e770f3c Yu Tu 2022-02-25 794 return PTR_ERR(port->membase);
841f913e770f3c Yu Tu 2022-02-25 795
44023b8e1f14bc Yu Tu 2022-02-25 796 private_data = devm_kzalloc(&pdev->dev, sizeof(*private_data),
44023b8e1f14bc Yu Tu 2022-02-25 797 GFP_KERNEL);
44023b8e1f14bc Yu Tu 2022-02-25 798 if (!private_data)
44023b8e1f14bc Yu Tu 2022-02-25 799 return -ENOMEM;
44023b8e1f14bc Yu Tu 2022-02-25 800
44023b8e1f14bc Yu Tu 2022-02-25 801 if (device_get_match_data(&pdev->dev))
44023b8e1f14bc Yu Tu 2022-02-25 802 private_data->use_xtal_clk = true;
ff7693d079e58f Carlo Caione 2014-08-17 803
ff7693d079e58f Carlo Caione 2014-08-17 804 port->iotype = UPIO_MEM;
ff7693d079e58f Carlo Caione 2014-08-17 805 port->mapbase = res_mem->start;
ff3b9cad7d6309 Heiner Kallweit 2017-04-19 806 port->mapsize = resource_size(res_mem);
5b680619834714 Lad Prabhakar 2021-12-24 807 port->irq = irq;
1b1ecaa69c4f90 Heiner Kallweit 2017-04-19 808 port->flags = UPF_BOOT_AUTOCONF | UPF_LOW_LATENCY;
dca3ac8d3bc943 Dmitry Safonov 2019-12-13 809 port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_MESON_CONSOLE);
ff7693d079e58f Carlo Caione 2014-08-17 810 port->dev = &pdev->dev;
ff7693d079e58f Carlo Caione 2014-08-17 811 port->line = pdev->id;
ff7693d079e58f Carlo Caione 2014-08-17 812 port->type = PORT_MESON;
ff7693d079e58f Carlo Caione 2014-08-17 813 port->x_char = 0;
ff7693d079e58f Carlo Caione 2014-08-17 814 port->ops = &meson_uart_ops;
27d44e05d7b85d Neil Armstrong 2021-05-18 815 port->fifosize = fifosize;
44023b8e1f14bc Yu Tu 2022-02-25 816 port->private_data = private_data;
44023b8e1f14bc Yu Tu 2022-02-25 817
44023b8e1f14bc Yu Tu 2022-02-25 818 ret = meson_uart_probe_clocks(port);
44023b8e1f14bc Yu Tu 2022-02-25 819 if (ret)
44023b8e1f14bc Yu Tu 2022-02-25 820 return ret;
ff7693d079e58f Carlo Caione 2014-08-17 821
ff7693d079e58f Carlo Caione 2014-08-17 822 meson_ports[pdev->id] = port;
ff7693d079e58f Carlo Caione 2014-08-17 823 platform_set_drvdata(pdev, port);
ff7693d079e58f Carlo Caione 2014-08-17 824
00661dd855b5b1 Ben Dooks 2015-11-18 825 /* reset port before registering (and possibly registering console) */
00661dd855b5b1 Ben Dooks 2015-11-18 826 meson_uart_reset(port);
00661dd855b5b1 Ben Dooks 2015-11-18 827
ff7693d079e58f Carlo Caione 2014-08-17 828 ret = uart_add_one_port(&meson_uart_driver, port);
ff7693d079e58f Carlo Caione 2014-08-17 829 if (ret)
ff7693d079e58f Carlo Caione 2014-08-17 830 meson_ports[pdev->id] = NULL;
ff7693d079e58f Carlo Caione 2014-08-17 831
ff7693d079e58f Carlo Caione 2014-08-17 @832 return ret;
ff7693d079e58f Carlo Caione 2014-08-17 833 }
ff7693d079e58f Carlo Caione 2014-08-17 834
:::::: The code at line 832 was first introduced by commit
:::::: ff7693d079e58fb62d735b7b8085b53fcfb74528 ARM: meson: serial: add MesonX SoC on-chip uart driver
:::::: TO: Carlo Caione <carlo@caione.org>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [tty:tty-testing 30/42] drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779, 785, 790, 794, 799.
Date: Mon, 28 Feb 2022 10:17:19 +0300 [thread overview]
Message-ID: <202202270400.rQqj5xav-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8063 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
head: 71404f653cf7858fdbb81dd5419a8a4ac4ffa20c
commit: 44023b8e1f14bc72bb773dd84dc3563fc912d210 [30/42] tty: serial: meson: Describes the calculation of the UART baud rate clock using a clock frame
config: arc-randconfig-m031-20220226 (https://download.01.org/0day-ci/archive/20220227/202202270400.rQqj5xav-lkp(a)intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779,785,790,794,799.
vim +/pclk +832 drivers/tty/serial/meson_uart.c
ff7693d079e58f Carlo Caione 2014-08-17 737 static int meson_uart_probe(struct platform_device *pdev)
ff7693d079e58f Carlo Caione 2014-08-17 738 {
44023b8e1f14bc Yu Tu 2022-02-25 739 struct meson_uart_data *private_data;
5b680619834714 Lad Prabhakar 2021-12-24 740 struct resource *res_mem;
ff7693d079e58f Carlo Caione 2014-08-17 741 struct uart_port *port;
44023b8e1f14bc Yu Tu 2022-02-25 742 struct clk *pclk;
27d44e05d7b85d Neil Armstrong 2021-05-18 743 u32 fifosize = 64; /* Default is 64, 128 for EE UART_0 */
ff7693d079e58f Carlo Caione 2014-08-17 744 int ret = 0;
5b680619834714 Lad Prabhakar 2021-12-24 745 int irq;
ff7693d079e58f Carlo Caione 2014-08-17 746
ff7693d079e58f Carlo Caione 2014-08-17 747 if (pdev->dev.of_node)
ff7693d079e58f Carlo Caione 2014-08-17 748 pdev->id = of_alias_get_id(pdev->dev.of_node, "serial");
ff7693d079e58f Carlo Caione 2014-08-17 749
a26988e8fef4b2 Loys Ollivier 2019-01-14 750 if (pdev->id < 0) {
021212f5335229 Colin Ian King 2021-04-26 751 int id;
021212f5335229 Colin Ian King 2021-04-26 752
a26988e8fef4b2 Loys Ollivier 2019-01-14 753 for (id = AML_UART_PORT_OFFSET; id < AML_UART_PORT_NUM; id++) {
a26988e8fef4b2 Loys Ollivier 2019-01-14 754 if (!meson_ports[id]) {
a26988e8fef4b2 Loys Ollivier 2019-01-14 755 pdev->id = id;
a26988e8fef4b2 Loys Ollivier 2019-01-14 756 break;
a26988e8fef4b2 Loys Ollivier 2019-01-14 757 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 758 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 759 }
a26988e8fef4b2 Loys Ollivier 2019-01-14 760
ff7693d079e58f Carlo Caione 2014-08-17 761 if (pdev->id < 0 || pdev->id >= AML_UART_PORT_NUM)
ff7693d079e58f Carlo Caione 2014-08-17 762 return -EINVAL;
ff7693d079e58f Carlo Caione 2014-08-17 763
ff7693d079e58f Carlo Caione 2014-08-17 764 res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ff7693d079e58f Carlo Caione 2014-08-17 765 if (!res_mem)
ff7693d079e58f Carlo Caione 2014-08-17 766 return -ENODEV;
ff7693d079e58f Carlo Caione 2014-08-17 767
44023b8e1f14bc Yu Tu 2022-02-25 768 pclk = devm_clk_get(&pdev->dev, "pclk");
44023b8e1f14bc Yu Tu 2022-02-25 769 if (IS_ERR(pclk))
44023b8e1f14bc Yu Tu 2022-02-25 770 return dev_err_probe(&pdev->dev, PTR_ERR(pclk),
44023b8e1f14bc Yu Tu 2022-02-25 771 "Failed to get the 'pclk' clock\n");
44023b8e1f14bc Yu Tu 2022-02-25 772
44023b8e1f14bc Yu Tu 2022-02-25 773 ret = clk_prepare_enable(pclk);
44023b8e1f14bc Yu Tu 2022-02-25 774 if (ret)
44023b8e1f14bc Yu Tu 2022-02-25 775 return ret;
44023b8e1f14bc Yu Tu 2022-02-25 776
5b680619834714 Lad Prabhakar 2021-12-24 777 irq = platform_get_irq(pdev, 0);
5b680619834714 Lad Prabhakar 2021-12-24 778 if (irq < 0)
5b680619834714 Lad Prabhakar 2021-12-24 779 return irq;
Do we need to do a clk_prepare_disable() on error paths?
ff7693d079e58f Carlo Caione 2014-08-17 780
27d44e05d7b85d Neil Armstrong 2021-05-18 781 of_property_read_u32(pdev->dev.of_node, "fifo-size", &fifosize);
27d44e05d7b85d Neil Armstrong 2021-05-18 782
ff7693d079e58f Carlo Caione 2014-08-17 783 if (meson_ports[pdev->id]) {
ff7693d079e58f Carlo Caione 2014-08-17 784 dev_err(&pdev->dev, "port %d already allocated\n", pdev->id);
ff7693d079e58f Carlo Caione 2014-08-17 785 return -EBUSY;
ff7693d079e58f Carlo Caione 2014-08-17 786 }
ff7693d079e58f Carlo Caione 2014-08-17 787
ff7693d079e58f Carlo Caione 2014-08-17 788 port = devm_kzalloc(&pdev->dev, sizeof(struct uart_port), GFP_KERNEL);
ff7693d079e58f Carlo Caione 2014-08-17 789 if (!port)
ff7693d079e58f Carlo Caione 2014-08-17 790 return -ENOMEM;
ff7693d079e58f Carlo Caione 2014-08-17 791
6436dd8f9b25ea Yu Tu 2022-02-25 792 port->membase = devm_ioremap_resource(&pdev->dev, res_mem);
841f913e770f3c Yu Tu 2022-02-25 793 if (IS_ERR(port->membase))
841f913e770f3c Yu Tu 2022-02-25 794 return PTR_ERR(port->membase);
841f913e770f3c Yu Tu 2022-02-25 795
44023b8e1f14bc Yu Tu 2022-02-25 796 private_data = devm_kzalloc(&pdev->dev, sizeof(*private_data),
44023b8e1f14bc Yu Tu 2022-02-25 797 GFP_KERNEL);
44023b8e1f14bc Yu Tu 2022-02-25 798 if (!private_data)
44023b8e1f14bc Yu Tu 2022-02-25 799 return -ENOMEM;
44023b8e1f14bc Yu Tu 2022-02-25 800
44023b8e1f14bc Yu Tu 2022-02-25 801 if (device_get_match_data(&pdev->dev))
44023b8e1f14bc Yu Tu 2022-02-25 802 private_data->use_xtal_clk = true;
ff7693d079e58f Carlo Caione 2014-08-17 803
ff7693d079e58f Carlo Caione 2014-08-17 804 port->iotype = UPIO_MEM;
ff7693d079e58f Carlo Caione 2014-08-17 805 port->mapbase = res_mem->start;
ff3b9cad7d6309 Heiner Kallweit 2017-04-19 806 port->mapsize = resource_size(res_mem);
5b680619834714 Lad Prabhakar 2021-12-24 807 port->irq = irq;
1b1ecaa69c4f90 Heiner Kallweit 2017-04-19 808 port->flags = UPF_BOOT_AUTOCONF | UPF_LOW_LATENCY;
dca3ac8d3bc943 Dmitry Safonov 2019-12-13 809 port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_MESON_CONSOLE);
ff7693d079e58f Carlo Caione 2014-08-17 810 port->dev = &pdev->dev;
ff7693d079e58f Carlo Caione 2014-08-17 811 port->line = pdev->id;
ff7693d079e58f Carlo Caione 2014-08-17 812 port->type = PORT_MESON;
ff7693d079e58f Carlo Caione 2014-08-17 813 port->x_char = 0;
ff7693d079e58f Carlo Caione 2014-08-17 814 port->ops = &meson_uart_ops;
27d44e05d7b85d Neil Armstrong 2021-05-18 815 port->fifosize = fifosize;
44023b8e1f14bc Yu Tu 2022-02-25 816 port->private_data = private_data;
44023b8e1f14bc Yu Tu 2022-02-25 817
44023b8e1f14bc Yu Tu 2022-02-25 818 ret = meson_uart_probe_clocks(port);
44023b8e1f14bc Yu Tu 2022-02-25 819 if (ret)
44023b8e1f14bc Yu Tu 2022-02-25 820 return ret;
ff7693d079e58f Carlo Caione 2014-08-17 821
ff7693d079e58f Carlo Caione 2014-08-17 822 meson_ports[pdev->id] = port;
ff7693d079e58f Carlo Caione 2014-08-17 823 platform_set_drvdata(pdev, port);
ff7693d079e58f Carlo Caione 2014-08-17 824
00661dd855b5b1 Ben Dooks 2015-11-18 825 /* reset port before registering (and possibly registering console) */
00661dd855b5b1 Ben Dooks 2015-11-18 826 meson_uart_reset(port);
00661dd855b5b1 Ben Dooks 2015-11-18 827
ff7693d079e58f Carlo Caione 2014-08-17 828 ret = uart_add_one_port(&meson_uart_driver, port);
ff7693d079e58f Carlo Caione 2014-08-17 829 if (ret)
ff7693d079e58f Carlo Caione 2014-08-17 830 meson_ports[pdev->id] = NULL;
ff7693d079e58f Carlo Caione 2014-08-17 831
ff7693d079e58f Carlo Caione 2014-08-17 @832 return ret;
ff7693d079e58f Carlo Caione 2014-08-17 833 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-02-28 7:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-26 20:16 kernel test robot [this message]
2022-02-28 7:17 ` [tty:tty-testing 30/42] drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779, 785, 790, 794, 799 Dan Carpenter
2022-02-28 7:17 ` [tty:tty-testing 30/42] drivers/tty/serial/meson_uart.c:832 meson_uart_probe() warn: 'pclk' not released on lines: 779,785,790,794,799 Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202202270400.rQqj5xav-lkp@intel.com \
--to=dan.carpenter@oracle.com \
--cc=gregkh@linuxfoundation.org \
--cc=kbuild-all@lists.01.org \
--cc=kbuild@lists.01.org \
--cc=linux-serial@vger.kernel.org \
--cc=lkp@intel.com \
--cc=yu.tu@amlogic.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.