All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency
@ 2020-10-24 13:31 Martin Kaiser
  2020-10-24 13:31 ` [PATCH 2/2] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Martin Kaiser @ 2020-10-24 13:31 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser

This allows compiling the driver on architectures where the hardware is not
available. Most other mailbox drivers support this as well.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---

I used this for testing the trivial patch that removes the duplicate error
message. Also, compiling the driver on x86_64 worked without errors.

 drivers/mailbox/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig
index 05b1009e2820..abbf5d67ffa2 100644
--- a/drivers/mailbox/Kconfig
+++ b/drivers/mailbox/Kconfig
@@ -201,7 +201,7 @@ config BCM_FLEXRM_MBOX
 
 config STM32_IPCC
 	tristate "STM32 IPCC Mailbox"
-	depends on MACH_STM32MP157
+	depends on MACH_STM32MP157 || COMPILE_TEST
 	help
 	  Mailbox implementation for STMicroelectonics STM32 family chips
 	  with hardware for Inter-Processor Communication Controller (IPCC)
-- 
2.20.1


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

* [PATCH 2/2] mailbox: stm32-ipcc: remove duplicate error message
  2020-10-24 13:31 [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
@ 2020-10-24 13:31 ` Martin Kaiser
  2020-10-26  8:12   ` Fabien DESSENNE
  2020-10-30 16:07   ` kernel test robot
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 12+ messages in thread
From: Martin Kaiser @ 2020-10-24 13:31 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser

platform_get_irq_byname already prints an error message if the requested irq
was not found. Don't print another message in the driver.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
 drivers/mailbox/stm32-ipcc.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
