All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [asahilinux:bits/090-spi-hid 14/21] drivers/soc/apple/dockchannel.c:240 dockchannel_init() warn: passing zero to 'dev_err_probe'
Date: Thu, 23 Nov 2023 11:16:53 +0800	[thread overview]
Message-ID: <202311231037.4kh3kwIP-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Hector Martin <marcan@marcan.st>

tree:   https://github.com/AsahiLinux/linux bits/090-spi-hid
head:   16871bb3228eaf55cbdb1dfb81c1cecec4ee0d52
commit: 7c1543b965b465df17e43246abe9ef43c4bd8358 [14/21] soc: apple: Add DockChannel driver
:::::: branch date: 4 days ago
:::::: commit date: 9 weeks ago
config: mips-randconfig-r081-20231121 (https://download.01.org/0day-ci/archive/20231123/202311231037.4kh3kwIP-lkp@intel.com/config)
compiler: mips-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231123/202311231037.4kh3kwIP-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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202311231037.4kh3kwIP-lkp@intel.com/

New smatch warnings:
drivers/soc/apple/dockchannel.c:240 dockchannel_init() warn: passing zero to 'dev_err_probe'
drivers/soc/apple/dockchannel.c:358 dockchannel_probe() warn: passing zero to 'dev_err_probe'

Old smatch warnings:
drivers/soc/apple/dockchannel.c:246 dockchannel_init() warn: passing zero to 'dev_err_probe'

vim +/dev_err_probe +240 drivers/soc/apple/dockchannel.c

7c1543b965b465 Hector Martin 2022-07-08  211  
7c1543b965b465 Hector Martin 2022-07-08  212  struct dockchannel *dockchannel_init(struct platform_device *pdev)
7c1543b965b465 Hector Martin 2022-07-08  213  {
7c1543b965b465 Hector Martin 2022-07-08  214  	struct device *dev = &pdev->dev;
7c1543b965b465 Hector Martin 2022-07-08  215  	struct dockchannel *dockchannel;
7c1543b965b465 Hector Martin 2022-07-08  216  	int ret;
7c1543b965b465 Hector Martin 2022-07-08  217  
7c1543b965b465 Hector Martin 2022-07-08  218  	dockchannel = devm_kzalloc(dev, sizeof(*dockchannel), GFP_KERNEL);
7c1543b965b465 Hector Martin 2022-07-08  219  	if (!dockchannel)
7c1543b965b465 Hector Martin 2022-07-08  220  		return ERR_PTR(-ENOMEM);
7c1543b965b465 Hector Martin 2022-07-08  221  
7c1543b965b465 Hector Martin 2022-07-08  222  	dockchannel->dev = dev;
7c1543b965b465 Hector Martin 2022-07-08  223  	dockchannel->config_base = devm_platform_ioremap_resource_byname(pdev, "config");
7c1543b965b465 Hector Martin 2022-07-08  224  	if (IS_ERR(dockchannel->config_base))
7c1543b965b465 Hector Martin 2022-07-08  225  		return (__force void *)dockchannel->config_base;
7c1543b965b465 Hector Martin 2022-07-08  226  
7c1543b965b465 Hector Martin 2022-07-08  227  	dockchannel->data_base = devm_platform_ioremap_resource_byname(pdev, "data");
7c1543b965b465 Hector Martin 2022-07-08  228  	if (IS_ERR(dockchannel->data_base))
7c1543b965b465 Hector Martin 2022-07-08  229  		return (__force void *)dockchannel->data_base;
7c1543b965b465 Hector Martin 2022-07-08  230  
7c1543b965b465 Hector Martin 2022-07-08  231  	ret = of_property_read_u32(dev->of_node, "apple,fifo-size", &dockchannel->fifo_size);
7c1543b965b465 Hector Martin 2022-07-08  232  	if (ret)
7c1543b965b465 Hector Martin 2022-07-08  233  		return ERR_PTR(dev_err_probe(dev, ret, "Missing apple,fifo-size property"));
7c1543b965b465 Hector Martin 2022-07-08  234  
7c1543b965b465 Hector Martin 2022-07-08  235  	init_completion(&dockchannel->tx_comp);
7c1543b965b465 Hector Martin 2022-07-08  236  	init_completion(&dockchannel->rx_comp);
7c1543b965b465 Hector Martin 2022-07-08  237  
7c1543b965b465 Hector Martin 2022-07-08  238  	dockchannel->tx_irq = platform_get_irq_byname(pdev, "tx");
7c1543b965b465 Hector Martin 2022-07-08  239  	if (dockchannel->tx_irq <= 0) {
7c1543b965b465 Hector Martin 2022-07-08 @240  		return ERR_PTR(dev_err_probe(dev, dockchannel->tx_irq,
7c1543b965b465 Hector Martin 2022-07-08  241  				     "Failed to get TX IRQ"));
7c1543b965b465 Hector Martin 2022-07-08  242  	}
7c1543b965b465 Hector Martin 2022-07-08  243  
7c1543b965b465 Hector Martin 2022-07-08  244  	dockchannel->rx_irq = platform_get_irq_byname(pdev, "rx");
7c1543b965b465 Hector Martin 2022-07-08  245  	if (dockchannel->rx_irq <= 0) {
7c1543b965b465 Hector Martin 2022-07-08  246  		return ERR_PTR(dev_err_probe(dev, dockchannel->rx_irq,
7c1543b965b465 Hector Martin 2022-07-08  247  				     "Failed to get RX IRQ"));
7c1543b965b465 Hector Martin 2022-07-08  248  	}
7c1543b965b465 Hector Martin 2022-07-08  249  
7c1543b965b465 Hector Martin 2022-07-08  250  	ret = devm_request_irq(dev, dockchannel->tx_irq, dockchannel_tx_irq, IRQF_NO_AUTOEN,
7c1543b965b465 Hector Martin 2022-07-08  251  			       "apple-dockchannel-tx", dockchannel);
7c1543b965b465 Hector Martin 2022-07-08  252  	if (ret)
7c1543b965b465 Hector Martin 2022-07-08  253  		return ERR_PTR(dev_err_probe(dev, ret, "Failed to request TX IRQ"));
7c1543b965b465 Hector Martin 2022-07-08  254  
7c1543b965b465 Hector Martin 2022-07-08  255  	ret = devm_request_threaded_irq(dev, dockchannel->rx_irq, dockchannel_rx_irq,
7c1543b965b465 Hector Martin 2022-07-08  256  					dockchannel_rx_irq_thread, IRQF_NO_AUTOEN,
7c1543b965b465 Hector Martin 2022-07-08  257  					"apple-dockchannel-rx", dockchannel);
7c1543b965b465 Hector Martin 2022-07-08  258  	if (ret)
7c1543b965b465 Hector Martin 2022-07-08  259  		return ERR_PTR(dev_err_probe(dev, ret, "Failed to request RX IRQ"));
7c1543b965b465 Hector Martin 2022-07-08  260  
7c1543b965b465 Hector Martin 2022-07-08  261  	return dockchannel;
7c1543b965b465 Hector Martin 2022-07-08  262  }
7c1543b965b465 Hector Martin 2022-07-08  263  EXPORT_SYMBOL(dockchannel_init);
7c1543b965b465 Hector Martin 2022-07-08  264  
7c1543b965b465 Hector Martin 2022-07-08  265  
7c1543b965b465 Hector Martin 2022-07-08  266  /* Dockchannel IRQchip */
7c1543b965b465 Hector Martin 2022-07-08  267  
7c1543b965b465 Hector Martin 2022-07-08  268  static void dockchannel_irq(struct irq_desc *desc)
7c1543b965b465 Hector Martin 2022-07-08  269  {
7c1543b965b465 Hector Martin 2022-07-08  270  	unsigned int irq = irq_desc_get_irq(desc);
7c1543b965b465 Hector Martin 2022-07-08  271  	struct irq_chip *chip = irq_desc_get_chip(desc);
7c1543b965b465 Hector Martin 2022-07-08  272  	struct dockchannel_common *dcc = irq_get_handler_data(irq);
7c1543b965b465 Hector Martin 2022-07-08  273  	unsigned long flags = readl_relaxed(dcc->irq_base + IRQ_FLAG);
7c1543b965b465 Hector Martin 2022-07-08  274  	int bit;
7c1543b965b465 Hector Martin 2022-07-08  275  
7c1543b965b465 Hector Martin 2022-07-08  276  	chained_irq_enter(chip, desc);
7c1543b965b465 Hector Martin 2022-07-08  277  
7c1543b965b465 Hector Martin 2022-07-08  278  	for_each_set_bit(bit, &flags, DOCKCHANNEL_MAX_IRQ)
7c1543b965b465 Hector Martin 2022-07-08  279  		generic_handle_domain_irq(dcc->domain, bit);
7c1543b965b465 Hector Martin 2022-07-08  280  
7c1543b965b465 Hector Martin 2022-07-08  281  	chained_irq_exit(chip, desc);
7c1543b965b465 Hector Martin 2022-07-08  282  }
7c1543b965b465 Hector Martin 2022-07-08  283  
7c1543b965b465 Hector Martin 2022-07-08  284  static void dockchannel_irq_ack(struct irq_data *data)
7c1543b965b465 Hector Martin 2022-07-08  285  {
7c1543b965b465 Hector Martin 2022-07-08  286  	struct dockchannel_common *dcc = irq_data_get_irq_chip_data(data);
7c1543b965b465 Hector Martin 2022-07-08  287  	unsigned int hwirq = data->hwirq;
7c1543b965b465 Hector Martin 2022-07-08  288  
7c1543b965b465 Hector Martin 2022-07-08  289  	writel_relaxed(BIT(hwirq), dcc->irq_base + IRQ_FLAG);
7c1543b965b465 Hector Martin 2022-07-08  290  }
7c1543b965b465 Hector Martin 2022-07-08  291  
7c1543b965b465 Hector Martin 2022-07-08  292  static void dockchannel_irq_mask(struct irq_data *data)
7c1543b965b465 Hector Martin 2022-07-08  293  {
7c1543b965b465 Hector Martin 2022-07-08  294  	struct dockchannel_common *dcc = irq_data_get_irq_chip_data(data);
7c1543b965b465 Hector Martin 2022-07-08  295  	unsigned int hwirq = data->hwirq;
7c1543b965b465 Hector Martin 2022-07-08  296  	u32 val = readl_relaxed(dcc->irq_base + IRQ_MASK);
7c1543b965b465 Hector Martin 2022-07-08  297  
7c1543b965b465 Hector Martin 2022-07-08  298  	writel_relaxed(val & ~BIT(hwirq), dcc->irq_base + IRQ_MASK);
7c1543b965b465 Hector Martin 2022-07-08  299  }
7c1543b965b465 Hector Martin 2022-07-08  300  
7c1543b965b465 Hector Martin 2022-07-08  301  static void dockchannel_irq_unmask(struct irq_data *data)
7c1543b965b465 Hector Martin 2022-07-08  302  {
7c1543b965b465 Hector Martin 2022-07-08  303  	struct dockchannel_common *dcc = irq_data_get_irq_chip_data(data);
7c1543b965b465 Hector Martin 2022-07-08  304  	unsigned int hwirq = data->hwirq;
7c1543b965b465 Hector Martin 2022-07-08  305  	u32 val = readl_relaxed(dcc->irq_base + IRQ_MASK);
7c1543b965b465 Hector Martin 2022-07-08  306  
7c1543b965b465 Hector Martin 2022-07-08  307  	writel_relaxed(val | BIT(hwirq), dcc->irq_base + IRQ_MASK);
7c1543b965b465 Hector Martin 2022-07-08  308  }
7c1543b965b465 Hector Martin 2022-07-08  309  
7c1543b965b465 Hector Martin 2022-07-08  310  static const struct irq_chip dockchannel_irqchip = {
7c1543b965b465 Hector Martin 2022-07-08  311  	.name = "dockchannel-irqc",
7c1543b965b465 Hector Martin 2022-07-08  312  	.irq_ack = dockchannel_irq_ack,
7c1543b965b465 Hector Martin 2022-07-08  313  	.irq_mask = dockchannel_irq_mask,
7c1543b965b465 Hector Martin 2022-07-08  314  	.irq_unmask = dockchannel_irq_unmask,
7c1543b965b465 Hector Martin 2022-07-08  315  };
7c1543b965b465 Hector Martin 2022-07-08  316  
7c1543b965b465 Hector Martin 2022-07-08  317  static int dockchannel_irq_domain_map(struct irq_domain *d, unsigned int virq,
7c1543b965b465 Hector Martin 2022-07-08  318  				      irq_hw_number_t hw)
7c1543b965b465 Hector Martin 2022-07-08  319  {
7c1543b965b465 Hector Martin 2022-07-08  320  	irq_set_chip_data(virq, d->host_data);
7c1543b965b465 Hector Martin 2022-07-08  321  	irq_set_chip_and_handler(virq, &dockchannel_irqchip, handle_level_irq);
7c1543b965b465 Hector Martin 2022-07-08  322  
7c1543b965b465 Hector Martin 2022-07-08  323  	return 0;
7c1543b965b465 Hector Martin 2022-07-08  324  }
7c1543b965b465 Hector Martin 2022-07-08  325  
7c1543b965b465 Hector Martin 2022-07-08  326  static const struct irq_domain_ops dockchannel_irq_domain_ops = {
7c1543b965b465 Hector Martin 2022-07-08  327  	.xlate	= irq_domain_xlate_twocell,
7c1543b965b465 Hector Martin 2022-07-08  328  	.map	= dockchannel_irq_domain_map,
7c1543b965b465 Hector Martin 2022-07-08  329  };
7c1543b965b465 Hector Martin 2022-07-08  330  
7c1543b965b465 Hector Martin 2022-07-08  331  static int dockchannel_probe(struct platform_device *pdev)
7c1543b965b465 Hector Martin 2022-07-08  332  {
7c1543b965b465 Hector Martin 2022-07-08  333  	struct device *dev = &pdev->dev;
7c1543b965b465 Hector Martin 2022-07-08  334  	struct dockchannel_common *dcc;
7c1543b965b465 Hector Martin 2022-07-08  335  	struct device_node *child;
7c1543b965b465 Hector Martin 2022-07-08  336  
7c1543b965b465 Hector Martin 2022-07-08  337  	dcc = devm_kzalloc(dev, sizeof(*dcc), GFP_KERNEL);
7c1543b965b465 Hector Martin 2022-07-08  338  	if (!dcc)
7c1543b965b465 Hector Martin 2022-07-08  339  		return -ENOMEM;
7c1543b965b465 Hector Martin 2022-07-08  340  
7c1543b965b465 Hector Martin 2022-07-08  341  	dcc->dev = dev;
7c1543b965b465 Hector Martin 2022-07-08  342  	platform_set_drvdata(pdev, dcc);
7c1543b965b465 Hector Martin 2022-07-08  343  
7c1543b965b465 Hector Martin 2022-07-08  344  	dcc->irq_base = devm_platform_ioremap_resource_byname(pdev, "irq");
7c1543b965b465 Hector Martin 2022-07-08  345  	if (IS_ERR(dcc->irq_base))
7c1543b965b465 Hector Martin 2022-07-08  346  		return PTR_ERR(dcc->irq_base);
7c1543b965b465 Hector Martin 2022-07-08  347  
7c1543b965b465 Hector Martin 2022-07-08  348  	writel_relaxed(0, dcc->irq_base + IRQ_MASK);
7c1543b965b465 Hector Martin 2022-07-08  349  	writel_relaxed(~0, dcc->irq_base + IRQ_FLAG);
7c1543b965b465 Hector Martin 2022-07-08  350  
7c1543b965b465 Hector Martin 2022-07-08  351  	dcc->domain = irq_domain_add_linear(dev->of_node, DOCKCHANNEL_MAX_IRQ,
7c1543b965b465 Hector Martin 2022-07-08  352  					    &dockchannel_irq_domain_ops, dcc);
7c1543b965b465 Hector Martin 2022-07-08  353  	if (!dcc->domain)
7c1543b965b465 Hector Martin 2022-07-08  354  		return -ENOMEM;
7c1543b965b465 Hector Martin 2022-07-08  355  
7c1543b965b465 Hector Martin 2022-07-08  356  	dcc->irq = platform_get_irq(pdev, 0);
7c1543b965b465 Hector Martin 2022-07-08  357  	if (dcc->irq <= 0)
7c1543b965b465 Hector Martin 2022-07-08 @358  		return dev_err_probe(dev, dcc->irq, "Failed to get IRQ");
7c1543b965b465 Hector Martin 2022-07-08  359  
7c1543b965b465 Hector Martin 2022-07-08  360  	irq_set_handler_data(dcc->irq, dcc);
7c1543b965b465 Hector Martin 2022-07-08  361  	irq_set_chained_handler(dcc->irq, dockchannel_irq);
7c1543b965b465 Hector Martin 2022-07-08  362  
7c1543b965b465 Hector Martin 2022-07-08  363  	for_each_child_of_node(dev->of_node, child)
7c1543b965b465 Hector Martin 2022-07-08  364  		of_platform_device_create(child, NULL, dev);
7c1543b965b465 Hector Martin 2022-07-08  365  
7c1543b965b465 Hector Martin 2022-07-08  366  	return 0;
7c1543b965b465 Hector Martin 2022-07-08  367  }
7c1543b965b465 Hector Martin 2022-07-08  368  

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

             reply	other threads:[~2023-11-23  3:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-23  3:16 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-11-23  6:20 [asahilinux:bits/090-spi-hid 14/21] drivers/soc/apple/dockchannel.c:240 dockchannel_init() warn: passing zero to 'dev_err_probe' Dan Carpenter
2023-11-25  3:11 kernel test robot

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=202311231037.4kh3kwIP-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /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.