linux-kernel.vger.kernel.org archive mirror
 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; 11+ 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] 11+ 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 ` [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency kernel test robot
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ 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] 11+ 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; 11+ 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] 11+ 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-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 ` [PATCH v2 1/3] " Martin Kaiser
  2020-11-29 18:52 ` [PATCH RESEND v2 1/3] mailbox: stm32-ipcc: add COMPILE_TEST dependency Martin Kaiser
  3 siblings, 0 replies; 11+ 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] 11+ 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 ` [PATCH 1/2] mailbox: stm32-ipcc: add COMPILE_TEST dependency 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; 11+ 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] 11+ 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; 11+ 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] 11+ 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; 11+ 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] 11+ 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; 11+ 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] 11+ 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; 11+ 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] 11+ 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; 11+ 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] 11+ 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; 11+ 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] 11+ messages in thread

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

Thread overview: 11+ 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-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).