index ef966887aa15..ab8fe56af948 100644
--- a/drivers/mailbox/stm32-ipcc.c
+++ b/drivers/mailbox/stm32-ipcc.c
@@ -257,9 +257,6 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 	for (i = 0; i < IPCC_IRQ_NUM; i++) {
 		ipcc->irqs[i] = platform_get_irq_byname(pdev, irq_name[i]);
 		if (ipcc->irqs[i] < 0) {
-			if (ipcc->irqs[i] != -EPROBE_DEFER)
-				dev_err(dev, "no IRQ specified %s\n",
-					irq_name[i]);
 			ret = ipcc->irqs[i];
 			goto err_clk;
 		}
-- 
2.20.1


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

* Re: [PATCH 2/2] mailbox: stm32-ipcc: remove duplicate error message
  2020-10-24 13:31 ` [PATCH 2/2] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
@ 2020-10-26  8:12   ` Fabien DESSENNE
  0 siblings, 0 replies; 12+ messages in thread
From: Fabien DESSENNE @ 2020-10-26  8:12 UTC (permalink / raw)
  To: Martin Kaiser, Jassi Brar, Maxime Coquelin, Alexandre TORGUE
  Cc: linux-stm32, linux-kernel

Hi Martin


Thank you for the patch

On 24/10/2020 3:31 pm, Martin Kaiser wrote:
> platform_get_irq_byname already prints an error message if the requested irq
> was not found. Don't print another message in the driver.
>
> Signed-off-by: Martin Kaiser <martin@kaiser.cx>


Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>


> ---
>   drivers/mailbox/stm32-ipcc.c | 3 ---
>   1 file changed, 3 deletions(-)
>
> diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
> index ef966887aa15..ab8fe56af948 100644
> --- a/drivers/mailbox/stm32-ipcc.c
> +++ b/drivers/mailbox/stm32-ipcc.c
> @@ -257,9 +257,6 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
>   	for (i = 0; i < IPCC_IRQ_NUM; i++) {
>   		ipcc->irqs[i] = platform_get_irq_byname(pdev, irq_name[i]);
>   		if (ipcc->irqs[i] < 0) {
> -			if (ipcc->irqs[i] != -EPROBE_DEFER)
> -				dev_err(dev, "no IRQ specified %s\n",
> -					irq_name[i]);
>   			ret = ipcc->irqs[i];
>   			goto err_clk;
>   		}

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

* Re: [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency
  2020-10-24 13:31 [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
@ 2020-10-30 16:07   ` kernel test robot
  2020-10-30 16:07   ` kernel test robot
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2020-10-30 16:07 UTC (permalink / raw)
  To: Martin Kaiser, Jassi Brar, Maxime Coquelin, Alexandre Torgue,
	Fabien Dessenne
  Cc: kbuild-all, clang-built-linux, linux-stm32, linux-kernel, Martin Kaiser

[-- Attachment #1: Type: text/plain, Size: 17688 bytes --]

Hi Martin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on fujitsu-integration/mailbox-for-next]
[also build test WARNING on stm32/stm32-next linus/master linux/master v5.10-rc1 next-20201030]
[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]

url:    https://github.com/0day-ci/linux/commits/Martin-Kaiser/mailbox-stm32-ipcc-add-COMPILE_TEST-dependency/20201024-220512
base:   https://git.linaro.org/landing-teams/working/fujitsu/integration.git mailbox-for-next
config: x86_64-randconfig-r023-20201030 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 772aaa602383cf82795572ebcd86b0e660f3579f)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/6e22aaac25dcdd4c098c57d29363fa2c204e411e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Martin-Kaiser/mailbox-stm32-ipcc-add-COMPILE_TEST-dependency/20201024-220512
        git checkout 6e22aaac25dcdd4c098c57d29363fa2c204e411e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/mailbox/stm32-ipcc.c:147:22: warning: cast to smaller integer type 'unsigned int' from 'void *' [-Wvoid-pointer-to-int-cast]
           unsigned int chan = (unsigned int)link->con_priv;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/stm32-ipcc.c:166:22: warning: cast to smaller integer type 'unsigned int' from 'void *' [-Wvoid-pointer-to-int-cast]
           unsigned int chan = (unsigned int)link->con_priv;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/stm32-ipcc.c:186:22: warning: cast to smaller integer type 'unsigned int' from 'void *' [-Wvoid-pointer-to-int-cast]
           unsigned int chan = (unsigned int)link->con_priv;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/mailbox/stm32-ipcc.c:310:40: warning: cast to 'void *' from smaller integer type 'unsigned int' [-Wint-to-void-pointer-cast]
                   ipcc->controller.chans[i].con_priv = (void *)i;
                                                        ^~~~~~~~~
   4 warnings generated.

vim +147 drivers/mailbox/stm32-ipcc.c

ffbded7dee97563 Fabien Dessenne  2018-05-31  144  
ffbded7dee97563 Fabien Dessenne  2018-05-31  145  static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
ffbded7dee97563 Fabien Dessenne  2018-05-31  146  {
ffbded7dee97563 Fabien Dessenne  2018-05-31 @147  	unsigned int chan = (unsigned int)link->con_priv;
ffbded7dee97563 Fabien Dessenne  2018-05-31  148  	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
ffbded7dee97563 Fabien Dessenne  2018-05-31  149  					       controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  150  
ffbded7dee97563 Fabien Dessenne  2018-05-31  151  	dev_dbg(ipcc->controller.dev, "%s: chan:%d\n", __func__, chan);
ffbded7dee97563 Fabien Dessenne  2018-05-31  152  
ffbded7dee97563 Fabien Dessenne  2018-05-31  153  	/* set channel n occupied */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  154  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XSCR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  155  			    TX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  156  
ffbded7dee97563 Fabien Dessenne  2018-05-31  157  	/* unmask 'tx channel free' interrupt */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  158  	stm32_ipcc_clr_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  159  			    TX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  160  
ffbded7dee97563 Fabien Dessenne  2018-05-31  161  	return 0;
ffbded7dee97563 Fabien Dessenne  2018-05-31  162  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  163  
ffbded7dee97563 Fabien Dessenne  2018-05-31  164  static int stm32_ipcc_startup(struct mbox_chan *link)
ffbded7dee97563 Fabien Dessenne  2018-05-31  165  {
ffbded7dee97563 Fabien Dessenne  2018-05-31  166  	unsigned int chan = (unsigned int)link->con_priv;
ffbded7dee97563 Fabien Dessenne  2018-05-31  167  	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
ffbded7dee97563 Fabien Dessenne  2018-05-31  168  					       controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  169  	int ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  170  
ffbded7dee97563 Fabien Dessenne  2018-05-31  171  	ret = clk_prepare_enable(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  172  	if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  173  		dev_err(ipcc->controller.dev, "can not enable the clock\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  174  		return ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  175  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  176  
ffbded7dee97563 Fabien Dessenne  2018-05-31  177  	/* unmask 'rx channel occupied' interrupt */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  178  	stm32_ipcc_clr_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  179  			    RX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  180  
ffbded7dee97563 Fabien Dessenne  2018-05-31  181  	return 0;
ffbded7dee97563 Fabien Dessenne  2018-05-31  182  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  183  
ffbded7dee97563 Fabien Dessenne  2018-05-31  184  static void stm32_ipcc_shutdown(struct mbox_chan *link)
ffbded7dee97563 Fabien Dessenne  2018-05-31  185  {
ffbded7dee97563 Fabien Dessenne  2018-05-31  186  	unsigned int chan = (unsigned int)link->con_priv;
ffbded7dee97563 Fabien Dessenne  2018-05-31  187  	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
ffbded7dee97563 Fabien Dessenne  2018-05-31  188  					       controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  189  
ffbded7dee97563 Fabien Dessenne  2018-05-31  190  	/* mask rx/tx interrupt */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  191  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
ffbded7dee97563 Fabien Dessenne  2018-05-31  192  			    RX_BIT_CHAN(chan) | TX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  193  
ffbded7dee97563 Fabien Dessenne  2018-05-31  194  	clk_disable_unprepare(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  195  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  196  
ffbded7dee97563 Fabien Dessenne  2018-05-31  197  static const struct mbox_chan_ops stm32_ipcc_ops = {
ffbded7dee97563 Fabien Dessenne  2018-05-31  198  	.send_data	= stm32_ipcc_send_data,
ffbded7dee97563 Fabien Dessenne  2018-05-31  199  	.startup	= stm32_ipcc_startup,
ffbded7dee97563 Fabien Dessenne  2018-05-31  200  	.shutdown	= stm32_ipcc_shutdown,
ffbded7dee97563 Fabien Dessenne  2018-05-31  201  };
ffbded7dee97563 Fabien Dessenne  2018-05-31  202  
ffbded7dee97563 Fabien Dessenne  2018-05-31  203  static int stm32_ipcc_probe(struct platform_device *pdev)
ffbded7dee97563 Fabien Dessenne  2018-05-31  204  {
ffbded7dee97563 Fabien Dessenne  2018-05-31  205  	struct device *dev = &pdev->dev;
ffbded7dee97563 Fabien Dessenne  2018-05-31  206  	struct device_node *np = dev->of_node;
ffbded7dee97563 Fabien Dessenne  2018-05-31  207  	struct stm32_ipcc *ipcc;
ffbded7dee97563 Fabien Dessenne  2018-05-31  208  	struct resource *res;
ffbded7dee97563 Fabien Dessenne  2018-05-31  209  	unsigned int i;
ffbded7dee97563 Fabien Dessenne  2018-05-31  210  	int ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  211  	u32 ip_ver;
ffbded7dee97563 Fabien Dessenne  2018-05-31  212  	static const char * const irq_name[] = {"rx", "tx"};
ffbded7dee97563 Fabien Dessenne  2018-05-31  213  	irq_handler_t irq_thread[] = {stm32_ipcc_rx_irq, stm32_ipcc_tx_irq};
ffbded7dee97563 Fabien Dessenne  2018-05-31  214  
ffbded7dee97563 Fabien Dessenne  2018-05-31  215  	if (!np) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  216  		dev_err(dev, "No DT found\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  217  		return -ENODEV;
ffbded7dee97563 Fabien Dessenne  2018-05-31  218  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  219  
ffbded7dee97563 Fabien Dessenne  2018-05-31  220  	ipcc = devm_kzalloc(dev, sizeof(*ipcc), GFP_KERNEL);
ffbded7dee97563 Fabien Dessenne  2018-05-31  221  	if (!ipcc)
ffbded7dee97563 Fabien Dessenne  2018-05-31  222  		return -ENOMEM;
ffbded7dee97563 Fabien Dessenne  2018-05-31  223  
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  224  	spin_lock_init(&ipcc->lock);
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  225  
ffbded7dee97563 Fabien Dessenne  2018-05-31  226  	/* proc_id */
ffbded7dee97563 Fabien Dessenne  2018-05-31  227  	if (of_property_read_u32(np, "st,proc-id", &ipcc->proc_id)) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  228  		dev_err(dev, "Missing st,proc-id\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  229  		return -ENODEV;
ffbded7dee97563 Fabien Dessenne  2018-05-31  230  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  231  
ffbded7dee97563 Fabien Dessenne  2018-05-31  232  	if (ipcc->proc_id >= STM32_MAX_PROCS) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  233  		dev_err(dev, "Invalid proc_id (%d)\n", ipcc->proc_id);
ffbded7dee97563 Fabien Dessenne  2018-05-31  234  		return -EINVAL;
ffbded7dee97563 Fabien Dessenne  2018-05-31  235  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  236  
ffbded7dee97563 Fabien Dessenne  2018-05-31  237  	/* regs */
ffbded7dee97563 Fabien Dessenne  2018-05-31  238  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ffbded7dee97563 Fabien Dessenne  2018-05-31  239  	ipcc->reg_base = devm_ioremap_resource(dev, res);
ffbded7dee97563 Fabien Dessenne  2018-05-31  240  	if (IS_ERR(ipcc->reg_base))
ffbded7dee97563 Fabien Dessenne  2018-05-31  241  		return PTR_ERR(ipcc->reg_base);
ffbded7dee97563 Fabien Dessenne  2018-05-31  242  
ffbded7dee97563 Fabien Dessenne  2018-05-31  243  	ipcc->reg_proc = ipcc->reg_base + ipcc->proc_id * IPCC_PROC_OFFST;
ffbded7dee97563 Fabien Dessenne  2018-05-31  244  
ffbded7dee97563 Fabien Dessenne  2018-05-31  245  	/* clock */
ffbded7dee97563 Fabien Dessenne  2018-05-31  246  	ipcc->clk = devm_clk_get(dev, NULL);
ffbded7dee97563 Fabien Dessenne  2018-05-31  247  	if (IS_ERR(ipcc->clk))
ffbded7dee97563 Fabien Dessenne  2018-05-31  248  		return PTR_ERR(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  249  
ffbded7dee97563 Fabien Dessenne  2018-05-31  250  	ret = clk_prepare_enable(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  251  	if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  252  		dev_err(dev, "can not enable the clock\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  253  		return ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  254  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  255  
ffbded7dee97563 Fabien Dessenne  2018-05-31  256  	/* irq */
ffbded7dee97563 Fabien Dessenne  2018-05-31  257  	for (i = 0; i < IPCC_IRQ_NUM; i++) {
68a1c8485cf8373 Fabien Dessenne  2019-04-24  258  		ipcc->irqs[i] = platform_get_irq_byname(pdev, irq_name[i]);
ffbded7dee97563 Fabien Dessenne  2018-05-31  259  		if (ipcc->irqs[i] < 0) {
68a1c8485cf8373 Fabien Dessenne  2019-04-24  260  			if (ipcc->irqs[i] != -EPROBE_DEFER)
68a1c8485cf8373 Fabien Dessenne  2019-04-24  261  				dev_err(dev, "no IRQ specified %s\n",
68a1c8485cf8373 Fabien Dessenne  2019-04-24  262  					irq_name[i]);
ffbded7dee97563 Fabien Dessenne  2018-05-31  263  			ret = ipcc->irqs[i];
ffbded7dee97563 Fabien Dessenne  2018-05-31  264  			goto err_clk;
ffbded7dee97563 Fabien Dessenne  2018-05-31  265  		}
ffbded7dee97563 Fabien Dessenne  2018-05-31  266  
ffbded7dee97563 Fabien Dessenne  2018-05-31  267  		ret = devm_request_threaded_irq(dev, ipcc->irqs[i], NULL,
ffbded7dee97563 Fabien Dessenne  2018-05-31  268  						irq_thread[i], IRQF_ONESHOT,
ffbded7dee97563 Fabien Dessenne  2018-05-31  269  						dev_name(dev), ipcc);
ffbded7dee97563 Fabien Dessenne  2018-05-31  270  		if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  271  			dev_err(dev, "failed to request irq %d (%d)\n", i, ret);
ffbded7dee97563 Fabien Dessenne  2018-05-31  272  			goto err_clk;
ffbded7dee97563 Fabien Dessenne  2018-05-31  273  		}
ffbded7dee97563 Fabien Dessenne  2018-05-31  274  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  275  
ffbded7dee97563 Fabien Dessenne  2018-05-31  276  	/* mask and enable rx/tx irq */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  277  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
ffbded7dee97563 Fabien Dessenne  2018-05-31  278  			    RX_BIT_MASK | TX_BIT_MASK);
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  279  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XCR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  280  			    XCR_RXOIE | XCR_TXOIE);
ffbded7dee97563 Fabien Dessenne  2018-05-31  281  
ffbded7dee97563 Fabien Dessenne  2018-05-31  282  	/* wakeup */
ffbded7dee97563 Fabien Dessenne  2018-05-31  283  	if (of_property_read_bool(np, "wakeup-source")) {
eac36c8651210df Fabien Dessenne  2019-01-04  284  		device_set_wakeup_capable(dev, true);
69269446ccbf2b4 Fabien Dessenne  2019-10-30  285  
69269446ccbf2b4 Fabien Dessenne  2019-10-30  286  		ret = dev_pm_set_wake_irq(dev, ipcc->irqs[IPCC_IRQ_RX]);
ffbded7dee97563 Fabien Dessenne  2018-05-31  287  		if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  288  			dev_err(dev, "Failed to set wake up irq\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  289  			goto err_init_wkp;
ffbded7dee97563 Fabien Dessenne  2018-05-31  290  		}
ffbded7dee97563 Fabien Dessenne  2018-05-31  291  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  292  
ffbded7dee97563 Fabien Dessenne  2018-05-31  293  	/* mailbox controller */
ffbded7dee97563 Fabien Dessenne  2018-05-31  294  	ipcc->n_chans = readl_relaxed(ipcc->reg_base + IPCC_HWCFGR);
ffbded7dee97563 Fabien Dessenne  2018-05-31  295  	ipcc->n_chans &= IPCFGR_CHAN_MASK;
ffbded7dee97563 Fabien Dessenne  2018-05-31  296  
ffbded7dee97563 Fabien Dessenne  2018-05-31  297  	ipcc->controller.dev = dev;
ffbded7dee97563 Fabien Dessenne  2018-05-31  298  	ipcc->controller.txdone_irq = true;
ffbded7dee97563 Fabien Dessenne  2018-05-31  299  	ipcc->controller.ops = &stm32_ipcc_ops;
ffbded7dee97563 Fabien Dessenne  2018-05-31  300  	ipcc->controller.num_chans = ipcc->n_chans;
ffbded7dee97563 Fabien Dessenne  2018-05-31  301  	ipcc->controller.chans = devm_kcalloc(dev, ipcc->controller.num_chans,
ffbded7dee97563 Fabien Dessenne  2018-05-31  302  					      sizeof(*ipcc->controller.chans),
ffbded7dee97563 Fabien Dessenne  2018-05-31  303  					      GFP_KERNEL);
ffbded7dee97563 Fabien Dessenne  2018-05-31  304  	if (!ipcc->controller.chans) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  305  		ret = -ENOMEM;
ffbded7dee97563 Fabien Dessenne  2018-05-31  306  		goto err_irq_wkp;
ffbded7dee97563 Fabien Dessenne  2018-05-31  307  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  308  
ffbded7dee97563 Fabien Dessenne  2018-05-31  309  	for (i = 0; i < ipcc->controller.num_chans; i++)
ffbded7dee97563 Fabien Dessenne  2018-05-31 @310  		ipcc->controller.chans[i].con_priv = (void *)i;
ffbded7dee97563 Fabien Dessenne  2018-05-31  311  
368d7767b50154e Thierry Reding   2018-12-20  312  	ret = devm_mbox_controller_register(dev, &ipcc->controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  313  	if (ret)
ffbded7dee97563 Fabien Dessenne  2018-05-31  314  		goto err_irq_wkp;
ffbded7dee97563 Fabien Dessenne  2018-05-31  315  
ffbded7dee97563 Fabien Dessenne  2018-05-31  316  	platform_set_drvdata(pdev, ipcc);
ffbded7dee97563 Fabien Dessenne  2018-05-31  317  
ffbded7dee97563 Fabien Dessenne  2018-05-31  318  	ip_ver = readl_relaxed(ipcc->reg_base + IPCC_VER);
ffbded7dee97563 Fabien Dessenne  2018-05-31  319  
ffbded7dee97563 Fabien Dessenne  2018-05-31  320  	dev_info(dev, "ipcc rev:%ld.%ld enabled, %d chans, proc %d\n",
ffbded7dee97563 Fabien Dessenne  2018-05-31  321  		 FIELD_GET(VER_MAJREV_MASK, ip_ver),
ffbded7dee97563 Fabien Dessenne  2018-05-31  322  		 FIELD_GET(VER_MINREV_MASK, ip_ver),
ffbded7dee97563 Fabien Dessenne  2018-05-31  323  		 ipcc->controller.num_chans, ipcc->proc_id);
ffbded7dee97563 Fabien Dessenne  2018-05-31  324  
ffbded7dee97563 Fabien Dessenne  2018-05-31  325  	clk_disable_unprepare(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  326  	return 0;
ffbded7dee97563 Fabien Dessenne  2018-05-31  327  
ffbded7dee97563 Fabien Dessenne  2018-05-31  328  err_irq_wkp:
69269446ccbf2b4 Fabien Dessenne  2019-10-30  329  	if (of_property_read_bool(np, "wakeup-source"))
ffbded7dee97563 Fabien Dessenne  2018-05-31  330  		dev_pm_clear_wake_irq(dev);
ffbded7dee97563 Fabien Dessenne  2018-05-31  331  err_init_wkp:
69269446ccbf2b4 Fabien Dessenne  2019-10-30  332  	device_set_wakeup_capable(dev, false);
ffbded7dee97563 Fabien Dessenne  2018-05-31  333  err_clk:
ffbded7dee97563 Fabien Dessenne  2018-05-31  334  	clk_disable_unprepare(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  335  	return ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  336  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  337  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 42039 bytes --]

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

* Re: [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency
@ 2020-10-30 16:07   ` kernel test robot
  0 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2020-10-30 16:07 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 17935 bytes --]

Hi Martin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on fujitsu-integration/mailbox-for-next]
[also build test WARNING on stm32/stm32-next linus/master linux/master v5.10-rc1 next-20201030]
[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]

url:    https://github.com/0day-ci/linux/commits/Martin-Kaiser/mailbox-stm32-ipcc-add-COMPILE_TEST-dependency/20201024-220512
base:   https://git.linaro.org/landing-teams/working/fujitsu/integration.git mailbox-for-next
config: x86_64-randconfig-r023-20201030 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 772aaa602383cf82795572ebcd86b0e660f3579f)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/6e22aaac25dcdd4c098c57d29363fa2c204e411e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Martin-Kaiser/mailbox-stm32-ipcc-add-COMPILE_TEST-dependency/20201024-220512
        git checkout 6e22aaac25dcdd4c098c57d29363fa2c204e411e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/mailbox/stm32-ipcc.c:147:22: warning: cast to smaller integer type 'unsigned int' from 'void *' [-Wvoid-pointer-to-int-cast]
           unsigned int chan = (unsigned int)link->con_priv;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/stm32-ipcc.c:166:22: warning: cast to smaller integer type 'unsigned int' from 'void *' [-Wvoid-pointer-to-int-cast]
           unsigned int chan = (unsigned int)link->con_priv;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mailbox/stm32-ipcc.c:186:22: warning: cast to smaller integer type 'unsigned int' from 'void *' [-Wvoid-pointer-to-int-cast]
           unsigned int chan = (unsigned int)link->con_priv;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/mailbox/stm32-ipcc.c:310:40: warning: cast to 'void *' from smaller integer type 'unsigned int' [-Wint-to-void-pointer-cast]
                   ipcc->controller.chans[i].con_priv = (void *)i;
                                                        ^~~~~~~~~
   4 warnings generated.

vim +147 drivers/mailbox/stm32-ipcc.c

ffbded7dee97563 Fabien Dessenne  2018-05-31  144  
ffbded7dee97563 Fabien Dessenne  2018-05-31  145  static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
ffbded7dee97563 Fabien Dessenne  2018-05-31  146  {
ffbded7dee97563 Fabien Dessenne  2018-05-31 @147  	unsigned int chan = (unsigned int)link->con_priv;
ffbded7dee97563 Fabien Dessenne  2018-05-31  148  	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
ffbded7dee97563 Fabien Dessenne  2018-05-31  149  					       controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  150  
ffbded7dee97563 Fabien Dessenne  2018-05-31  151  	dev_dbg(ipcc->controller.dev, "%s: chan:%d\n", __func__, chan);
ffbded7dee97563 Fabien Dessenne  2018-05-31  152  
ffbded7dee97563 Fabien Dessenne  2018-05-31  153  	/* set channel n occupied */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  154  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XSCR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  155  			    TX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  156  
ffbded7dee97563 Fabien Dessenne  2018-05-31  157  	/* unmask 'tx channel free' interrupt */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  158  	stm32_ipcc_clr_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  159  			    TX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  160  
ffbded7dee97563 Fabien Dessenne  2018-05-31  161  	return 0;
ffbded7dee97563 Fabien Dessenne  2018-05-31  162  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  163  
ffbded7dee97563 Fabien Dessenne  2018-05-31  164  static int stm32_ipcc_startup(struct mbox_chan *link)
ffbded7dee97563 Fabien Dessenne  2018-05-31  165  {
ffbded7dee97563 Fabien Dessenne  2018-05-31  166  	unsigned int chan = (unsigned int)link->con_priv;
ffbded7dee97563 Fabien Dessenne  2018-05-31  167  	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
ffbded7dee97563 Fabien Dessenne  2018-05-31  168  					       controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  169  	int ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  170  
ffbded7dee97563 Fabien Dessenne  2018-05-31  171  	ret = clk_prepare_enable(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  172  	if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  173  		dev_err(ipcc->controller.dev, "can not enable the clock\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  174  		return ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  175  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  176  
ffbded7dee97563 Fabien Dessenne  2018-05-31  177  	/* unmask 'rx channel occupied' interrupt */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  178  	stm32_ipcc_clr_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  179  			    RX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  180  
ffbded7dee97563 Fabien Dessenne  2018-05-31  181  	return 0;
ffbded7dee97563 Fabien Dessenne  2018-05-31  182  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  183  
ffbded7dee97563 Fabien Dessenne  2018-05-31  184  static void stm32_ipcc_shutdown(struct mbox_chan *link)
ffbded7dee97563 Fabien Dessenne  2018-05-31  185  {
ffbded7dee97563 Fabien Dessenne  2018-05-31  186  	unsigned int chan = (unsigned int)link->con_priv;
ffbded7dee97563 Fabien Dessenne  2018-05-31  187  	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
ffbded7dee97563 Fabien Dessenne  2018-05-31  188  					       controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  189  
ffbded7dee97563 Fabien Dessenne  2018-05-31  190  	/* mask rx/tx interrupt */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  191  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
ffbded7dee97563 Fabien Dessenne  2018-05-31  192  			    RX_BIT_CHAN(chan) | TX_BIT_CHAN(chan));
ffbded7dee97563 Fabien Dessenne  2018-05-31  193  
ffbded7dee97563 Fabien Dessenne  2018-05-31  194  	clk_disable_unprepare(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  195  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  196  
ffbded7dee97563 Fabien Dessenne  2018-05-31  197  static const struct mbox_chan_ops stm32_ipcc_ops = {
ffbded7dee97563 Fabien Dessenne  2018-05-31  198  	.send_data	= stm32_ipcc_send_data,
ffbded7dee97563 Fabien Dessenne  2018-05-31  199  	.startup	= stm32_ipcc_startup,
ffbded7dee97563 Fabien Dessenne  2018-05-31  200  	.shutdown	= stm32_ipcc_shutdown,
ffbded7dee97563 Fabien Dessenne  2018-05-31  201  };
ffbded7dee97563 Fabien Dessenne  2018-05-31  202  
ffbded7dee97563 Fabien Dessenne  2018-05-31  203  static int stm32_ipcc_probe(struct platform_device *pdev)
ffbded7dee97563 Fabien Dessenne  2018-05-31  204  {
ffbded7dee97563 Fabien Dessenne  2018-05-31  205  	struct device *dev = &pdev->dev;
ffbded7dee97563 Fabien Dessenne  2018-05-31  206  	struct device_node *np = dev->of_node;
ffbded7dee97563 Fabien Dessenne  2018-05-31  207  	struct stm32_ipcc *ipcc;
ffbded7dee97563 Fabien Dessenne  2018-05-31  208  	struct resource *res;
ffbded7dee97563 Fabien Dessenne  2018-05-31  209  	unsigned int i;
ffbded7dee97563 Fabien Dessenne  2018-05-31  210  	int ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  211  	u32 ip_ver;
ffbded7dee97563 Fabien Dessenne  2018-05-31  212  	static const char * const irq_name[] = {"rx", "tx"};
ffbded7dee97563 Fabien Dessenne  2018-05-31  213  	irq_handler_t irq_thread[] = {stm32_ipcc_rx_irq, stm32_ipcc_tx_irq};
ffbded7dee97563 Fabien Dessenne  2018-05-31  214  
ffbded7dee97563 Fabien Dessenne  2018-05-31  215  	if (!np) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  216  		dev_err(dev, "No DT found\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  217  		return -ENODEV;
ffbded7dee97563 Fabien Dessenne  2018-05-31  218  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  219  
ffbded7dee97563 Fabien Dessenne  2018-05-31  220  	ipcc = devm_kzalloc(dev, sizeof(*ipcc), GFP_KERNEL);
ffbded7dee97563 Fabien Dessenne  2018-05-31  221  	if (!ipcc)
ffbded7dee97563 Fabien Dessenne  2018-05-31  222  		return -ENOMEM;
ffbded7dee97563 Fabien Dessenne  2018-05-31  223  
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  224  	spin_lock_init(&ipcc->lock);
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  225  
ffbded7dee97563 Fabien Dessenne  2018-05-31  226  	/* proc_id */
ffbded7dee97563 Fabien Dessenne  2018-05-31  227  	if (of_property_read_u32(np, "st,proc-id", &ipcc->proc_id)) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  228  		dev_err(dev, "Missing st,proc-id\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  229  		return -ENODEV;
ffbded7dee97563 Fabien Dessenne  2018-05-31  230  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  231  
ffbded7dee97563 Fabien Dessenne  2018-05-31  232  	if (ipcc->proc_id >= STM32_MAX_PROCS) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  233  		dev_err(dev, "Invalid proc_id (%d)\n", ipcc->proc_id);
ffbded7dee97563 Fabien Dessenne  2018-05-31  234  		return -EINVAL;
ffbded7dee97563 Fabien Dessenne  2018-05-31  235  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  236  
ffbded7dee97563 Fabien Dessenne  2018-05-31  237  	/* regs */
ffbded7dee97563 Fabien Dessenne  2018-05-31  238  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ffbded7dee97563 Fabien Dessenne  2018-05-31  239  	ipcc->reg_base = devm_ioremap_resource(dev, res);
ffbded7dee97563 Fabien Dessenne  2018-05-31  240  	if (IS_ERR(ipcc->reg_base))
ffbded7dee97563 Fabien Dessenne  2018-05-31  241  		return PTR_ERR(ipcc->reg_base);
ffbded7dee97563 Fabien Dessenne  2018-05-31  242  
ffbded7dee97563 Fabien Dessenne  2018-05-31  243  	ipcc->reg_proc = ipcc->reg_base + ipcc->proc_id * IPCC_PROC_OFFST;
ffbded7dee97563 Fabien Dessenne  2018-05-31  244  
ffbded7dee97563 Fabien Dessenne  2018-05-31  245  	/* clock */
ffbded7dee97563 Fabien Dessenne  2018-05-31  246  	ipcc->clk = devm_clk_get(dev, NULL);
ffbded7dee97563 Fabien Dessenne  2018-05-31  247  	if (IS_ERR(ipcc->clk))
ffbded7dee97563 Fabien Dessenne  2018-05-31  248  		return PTR_ERR(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  249  
ffbded7dee97563 Fabien Dessenne  2018-05-31  250  	ret = clk_prepare_enable(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  251  	if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  252  		dev_err(dev, "can not enable the clock\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  253  		return ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  254  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  255  
ffbded7dee97563 Fabien Dessenne  2018-05-31  256  	/* irq */
ffbded7dee97563 Fabien Dessenne  2018-05-31  257  	for (i = 0; i < IPCC_IRQ_NUM; i++) {
68a1c8485cf8373 Fabien Dessenne  2019-04-24  258  		ipcc->irqs[i] = platform_get_irq_byname(pdev, irq_name[i]);
ffbded7dee97563 Fabien Dessenne  2018-05-31  259  		if (ipcc->irqs[i] < 0) {
68a1c8485cf8373 Fabien Dessenne  2019-04-24  260  			if (ipcc->irqs[i] != -EPROBE_DEFER)
68a1c8485cf8373 Fabien Dessenne  2019-04-24  261  				dev_err(dev, "no IRQ specified %s\n",
68a1c8485cf8373 Fabien Dessenne  2019-04-24  262  					irq_name[i]);
ffbded7dee97563 Fabien Dessenne  2018-05-31  263  			ret = ipcc->irqs[i];
ffbded7dee97563 Fabien Dessenne  2018-05-31  264  			goto err_clk;
ffbded7dee97563 Fabien Dessenne  2018-05-31  265  		}
ffbded7dee97563 Fabien Dessenne  2018-05-31  266  
ffbded7dee97563 Fabien Dessenne  2018-05-31  267  		ret = devm_request_threaded_irq(dev, ipcc->irqs[i], NULL,
ffbded7dee97563 Fabien Dessenne  2018-05-31  268  						irq_thread[i], IRQF_ONESHOT,
ffbded7dee97563 Fabien Dessenne  2018-05-31  269  						dev_name(dev), ipcc);
ffbded7dee97563 Fabien Dessenne  2018-05-31  270  		if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  271  			dev_err(dev, "failed to request irq %d (%d)\n", i, ret);
ffbded7dee97563 Fabien Dessenne  2018-05-31  272  			goto err_clk;
ffbded7dee97563 Fabien Dessenne  2018-05-31  273  		}
ffbded7dee97563 Fabien Dessenne  2018-05-31  274  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  275  
ffbded7dee97563 Fabien Dessenne  2018-05-31  276  	/* mask and enable rx/tx irq */
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  277  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XMR,
ffbded7dee97563 Fabien Dessenne  2018-05-31  278  			    RX_BIT_MASK | TX_BIT_MASK);
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  279  	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XCR,
dba9a3dfe912dc4 Arnaud Pouliquen 2019-05-22  280  			    XCR_RXOIE | XCR_TXOIE);
ffbded7dee97563 Fabien Dessenne  2018-05-31  281  
ffbded7dee97563 Fabien Dessenne  2018-05-31  282  	/* wakeup */
ffbded7dee97563 Fabien Dessenne  2018-05-31  283  	if (of_property_read_bool(np, "wakeup-source")) {
eac36c8651210df Fabien Dessenne  2019-01-04  284  		device_set_wakeup_capable(dev, true);
69269446ccbf2b4 Fabien Dessenne  2019-10-30  285  
69269446ccbf2b4 Fabien Dessenne  2019-10-30  286  		ret = dev_pm_set_wake_irq(dev, ipcc->irqs[IPCC_IRQ_RX]);
ffbded7dee97563 Fabien Dessenne  2018-05-31  287  		if (ret) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  288  			dev_err(dev, "Failed to set wake up irq\n");
ffbded7dee97563 Fabien Dessenne  2018-05-31  289  			goto err_init_wkp;
ffbded7dee97563 Fabien Dessenne  2018-05-31  290  		}
ffbded7dee97563 Fabien Dessenne  2018-05-31  291  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  292  
ffbded7dee97563 Fabien Dessenne  2018-05-31  293  	/* mailbox controller */
ffbded7dee97563 Fabien Dessenne  2018-05-31  294  	ipcc->n_chans = readl_relaxed(ipcc->reg_base + IPCC_HWCFGR);
ffbded7dee97563 Fabien Dessenne  2018-05-31  295  	ipcc->n_chans &= IPCFGR_CHAN_MASK;
ffbded7dee97563 Fabien Dessenne  2018-05-31  296  
ffbded7dee97563 Fabien Dessenne  2018-05-31  297  	ipcc->controller.dev = dev;
ffbded7dee97563 Fabien Dessenne  2018-05-31  298  	ipcc->controller.txdone_irq = true;
ffbded7dee97563 Fabien Dessenne  2018-05-31  299  	ipcc->controller.ops = &stm32_ipcc_ops;
ffbded7dee97563 Fabien Dessenne  2018-05-31  300  	ipcc->controller.num_chans = ipcc->n_chans;
ffbded7dee97563 Fabien Dessenne  2018-05-31  301  	ipcc->controller.chans = devm_kcalloc(dev, ipcc->controller.num_chans,
ffbded7dee97563 Fabien Dessenne  2018-05-31  302  					      sizeof(*ipcc->controller.chans),
ffbded7dee97563 Fabien Dessenne  2018-05-31  303  					      GFP_KERNEL);
ffbded7dee97563 Fabien Dessenne  2018-05-31  304  	if (!ipcc->controller.chans) {
ffbded7dee97563 Fabien Dessenne  2018-05-31  305  		ret = -ENOMEM;
ffbded7dee97563 Fabien Dessenne  2018-05-31  306  		goto err_irq_wkp;
ffbded7dee97563 Fabien Dessenne  2018-05-31  307  	}
ffbded7dee97563 Fabien Dessenne  2018-05-31  308  
ffbded7dee97563 Fabien Dessenne  2018-05-31  309  	for (i = 0; i < ipcc->controller.num_chans; i++)
ffbded7dee97563 Fabien Dessenne  2018-05-31 @310  		ipcc->controller.chans[i].con_priv = (void *)i;
ffbded7dee97563 Fabien Dessenne  2018-05-31  311  
368d7767b50154e Thierry Reding   2018-12-20  312  	ret = devm_mbox_controller_register(dev, &ipcc->controller);
ffbded7dee97563 Fabien Dessenne  2018-05-31  313  	if (ret)
ffbded7dee97563 Fabien Dessenne  2018-05-31  314  		goto err_irq_wkp;
ffbded7dee97563 Fabien Dessenne  2018-05-31  315  
ffbded7dee97563 Fabien Dessenne  2018-05-31  316  	platform_set_drvdata(pdev, ipcc);
ffbded7dee97563 Fabien Dessenne  2018-05-31  317  
ffbded7dee97563 Fabien Dessenne  2018-05-31  318  	ip_ver = readl_relaxed(ipcc->reg_base + IPCC_VER);
ffbded7dee97563 Fabien Dessenne  2018-05-31  319  
ffbded7dee97563 Fabien Dessenne  2018-05-31  320  	dev_info(dev, "ipcc rev:%ld.%ld enabled, %d chans, proc %d\n",
ffbded7dee97563 Fabien Dessenne  2018-05-31  321  		 FIELD_GET(VER_MAJREV_MASK, ip_ver),
ffbded7dee97563 Fabien Dessenne  2018-05-31  322  		 FIELD_GET(VER_MINREV_MASK, ip_ver),
ffbded7dee97563 Fabien Dessenne  2018-05-31  323  		 ipcc->controller.num_chans, ipcc->proc_id);
ffbded7dee97563 Fabien Dessenne  2018-05-31  324  
ffbded7dee97563 Fabien Dessenne  2018-05-31  325  	clk_disable_unprepare(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  326  	return 0;
ffbded7dee97563 Fabien Dessenne  2018-05-31  327  
ffbded7dee97563 Fabien Dessenne  2018-05-31  328  err_irq_wkp:
69269446ccbf2b4 Fabien Dessenne  2019-10-30  329  	if (of_property_read_bool(np, "wakeup-source"))
ffbded7dee97563 Fabien Dessenne  2018-05-31  330  		dev_pm_clear_wake_irq(dev);
ffbded7dee97563 Fabien Dessenne  2018-05-31  331  err_init_wkp:
69269446ccbf2b4 Fabien Dessenne  2019-10-30  332  	device_set_wakeup_capable(dev, false);
ffbded7dee97563 Fabien Dessenne  2018-05-31  333  err_clk:
ffbded7dee97563 Fabien Dessenne  2018-05-31  334  	clk_disable_unprepare(ipcc->clk);
ffbded7dee97563 Fabien Dessenne  2018-05-31  335  	return ret;
ffbded7dee97563 Fabien Dessenne  2018-05-31  336  }
ffbded7dee97563 Fabien Dessenne  2018-05-31  337  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 42039 bytes --]

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

* [PATCH v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency
  2020-10-24 13:31 [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
  2020-10-24 13:31 ` [PATCH 2/2] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
  2020-10-30 16:07   ` kernel test robot
@ 2020-11-01 15:42 ` Martin Kaiser
  2020-11-01 15:42   ` [PATCH v2 2/3] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
  2020-11-01 15:42   ` [PATCH v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser
  2020-11-29 18:52 ` [PATCH RESEND v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
  3 siblings, 2 replies; 12+ messages in thread
From: Martin Kaiser @ 2020-11-01 15:42 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser

This allows compiling the driver on architectures where the hardware is not
available. Most other mailbox drivers support this as well.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
---
changes in v2
- added Fabien's review tag

 drivers/mailbox/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig
index 05b1009e2820..abbf5d67ffa2 100644
--- a/drivers/mailbox/Kconfig
+++ b/drivers/mailbox/Kconfig
@@ -201,7 +201,7 @@ config BCM_FLEXRM_MBOX
 
 config STM32_IPCC
 	tristate "STM32 IPCC Mailbox"
-	depends on MACH_STM32MP157
+	depends on MACH_STM32MP157 || COMPILE_TEST
 	help
 	  Mailbox implementation for STMicroelectonics STM32 family chips
 	  with hardware for Inter-Processor Communication Controller (IPCC)
-- 
2.20.1


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

* [PATCH v2 2/3] mailbox: stm32-ipcc: remove duplicate error message
  2020-11-01 15:42 ` [PATCH v2 1/3] " Martin Kaiser
@ 2020-11-01 15:42   ` Martin Kaiser
  2020-11-01 15:42   ` [PATCH v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser
  1 sibling, 0 replies; 12+ messages in thread
From: Martin Kaiser @ 2020-11-01 15:42 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser

platform_get_irq_byname already prints an error message if the requested
irq was not found. Don't print another message in the driver.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
---
changes in v2
- added Fabien's review tag
- reformatted the commit message such that lines are < 75 chars

 drivers/mailbox/stm32-ipcc.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
index ef966887aa15..ab8fe56af948 100644
--- a/drivers/mailbox/stm32-ipcc.c
+++ b/drivers/mailbox/stm32-ipcc.c
@@ -257,9 +257,6 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 	for (i = 0; i < IPCC_IRQ_NUM; i++) {
 		ipcc->irqs[i] = platform_get_irq_byname(pdev, irq_name[i]);
 		if (ipcc->irqs[i] < 0) {
-			if (ipcc->irqs[i] != -EPROBE_DEFER)
-				dev_err(dev, "no IRQ specified %s\n",
-					irq_name[i]);
 			ret = ipcc->irqs[i];
 			goto err_clk;
 		}
-- 
2.20.1


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

* [PATCH v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long
  2020-11-01 15:42 ` [PATCH v2 1/3] " Martin Kaiser
  2020-11-01 15:42   ` [PATCH v2 2/3] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
@ 2020-11-01 15:42   ` Martin Kaiser
  2020-11-02 13:11     ` Fabien DESSENNE
  1 sibling, 1 reply; 12+ messages in thread
From: Martin Kaiser @ 2020-11-01 15:42 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser, kernel test robot

Now that the driver can be enabled by COMPILE_TEST, we see warnings on
64bit platforms when void pointers are cast to unsigned int (and
vice versa).

warning: cast to smaller integer type 'unsigned int' from 'void *'
           unsigned int chan = (unsigned int)link->con_priv;
...
warning: cast to 'void *' from smaller integer type 'unsigned int'
           ipcc->controller.chans[i].con_priv = (void *)i;

Update these casts to use unsigned long variables, which are the same
size as pointers on all platforms.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
changes in v2
- added this patch to fix COMPILE_TEST warnings

 drivers/mailbox/stm32-ipcc.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
index ab8fe56af948..b84e0587937c 100644
--- a/drivers/mailbox/stm32-ipcc.c
+++ b/drivers/mailbox/stm32-ipcc.c
@@ -144,11 +144,11 @@ static irqreturn_t stm32_ipcc_tx_irq(int irq, void *data)
 
 static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
 {
-	unsigned int chan = (unsigned int)link->con_priv;
+	unsigned long chan = (unsigned long)link->con_priv;
 	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
 					       controller);
 
-	dev_dbg(ipcc->controller.dev, "%s: chan:%d\n", __func__, chan);
+	dev_dbg(ipcc->controller.dev, "%s: chan:%lu\n", __func__, chan);
 
 	/* set channel n occupied */
 	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XSCR,
@@ -163,7 +163,7 @@ static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
 
 static int stm32_ipcc_startup(struct mbox_chan *link)
 {
-	unsigned int chan = (unsigned int)link->con_priv;
+	unsigned long chan = (unsigned long)link->con_priv;
 	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
 					       controller);
 	int ret;
@@ -183,7 +183,7 @@ static int stm32_ipcc_startup(struct mbox_chan *link)
 
 static void stm32_ipcc_shutdown(struct mbox_chan *link)
 {
-	unsigned int chan = (unsigned int)link->con_priv;
+	unsigned long chan = (unsigned long)link->con_priv;
 	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
 					       controller);
 
@@ -206,7 +206,7 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 	struct device_node *np = dev->of_node;
 	struct stm32_ipcc *ipcc;
 	struct resource *res;
-	unsigned int i;
+	unsigned long i;
 	int ret;
 	u32 ip_ver;
 	static const char * const irq_name[] = {"rx", "tx"};
@@ -265,7 +265,7 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 						irq_thread[i], IRQF_ONESHOT,
 						dev_name(dev), ipcc);
 		if (ret) {
-			dev_err(dev, "failed to request irq %d (%d)\n", i, ret);
+			dev_err(dev, "failed to request irq %lu (%d)\n", i, ret);
 			goto err_clk;
 		}
 	}
-- 
2.20.1


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

* Re: [PATCH v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long
  2020-11-01 15:42   ` [PATCH v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser
@ 2020-11-02 13:11     ` Fabien DESSENNE
  0 siblings, 0 replies; 12+ messages in thread
From: Fabien DESSENNE @ 2020-11-02 13:11 UTC (permalink / raw)
  To: Martin Kaiser, Jassi Brar, Maxime Coquelin, Alexandre TORGUE
  Cc: linux-stm32, linux-kernel, kernel test robot

Hi Martin


Thank you for the patch.


Fabien


On 01/11/2020 4:42 pm, Martin Kaiser wrote:
> Now that the driver can be enabled by COMPILE_TEST, we see warnings on
> 64bit platforms when void pointers are cast to unsigned int (and
> vice versa).
>
> warning: cast to smaller integer type 'unsigned int' from 'void *'
>             unsigned int chan = (unsigned int)link->con_priv;
> ...
> warning: cast to 'void *' from smaller integer type 'unsigned int'
>             ipcc->controller.chans[i].con_priv = (void *)i;
>
> Update these casts to use unsigned long variables, which are the same
> size as pointers on all platforms.
>
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Martin Kaiser <martin@kaiser.cx>


Reviewed-by: Fabien Dessenne<fabien.dessenne@st.com>


> ---
> changes in v2
> - added this patch to fix COMPILE_TEST warnings
>
>   drivers/mailbox/stm32-ipcc.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
> index ab8fe56af948..b84e0587937c 100644
> --- a/drivers/mailbox/stm32-ipcc.c
> +++ b/drivers/mailbox/stm32-ipcc.c
> @@ -144,11 +144,11 @@ static irqreturn_t stm32_ipcc_tx_irq(int irq, void *data)
>   
>   static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
>   {
> -	unsigned int chan = (unsigned int)link->con_priv;
> +	unsigned long chan = (unsigned long)link->con_priv;
>   	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
>   					       controller);
>   
> -	dev_dbg(ipcc->controller.dev, "%s: chan:%d\n", __func__, chan);
> +	dev_dbg(ipcc->controller.dev, "%s: chan:%lu\n", __func__, chan);
>   
>   	/* set channel n occupied */
>   	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XSCR,
> @@ -163,7 +163,7 @@ static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
>   
>   static int stm32_ipcc_startup(struct mbox_chan *link)
>   {
> -	unsigned int chan = (unsigned int)link->con_priv;
> +	unsigned long chan = (unsigned long)link->con_priv;
>   	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
>   					       controller);
>   	int ret;
> @@ -183,7 +183,7 @@ static int stm32_ipcc_startup(struct mbox_chan *link)
>   
>   static void stm32_ipcc_shutdown(struct mbox_chan *link)
>   {
> -	unsigned int chan = (unsigned int)link->con_priv;
> +	unsigned long chan = (unsigned long)link->con_priv;
>   	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
>   					       controller);
>   
> @@ -206,7 +206,7 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
>   	struct device_node *np = dev->of_node;
>   	struct stm32_ipcc *ipcc;
>   	struct resource *res;
> -	unsigned int i;
> +	unsigned long i;
>   	int ret;
>   	u32 ip_ver;
>   	static const char * const irq_name[] = {"rx", "tx"};
> @@ -265,7 +265,7 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
>   						irq_thread[i], IRQF_ONESHOT,
>   						dev_name(dev), ipcc);
>   		if (ret) {
> -			dev_err(dev, "failed to request irq %d (%d)\n", i, ret);
> +			dev_err(dev, "failed to request irq %lu (%d)\n", i, ret);
>   			goto err_clk;
>   		}
>   	}

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

* [PATCH RESEND v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency
  2020-10-24 13:31 [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
                   ` (2 preceding siblings ...)
  2020-11-01 15:42 ` [PATCH v2 1/3] " Martin Kaiser
@ 2020-11-29 18:52 ` Martin Kaiser
  2020-11-29 18:52   ` [PATCH RESEND v2 2/3] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
  2020-11-29 18:52   ` [PATCH RESEND v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser
  3 siblings, 2 replies; 12+ messages in thread
From: Martin Kaiser @ 2020-11-29 18:52 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser

This allows compiling the driver on architectures where the hardware is not
available. Most other mailbox drivers support this as well.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
---
changes in v2
- added Fabien's review tag

Dear all,

this has been around for some weeks now. Is there anything else you need
before these simple patches can be merged?

Thanks,
Martin

 drivers/mailbox/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig
index 05b1009e2820..abbf5d67ffa2 100644
--- a/drivers/mailbox/Kconfig
+++ b/drivers/mailbox/Kconfig
@@ -201,7 +201,7 @@ config BCM_FLEXRM_MBOX
 
 config STM32_IPCC
 	tristate "STM32 IPCC Mailbox"
-	depends on MACH_STM32MP157
+	depends on MACH_STM32MP157 || COMPILE_TEST
 	help
 	  Mailbox implementation for STMicroelectonics STM32 family chips
 	  with hardware for Inter-Processor Communication Controller (IPCC)
-- 
2.20.1


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

* [PATCH RESEND v2 2/3] mailbox: stm32-ipcc: remove duplicate error message
  2020-11-29 18:52 ` [PATCH RESEND v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
@ 2020-11-29 18:52   ` Martin Kaiser
  2020-11-29 18:52   ` [PATCH RESEND v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser
  1 sibling, 0 replies; 12+ messages in thread
From: Martin Kaiser @ 2020-11-29 18:52 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser

platform_get_irq_byname already prints an error message if the requested
irq was not found. Don't print another message in the driver.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
---
changes in v2
- added Fabien's review tag
- reformatted the commit message such that lines are < 75 chars

 drivers/mailbox/stm32-ipcc.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
index ef966887aa15..ab8fe56af948 100644
--- a/drivers/mailbox/stm32-ipcc.c
+++ b/drivers/mailbox/stm32-ipcc.c
@@ -257,9 +257,6 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 	for (i = 0; i < IPCC_IRQ_NUM; i++) {
 		ipcc->irqs[i] = platform_get_irq_byname(pdev, irq_name[i]);
 		if (ipcc->irqs[i] < 0) {
-			if (ipcc->irqs[i] != -EPROBE_DEFER)
-				dev_err(dev, "no IRQ specified %s\n",
-					irq_name[i]);
 			ret = ipcc->irqs[i];
 			goto err_clk;
 		}
-- 
2.20.1


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

* [PATCH RESEND v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long
  2020-11-29 18:52 ` [PATCH RESEND v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
  2020-11-29 18:52   ` [PATCH RESEND v2 2/3] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
@ 2020-11-29 18:52   ` Martin Kaiser
  1 sibling, 0 replies; 12+ messages in thread
From: Martin Kaiser @ 2020-11-29 18:52 UTC (permalink / raw)
  To: Jassi Brar, Maxime Coquelin, Alexandre Torgue, Fabien Dessenne
  Cc: linux-stm32, linux-kernel, Martin Kaiser, kernel test robot

Now that the driver can be enabled by COMPILE_TEST, we see warnings on
64bit platforms when void pointers are cast to unsigned int (and
vice versa).

warning: cast to smaller integer type 'unsigned int' from 'void *'
           unsigned int chan = (unsigned int)link->con_priv;
...
warning: cast to 'void *' from smaller integer type 'unsigned int'
           ipcc->controller.chans[i].con_priv = (void *)i;

Update these casts to use unsigned long variables, which are the same
size as pointers on all platforms.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
---
changes in v2
- added this patch to fix COMPILE_TEST warnings

 drivers/mailbox/stm32-ipcc.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/mailbox/stm32-ipcc.c b/drivers/mailbox/stm32-ipcc.c
index ab8fe56af948..b84e0587937c 100644
--- a/drivers/mailbox/stm32-ipcc.c
+++ b/drivers/mailbox/stm32-ipcc.c
@@ -144,11 +144,11 @@ static irqreturn_t stm32_ipcc_tx_irq(int irq, void *data)
 
 static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
 {
-	unsigned int chan = (unsigned int)link->con_priv;
+	unsigned long chan = (unsigned long)link->con_priv;
 	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
 					       controller);
 
-	dev_dbg(ipcc->controller.dev, "%s: chan:%d\n", __func__, chan);
+	dev_dbg(ipcc->controller.dev, "%s: chan:%lu\n", __func__, chan);
 
 	/* set channel n occupied */
 	stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XSCR,
@@ -163,7 +163,7 @@ static int stm32_ipcc_send_data(struct mbox_chan *link, void *data)
 
 static int stm32_ipcc_startup(struct mbox_chan *link)
 {
-	unsigned int chan = (unsigned int)link->con_priv;
+	unsigned long chan = (unsigned long)link->con_priv;
 	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
 					       controller);
 	int ret;
@@ -183,7 +183,7 @@ static int stm32_ipcc_startup(struct mbox_chan *link)
 
 static void stm32_ipcc_shutdown(struct mbox_chan *link)
 {
-	unsigned int chan = (unsigned int)link->con_priv;
+	unsigned long chan = (unsigned long)link->con_priv;
 	struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc,
 					       controller);
 
@@ -206,7 +206,7 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 	struct device_node *np = dev->of_node;
 	struct stm32_ipcc *ipcc;
 	struct resource *res;
-	unsigned int i;
+	unsigned long i;
 	int ret;
 	u32 ip_ver;
 	static const char * const irq_name[] = {"rx", "tx"};
@@ -265,7 +265,7 @@ static int stm32_ipcc_probe(struct platform_device *pdev)
 						irq_thread[i], IRQF_ONESHOT,
 						dev_name(dev), ipcc);
 		if (ret) {
-			dev_err(dev, "failed to request irq %d (%d)\n", i, ret);
+			dev_err(dev, "failed to request irq %lu (%d)\n", i, ret);
 			goto err_clk;
 		}
 	}
-- 
2.20.1


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

end of thread, other threads:[~2020-11-29 18:56 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-24 13:31 [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
2020-10-24 13:31 ` [PATCH 2/2] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
2020-10-26  8:12   ` Fabien DESSENNE
2020-10-30 16:07 ` [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency kernel test robot
2020-10-30 16:07   ` kernel test robot
2020-11-01 15:42 ` [PATCH v2 1/3] " Martin Kaiser
2020-11-01 15:42   ` [PATCH v2 2/3] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
2020-11-01 15:42   ` [PATCH v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser
2020-11-02 13:11     ` Fabien DESSENNE
2020-11-29 18:52 ` [PATCH RESEND v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
2020-11-29 18:52   ` [PATCH RESEND v2 2/3] mailbox: stm32-ipcc: remove duplicate error message Martin Kaiser
2020-11-29 18:52   ` [PATCH RESEND v2 3/3] mailbox: stm32-ipcc: cast void pointers to unsigned long Martin Kaiser

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.