public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* drivers/tty/serial/8250/8250_aspeed_vuart.c:563:1: warning: the frame size of 1048 bytes is larger than 1024 bytes
@ 2026-03-14 22:50 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-03-14 22:50 UTC (permalink / raw)
  To: Zev Weiss; +Cc: oe-kbuild-all, linux-kernel, Andrew Jeffery

Hi Zev,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   80234b5ab240f52fa45d201e899e207b9265ef91
commit: ca03042f0f1221c3173bbe81ebd974b91a4dbb15 serial: 8250_aspeed_vuart: add aspeed, lpc-io-reg and aspeed, lpc-interrupts DT properties
date:   4 years, 11 months ago
config: arm-allyesconfig (https://download.01.org/0day-ci/archive/20260315/202603150627.XIbmGTjI-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260315/202603150627.XIbmGTjI-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603150627.XIbmGTjI-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/tty/serial/8250/8250_aspeed_vuart.c: In function 'aspeed_vuart_probe':
>> drivers/tty/serial/8250/8250_aspeed_vuart.c:563:1: warning: the frame size of 1048 bytes is larger than 1024 bytes [-Wframe-larger-than=]
     563 | }
         | ^


vim +563 drivers/tty/serial/8250/8250_aspeed_vuart.c

ca03042f0f1221 Zev Weiss          2021-04-11  404  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  405  static int aspeed_vuart_probe(struct platform_device *pdev)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  406  {
8d310c9107a2a3 Oskar Senft        2019-09-05  407  	struct of_phandle_args sirq_polarity_sense_args;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  408  	struct uart_8250_port port;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  409  	struct aspeed_vuart *vuart;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  410  	struct device_node *np;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  411  	struct resource *res;
ca03042f0f1221 Zev Weiss          2021-04-11  412  	u32 clk, prop, sirq[2];
ca03042f0f1221 Zev Weiss          2021-04-11  413  	int rc, sirq_polarity;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  414  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  415  	np = pdev->dev.of_node;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  416  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  417  	vuart = devm_kzalloc(&pdev->dev, sizeof(*vuart), GFP_KERNEL);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  418  	if (!vuart)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  419  		return -ENOMEM;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  420  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  421  	vuart->dev = &pdev->dev;
5909c0bf9c7a17 Jeremy Kerr        2018-03-27  422  	timer_setup(&vuart->unthrottle_timer, aspeed_vuart_unthrottle_exp, 0);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  423  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  424  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  425  	vuart->regs = devm_ioremap_resource(&pdev->dev, res);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  426  	if (IS_ERR(vuart->regs))
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  427  		return PTR_ERR(vuart->regs);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  428  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  429  	memset(&port, 0, sizeof(port));
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  430  	port.port.private_data = vuart;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  431  	port.port.membase = vuart->regs;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  432  	port.port.mapbase = res->start;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  433  	port.port.mapsize = resource_size(res);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  434  	port.port.startup = aspeed_vuart_startup;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  435  	port.port.shutdown = aspeed_vuart_shutdown;
989983ea849d94 Jeremy Kerr        2018-03-27  436  	port.port.throttle = aspeed_vuart_throttle;
989983ea849d94 Jeremy Kerr        2018-03-27  437  	port.port.unthrottle = aspeed_vuart_unthrottle;
989983ea849d94 Jeremy Kerr        2018-03-27  438  	port.port.status = UPSTAT_SYNC_FIFO;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  439  	port.port.dev = &pdev->dev;
9b614afe6c8048 Dmitry Safonov     2019-12-13  440  	port.port.has_sysrq = IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  441  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  442  	rc = sysfs_create_group(&vuart->dev->kobj, &aspeed_vuart_attr_group);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  443  	if (rc < 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  444  		return rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  445  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  446  	if (of_property_read_u32(np, "clock-frequency", &clk)) {
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  447  		vuart->clk = devm_clk_get(&pdev->dev, NULL);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  448  		if (IS_ERR(vuart->clk)) {
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  449  			dev_warn(&pdev->dev,
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  450  				"clk or clock-frequency not defined\n");
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  451  			rc = PTR_ERR(vuart->clk);
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  452  			goto err_sysfs_remove;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  453  		}
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  454  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  455  		rc = clk_prepare_enable(vuart->clk);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  456  		if (rc < 0)
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  457  			goto err_sysfs_remove;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  458  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  459  		clk = clk_get_rate(vuart->clk);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  460  	}
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  461  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  462  	/* If current-speed was set, then try not to change it. */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  463  	if (of_property_read_u32(np, "current-speed", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  464  		port.port.custom_divisor = clk / (16 * prop);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  465  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  466  	/* Check for shifted address mapping */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  467  	if (of_property_read_u32(np, "reg-offset", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  468  		port.port.mapbase += prop;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  469  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  470  	/* Check for registers offset within the devices address range */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  471  	if (of_property_read_u32(np, "reg-shift", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  472  		port.port.regshift = prop;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  473  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  474  	/* Check for fifo size */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  475  	if (of_property_read_u32(np, "fifo-size", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  476  		port.port.fifosize = prop;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  477  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  478  	/* Check for a fixed line number */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  479  	rc = of_alias_get_id(np, "serial");
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  480  	if (rc >= 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  481  		port.port.line = rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  482  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  483  	port.port.irq = irq_of_parse_and_map(np, 0);
5909c0bf9c7a17 Jeremy Kerr        2018-03-27  484  	port.port.handle_irq = aspeed_vuart_handle_irq;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  485  	port.port.iotype = UPIO_MEM;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  486  	port.port.type = PORT_16550A;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  487  	port.port.uartclk = clk;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  488  	port.port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  489  		| UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_NO_THRE_TEST;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  490  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  491  	if (of_property_read_bool(np, "no-loopback-test"))
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  492  		port.port.flags |= UPF_SKIP_TEST;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  493  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  494  	if (port.port.fifosize)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  495  		port.capabilities = UART_CAP_FIFO;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  496  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  497  	if (of_property_read_bool(np, "auto-flow-control"))
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  498  		port.capabilities |= UART_CAP_AFE;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  499  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  500  	rc = serial8250_register_8250_port(&port);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  501  	if (rc < 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  502  		goto err_clk_disable;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  503  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  504  	vuart->line = rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  505  
8d310c9107a2a3 Oskar Senft        2019-09-05  506  	rc = of_parse_phandle_with_fixed_args(
8d310c9107a2a3 Oskar Senft        2019-09-05  507  		np, "aspeed,sirq-polarity-sense", 2, 0,
8d310c9107a2a3 Oskar Senft        2019-09-05  508  		&sirq_polarity_sense_args);
8d310c9107a2a3 Oskar Senft        2019-09-05  509  	if (rc < 0) {
8d310c9107a2a3 Oskar Senft        2019-09-05  510  		dev_dbg(&pdev->dev,
8d310c9107a2a3 Oskar Senft        2019-09-05  511  			"aspeed,sirq-polarity-sense property not found\n");
8d310c9107a2a3 Oskar Senft        2019-09-05  512  	} else {
8d310c9107a2a3 Oskar Senft        2019-09-05  513  		aspeed_vuart_auto_configure_sirq_polarity(
8d310c9107a2a3 Oskar Senft        2019-09-05  514  			vuart, sirq_polarity_sense_args.np,
8d310c9107a2a3 Oskar Senft        2019-09-05  515  			sirq_polarity_sense_args.args[0],
8d310c9107a2a3 Oskar Senft        2019-09-05  516  			BIT(sirq_polarity_sense_args.args[1]));
8d310c9107a2a3 Oskar Senft        2019-09-05  517  		of_node_put(sirq_polarity_sense_args.np);
8d310c9107a2a3 Oskar Senft        2019-09-05  518  	}
8d310c9107a2a3 Oskar Senft        2019-09-05  519  
ca03042f0f1221 Zev Weiss          2021-04-11  520  	rc = of_property_read_u32(np, "aspeed,lpc-io-reg", &prop);
ca03042f0f1221 Zev Weiss          2021-04-11  521  	if (rc < 0)
ca03042f0f1221 Zev Weiss          2021-04-11  522  		prop = ASPEED_VUART_DEFAULT_LPC_ADDR;
ca03042f0f1221 Zev Weiss          2021-04-11  523  
ca03042f0f1221 Zev Weiss          2021-04-11  524  	rc = aspeed_vuart_set_lpc_address(vuart, prop);
ca03042f0f1221 Zev Weiss          2021-04-11  525  	if (rc < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  526  		dev_err(&pdev->dev, "invalid value in aspeed,lpc-io-reg property\n");
ca03042f0f1221 Zev Weiss          2021-04-11  527  		goto err_clk_disable;
ca03042f0f1221 Zev Weiss          2021-04-11  528  	}
ca03042f0f1221 Zev Weiss          2021-04-11  529  
ca03042f0f1221 Zev Weiss          2021-04-11  530  	rc = of_property_read_u32_array(np, "aspeed,lpc-interrupts", sirq, 2);
ca03042f0f1221 Zev Weiss          2021-04-11  531  	if (rc < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  532  		sirq[0] = ASPEED_VUART_DEFAULT_SIRQ;
ca03042f0f1221 Zev Weiss          2021-04-11  533  		sirq[1] = ASPEED_VUART_DEFAULT_SIRQ_POLARITY;
ca03042f0f1221 Zev Weiss          2021-04-11  534  	}
ca03042f0f1221 Zev Weiss          2021-04-11  535  
ca03042f0f1221 Zev Weiss          2021-04-11  536  	rc = aspeed_vuart_set_sirq(vuart, sirq[0]);
ca03042f0f1221 Zev Weiss          2021-04-11  537  	if (rc < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  538  		dev_err(&pdev->dev, "invalid sirq number in aspeed,lpc-interrupts property\n");
ca03042f0f1221 Zev Weiss          2021-04-11  539  		goto err_clk_disable;
ca03042f0f1221 Zev Weiss          2021-04-11  540  	}
ca03042f0f1221 Zev Weiss          2021-04-11  541  
ca03042f0f1221 Zev Weiss          2021-04-11  542  	sirq_polarity = aspeed_vuart_map_irq_polarity(sirq[1]);
ca03042f0f1221 Zev Weiss          2021-04-11  543  	if (sirq_polarity < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  544  		dev_err(&pdev->dev, "invalid sirq polarity in aspeed,lpc-interrupts property\n");
ca03042f0f1221 Zev Weiss          2021-04-11  545  		rc = sirq_polarity;
ca03042f0f1221 Zev Weiss          2021-04-11  546  		goto err_clk_disable;
ca03042f0f1221 Zev Weiss          2021-04-11  547  	}
ca03042f0f1221 Zev Weiss          2021-04-11  548  
ca03042f0f1221 Zev Weiss          2021-04-11  549  	aspeed_vuart_set_sirq_polarity(vuart, sirq_polarity);
ca03042f0f1221 Zev Weiss          2021-04-11  550  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  551  	aspeed_vuart_set_enabled(vuart, true);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  552  	aspeed_vuart_set_host_tx_discard(vuart, true);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  553  	platform_set_drvdata(pdev, vuart);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  554  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  555  	return 0;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  556  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  557  err_clk_disable:
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  558  	clk_disable_unprepare(vuart->clk);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  559  	irq_dispose_mapping(port.port.irq);
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  560  err_sysfs_remove:
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  561  	sysfs_remove_group(&vuart->dev->kobj, &aspeed_vuart_attr_group);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  562  	return rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02 @563  }
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  564  

:::::: The code at line 563 was first introduced by commit
:::::: 7fbcf3afe6e8e180bfc39fb3f41657fa6e4af55c drivers/serial: Add driver for Aspeed virtual UART

:::::: TO: Jeremy Kerr <jk@ozlabs.org>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* drivers/tty/serial/8250/8250_aspeed_vuart.c:563:1: warning: the frame size of 1048 bytes is larger than 1024 bytes
@ 2026-05-02 13:57 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-05-02 13:57 UTC (permalink / raw)
  To: Zev Weiss; +Cc: oe-kbuild-all, linux-kernel, Andrew Jeffery

Hi Zev,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f1a5e78a55ebf2b05777fd5eb738038ddae609d6
commit: ca03042f0f1221c3173bbe81ebd974b91a4dbb15 serial: 8250_aspeed_vuart: add aspeed, lpc-io-reg and aspeed, lpc-interrupts DT properties
date:   5 years ago
config: arm-allyesconfig (https://download.01.org/0day-ci/archive/20260502/202605022114.Ojk5kWod-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260502/202605022114.Ojk5kWod-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: ca03042f0f12 ("serial: 8250_aspeed_vuart: add aspeed, lpc-io-reg and aspeed, lpc-interrupts DT properties")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605022114.Ojk5kWod-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/tty/serial/8250/8250_aspeed_vuart.c: In function 'aspeed_vuart_probe':
>> drivers/tty/serial/8250/8250_aspeed_vuart.c:563:1: warning: the frame size of 1048 bytes is larger than 1024 bytes [-Wframe-larger-than=]
     563 | }
         | ^


vim +563 drivers/tty/serial/8250/8250_aspeed_vuart.c

ca03042f0f1221 Zev Weiss          2021-04-11  404  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  405  static int aspeed_vuart_probe(struct platform_device *pdev)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  406  {
8d310c9107a2a3 Oskar Senft        2019-09-05  407  	struct of_phandle_args sirq_polarity_sense_args;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  408  	struct uart_8250_port port;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  409  	struct aspeed_vuart *vuart;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  410  	struct device_node *np;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  411  	struct resource *res;
ca03042f0f1221 Zev Weiss          2021-04-11  412  	u32 clk, prop, sirq[2];
ca03042f0f1221 Zev Weiss          2021-04-11  413  	int rc, sirq_polarity;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  414  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  415  	np = pdev->dev.of_node;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  416  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  417  	vuart = devm_kzalloc(&pdev->dev, sizeof(*vuart), GFP_KERNEL);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  418  	if (!vuart)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  419  		return -ENOMEM;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  420  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  421  	vuart->dev = &pdev->dev;
5909c0bf9c7a17 Jeremy Kerr        2018-03-27  422  	timer_setup(&vuart->unthrottle_timer, aspeed_vuart_unthrottle_exp, 0);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  423  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  424  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  425  	vuart->regs = devm_ioremap_resource(&pdev->dev, res);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  426  	if (IS_ERR(vuart->regs))
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  427  		return PTR_ERR(vuart->regs);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  428  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  429  	memset(&port, 0, sizeof(port));
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  430  	port.port.private_data = vuart;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  431  	port.port.membase = vuart->regs;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  432  	port.port.mapbase = res->start;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  433  	port.port.mapsize = resource_size(res);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  434  	port.port.startup = aspeed_vuart_startup;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  435  	port.port.shutdown = aspeed_vuart_shutdown;
989983ea849d94 Jeremy Kerr        2018-03-27  436  	port.port.throttle = aspeed_vuart_throttle;
989983ea849d94 Jeremy Kerr        2018-03-27  437  	port.port.unthrottle = aspeed_vuart_unthrottle;
989983ea849d94 Jeremy Kerr        2018-03-27  438  	port.port.status = UPSTAT_SYNC_FIFO;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  439  	port.port.dev = &pdev->dev;
9b614afe6c8048 Dmitry Safonov     2019-12-13  440  	port.port.has_sysrq = IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  441  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  442  	rc = sysfs_create_group(&vuart->dev->kobj, &aspeed_vuart_attr_group);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  443  	if (rc < 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  444  		return rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  445  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  446  	if (of_property_read_u32(np, "clock-frequency", &clk)) {
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  447  		vuart->clk = devm_clk_get(&pdev->dev, NULL);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  448  		if (IS_ERR(vuart->clk)) {
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  449  			dev_warn(&pdev->dev,
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  450  				"clk or clock-frequency not defined\n");
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  451  			rc = PTR_ERR(vuart->clk);
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  452  			goto err_sysfs_remove;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  453  		}
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  454  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  455  		rc = clk_prepare_enable(vuart->clk);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  456  		if (rc < 0)
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  457  			goto err_sysfs_remove;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  458  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  459  		clk = clk_get_rate(vuart->clk);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  460  	}
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  461  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  462  	/* If current-speed was set, then try not to change it. */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  463  	if (of_property_read_u32(np, "current-speed", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  464  		port.port.custom_divisor = clk / (16 * prop);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  465  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  466  	/* Check for shifted address mapping */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  467  	if (of_property_read_u32(np, "reg-offset", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  468  		port.port.mapbase += prop;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  469  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  470  	/* Check for registers offset within the devices address range */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  471  	if (of_property_read_u32(np, "reg-shift", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  472  		port.port.regshift = prop;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  473  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  474  	/* Check for fifo size */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  475  	if (of_property_read_u32(np, "fifo-size", &prop) == 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  476  		port.port.fifosize = prop;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  477  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  478  	/* Check for a fixed line number */
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  479  	rc = of_alias_get_id(np, "serial");
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  480  	if (rc >= 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  481  		port.port.line = rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  482  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  483  	port.port.irq = irq_of_parse_and_map(np, 0);
5909c0bf9c7a17 Jeremy Kerr        2018-03-27  484  	port.port.handle_irq = aspeed_vuart_handle_irq;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  485  	port.port.iotype = UPIO_MEM;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  486  	port.port.type = PORT_16550A;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  487  	port.port.uartclk = clk;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  488  	port.port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  489  		| UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_NO_THRE_TEST;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  490  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  491  	if (of_property_read_bool(np, "no-loopback-test"))
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  492  		port.port.flags |= UPF_SKIP_TEST;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  493  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  494  	if (port.port.fifosize)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  495  		port.capabilities = UART_CAP_FIFO;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  496  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  497  	if (of_property_read_bool(np, "auto-flow-control"))
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  498  		port.capabilities |= UART_CAP_AFE;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  499  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  500  	rc = serial8250_register_8250_port(&port);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  501  	if (rc < 0)
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  502  		goto err_clk_disable;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  503  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  504  	vuart->line = rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  505  
8d310c9107a2a3 Oskar Senft        2019-09-05  506  	rc = of_parse_phandle_with_fixed_args(
8d310c9107a2a3 Oskar Senft        2019-09-05  507  		np, "aspeed,sirq-polarity-sense", 2, 0,
8d310c9107a2a3 Oskar Senft        2019-09-05  508  		&sirq_polarity_sense_args);
8d310c9107a2a3 Oskar Senft        2019-09-05  509  	if (rc < 0) {
8d310c9107a2a3 Oskar Senft        2019-09-05  510  		dev_dbg(&pdev->dev,
8d310c9107a2a3 Oskar Senft        2019-09-05  511  			"aspeed,sirq-polarity-sense property not found\n");
8d310c9107a2a3 Oskar Senft        2019-09-05  512  	} else {
8d310c9107a2a3 Oskar Senft        2019-09-05  513  		aspeed_vuart_auto_configure_sirq_polarity(
8d310c9107a2a3 Oskar Senft        2019-09-05  514  			vuart, sirq_polarity_sense_args.np,
8d310c9107a2a3 Oskar Senft        2019-09-05  515  			sirq_polarity_sense_args.args[0],
8d310c9107a2a3 Oskar Senft        2019-09-05  516  			BIT(sirq_polarity_sense_args.args[1]));
8d310c9107a2a3 Oskar Senft        2019-09-05  517  		of_node_put(sirq_polarity_sense_args.np);
8d310c9107a2a3 Oskar Senft        2019-09-05  518  	}
8d310c9107a2a3 Oskar Senft        2019-09-05  519  
ca03042f0f1221 Zev Weiss          2021-04-11  520  	rc = of_property_read_u32(np, "aspeed,lpc-io-reg", &prop);
ca03042f0f1221 Zev Weiss          2021-04-11  521  	if (rc < 0)
ca03042f0f1221 Zev Weiss          2021-04-11  522  		prop = ASPEED_VUART_DEFAULT_LPC_ADDR;
ca03042f0f1221 Zev Weiss          2021-04-11  523  
ca03042f0f1221 Zev Weiss          2021-04-11  524  	rc = aspeed_vuart_set_lpc_address(vuart, prop);
ca03042f0f1221 Zev Weiss          2021-04-11  525  	if (rc < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  526  		dev_err(&pdev->dev, "invalid value in aspeed,lpc-io-reg property\n");
ca03042f0f1221 Zev Weiss          2021-04-11  527  		goto err_clk_disable;
ca03042f0f1221 Zev Weiss          2021-04-11  528  	}
ca03042f0f1221 Zev Weiss          2021-04-11  529  
ca03042f0f1221 Zev Weiss          2021-04-11  530  	rc = of_property_read_u32_array(np, "aspeed,lpc-interrupts", sirq, 2);
ca03042f0f1221 Zev Weiss          2021-04-11  531  	if (rc < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  532  		sirq[0] = ASPEED_VUART_DEFAULT_SIRQ;
ca03042f0f1221 Zev Weiss          2021-04-11  533  		sirq[1] = ASPEED_VUART_DEFAULT_SIRQ_POLARITY;
ca03042f0f1221 Zev Weiss          2021-04-11  534  	}
ca03042f0f1221 Zev Weiss          2021-04-11  535  
ca03042f0f1221 Zev Weiss          2021-04-11  536  	rc = aspeed_vuart_set_sirq(vuart, sirq[0]);
ca03042f0f1221 Zev Weiss          2021-04-11  537  	if (rc < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  538  		dev_err(&pdev->dev, "invalid sirq number in aspeed,lpc-interrupts property\n");
ca03042f0f1221 Zev Weiss          2021-04-11  539  		goto err_clk_disable;
ca03042f0f1221 Zev Weiss          2021-04-11  540  	}
ca03042f0f1221 Zev Weiss          2021-04-11  541  
ca03042f0f1221 Zev Weiss          2021-04-11  542  	sirq_polarity = aspeed_vuart_map_irq_polarity(sirq[1]);
ca03042f0f1221 Zev Weiss          2021-04-11  543  	if (sirq_polarity < 0) {
ca03042f0f1221 Zev Weiss          2021-04-11  544  		dev_err(&pdev->dev, "invalid sirq polarity in aspeed,lpc-interrupts property\n");
ca03042f0f1221 Zev Weiss          2021-04-11  545  		rc = sirq_polarity;
ca03042f0f1221 Zev Weiss          2021-04-11  546  		goto err_clk_disable;
ca03042f0f1221 Zev Weiss          2021-04-11  547  	}
ca03042f0f1221 Zev Weiss          2021-04-11  548  
ca03042f0f1221 Zev Weiss          2021-04-11  549  	aspeed_vuart_set_sirq_polarity(vuart, sirq_polarity);
ca03042f0f1221 Zev Weiss          2021-04-11  550  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  551  	aspeed_vuart_set_enabled(vuart, true);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  552  	aspeed_vuart_set_host_tx_discard(vuart, true);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  553  	platform_set_drvdata(pdev, vuart);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  554  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  555  	return 0;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  556  
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  557  err_clk_disable:
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  558  	clk_disable_unprepare(vuart->clk);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  559  	irq_dispose_mapping(port.port.irq);
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  560  err_sysfs_remove:
cbafe9d5c34673 Alexey Khoroshilov 2017-07-28  561  	sysfs_remove_group(&vuart->dev->kobj, &aspeed_vuart_attr_group);
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  562  	return rc;
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02 @563  }
7fbcf3afe6e8e1 Jeremy Kerr        2017-05-02  564  

:::::: The code at line 563 was first introduced by commit
:::::: 7fbcf3afe6e8e180bfc39fb3f41657fa6e4af55c drivers/serial: Add driver for Aspeed virtual UART

:::::: TO: Jeremy Kerr <jk@ozlabs.org>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-05-02 13:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-02 13:57 drivers/tty/serial/8250/8250_aspeed_vuart.c:563:1: warning: the frame size of 1048 bytes is larger than 1024 bytes kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2026-03-14 22:50 kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox