[5/5] soc: apple: mailbox: Rename config symbol to APPLE_MAILBOX

Message ID 20230328-soc-mailbox-v1-5-3953814532fd@marcan.st
State New
Headers
Series mailbox: apple: Move driver into soc/apple and stop using the subsystem |

Commit Message

Hector Martin March 28, 2023, 1:14 p.m. UTC
  With the original owner of APPLE_MAILBOX removed, let's rename the new
APPLE_MBOX to the old name. This avoids .config churn for downstream
users, and leaves us with an identical config symbol and module name as
before.

Signed-off-by: Hector Martin <marcan@marcan.st>
---
 drivers/soc/apple/Kconfig  | 5 ++---
 drivers/soc/apple/Makefile | 2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)
  

Comments

Eric Curtin March 28, 2023, 1:37 p.m. UTC | #1
On Tue, 28 Mar 2023 at 14:21, Hector Martin <marcan@marcan.st> wrote:
>
> With the original owner of APPLE_MAILBOX removed, let's rename the new
> APPLE_MBOX to the old name. This avoids .config churn for downstream
> users, and leaves us with an identical config symbol and module name as
> before.
>
> Signed-off-by: Hector Martin <marcan@marcan.st>

Watched the stream

Acked-by: Eric Curtin <ecurtin@redhat.com>

Is mise le meas/Regards,

Eric Curtin

> ---
>  drivers/soc/apple/Kconfig  | 5 ++---
>  drivers/soc/apple/Makefile | 2 +-
>  2 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/soc/apple/Kconfig b/drivers/soc/apple/Kconfig
> index d0e29bbd8c6f..c5203c388bf4 100644
> --- a/drivers/soc/apple/Kconfig
> +++ b/drivers/soc/apple/Kconfig
> @@ -17,11 +17,10 @@ config APPLE_PMGR_PWRSTATE
>           controls for SoC devices. This driver manages them through the
>           generic power domain framework, and also provides reset support.
>
> -config APPLE_MBOX
> +config APPLE_MAILBOX
>         tristate "Apple SoC mailboxes"
>         depends on PM
>         depends on ARCH_APPLE || (64BIT && COMPILE_TEST)
> -       depends on !APPLE_MAILBOX
>         default ARCH_APPLE
>         help
>           Apple SoCs have various co-processors required for certain
> @@ -33,7 +32,7 @@ config APPLE_MBOX
>
>  config APPLE_RTKIT
>         tristate "Apple RTKit co-processor IPC protocol"
> -       depends on APPLE_MBOX
> +       depends on APPLE_MAILBOX
>         depends on ARCH_APPLE || COMPILE_TEST
>         default ARCH_APPLE
>         help
> diff --git a/drivers/soc/apple/Makefile b/drivers/soc/apple/Makefile
> index e52edf6a73da..20feee6f3943 100644
> --- a/drivers/soc/apple/Makefile
> +++ b/drivers/soc/apple/Makefile
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: GPL-2.0-only
>  obj-$(CONFIG_APPLE_PMGR_PWRSTATE)      += apple-pmgr-pwrstate.o
>
> -obj-$(CONFIG_APPLE_MBOX) += apple-mailbox.o
> +obj-$(CONFIG_APPLE_MAILBOX) += apple-mailbox.o
>  apple-mailbox-y = mailbox.o
>
>  obj-$(CONFIG_APPLE_RTKIT) += apple-rtkit.o
>
> --
> 2.40.0
>
>
  
kernel test robot March 29, 2023, 5:42 a.m. UTC | #2
Hi Hector,

I love your patch! Yet something to improve:

[auto build test ERROR on bdfe6de2695c5bccc663a5a7d530f81925d8bc10]

url:    https://github.com/intel-lab-lkp/linux/commits/Hector-Martin/soc-apple-rtkit-Get-rid-of-apple_rtkit_send_message_wait/20230328-211648
base:   bdfe6de2695c5bccc663a5a7d530f81925d8bc10
patch link:    https://lore.kernel.org/r/20230328-soc-mailbox-v1-5-3953814532fd%40marcan.st
patch subject: [PATCH 5/5] soc: apple: mailbox: Rename config symbol to APPLE_MAILBOX
config: ia64-allmodconfig (https://download.01.org/0day-ci/archive/20230329/202303291348.nYR9dkeW-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 12.1.0
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
        # https://github.com/intel-lab-lkp/linux/commit/d0addf95095d935cdd5940101fbf1b1594b08158
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Hector-Martin/soc-apple-rtkit-Get-rid-of-apple_rtkit_send_message_wait/20230328-211648
        git checkout d0addf95095d935cdd5940101fbf1b1594b08158
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/soc/apple/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303291348.nYR9dkeW-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/soc/apple/mailbox.c: In function 'apple_mbox_send':
>> drivers/soc/apple/mailbox.c:151:24: error: implicit declaration of function 'FIELD_PREP' [-Werror=implicit-function-declaration]
     151 |         writeq_relaxed(FIELD_PREP(APPLE_MBOX_MSG1_MSG, msg.msg1),
         |                        ^~~~~~~~~~
   drivers/soc/apple/mailbox.c: In function 'apple_mbox_poll_locked':
>> drivers/soc/apple/mailbox.c:188:28: error: implicit declaration of function 'FIELD_GET' [-Werror=implicit-function-declaration]
     188 |                 msg.msg1 = FIELD_GET(
         |                            ^~~~~~~~~
   cc1: some warnings being treated as errors


vim +/FIELD_PREP +151 drivers/soc/apple/mailbox.c

8b654b5034baba0 Hector Martin 2023-03-28   95  
8b654b5034baba0 Hector Martin 2023-03-28   96  int apple_mbox_send(struct apple_mbox *mbox, const struct apple_mbox_msg msg,
8b654b5034baba0 Hector Martin 2023-03-28   97  		    bool atomic)
8b654b5034baba0 Hector Martin 2023-03-28   98  {
8b654b5034baba0 Hector Martin 2023-03-28   99  	unsigned long flags;
8b654b5034baba0 Hector Martin 2023-03-28  100  	int ret;
8b654b5034baba0 Hector Martin 2023-03-28  101  	u32 mbox_ctrl;
8b654b5034baba0 Hector Martin 2023-03-28  102  	long t;
8b654b5034baba0 Hector Martin 2023-03-28  103  
8b654b5034baba0 Hector Martin 2023-03-28  104  	spin_lock_irqsave(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28  105  	mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->a2i_control);
8b654b5034baba0 Hector Martin 2023-03-28  106  
8b654b5034baba0 Hector Martin 2023-03-28  107  	while (mbox_ctrl & mbox->hw->control_full) {
8b654b5034baba0 Hector Martin 2023-03-28  108  		if (atomic) {
8b654b5034baba0 Hector Martin 2023-03-28  109  			ret = readl_poll_timeout_atomic(
8b654b5034baba0 Hector Martin 2023-03-28  110  				mbox->regs + mbox->hw->a2i_control, mbox_ctrl,
8b654b5034baba0 Hector Martin 2023-03-28  111  				!(mbox_ctrl & mbox->hw->control_full), 100,
8b654b5034baba0 Hector Martin 2023-03-28  112  				APPLE_MBOX_TX_TIMEOUT * 1000);
8b654b5034baba0 Hector Martin 2023-03-28  113  
8b654b5034baba0 Hector Martin 2023-03-28  114  			if (ret) {
8b654b5034baba0 Hector Martin 2023-03-28  115  				spin_unlock_irqrestore(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28  116  				return ret;
8b654b5034baba0 Hector Martin 2023-03-28  117  			}
8b654b5034baba0 Hector Martin 2023-03-28  118  
8b654b5034baba0 Hector Martin 2023-03-28  119  			break;
8b654b5034baba0 Hector Martin 2023-03-28  120  		}
8b654b5034baba0 Hector Martin 2023-03-28  121  		/*
8b654b5034baba0 Hector Martin 2023-03-28  122  		 * The interrupt is level triggered and will keep firing as long as the
8b654b5034baba0 Hector Martin 2023-03-28  123  		 * FIFO is empty. It will also keep firing if the FIFO was empty
8b654b5034baba0 Hector Martin 2023-03-28  124  		 * at any point in the past until it has been acknowledged at the
8b654b5034baba0 Hector Martin 2023-03-28  125  		 * mailbox level. By acknowledging it here we can ensure that we will
8b654b5034baba0 Hector Martin 2023-03-28  126  		 * only get the interrupt once the FIFO has been cleared again.
8b654b5034baba0 Hector Martin 2023-03-28  127  		 * If the FIFO is already empty before the ack it will fire again
8b654b5034baba0 Hector Martin 2023-03-28  128  		 * immediately after the ack.
8b654b5034baba0 Hector Martin 2023-03-28  129  		 */
8b654b5034baba0 Hector Martin 2023-03-28  130  		if (mbox->hw->has_irq_controls) {
8b654b5034baba0 Hector Martin 2023-03-28  131  			writel_relaxed(mbox->hw->irq_bit_send_empty,
8b654b5034baba0 Hector Martin 2023-03-28  132  				       mbox->regs + mbox->hw->irq_ack);
8b654b5034baba0 Hector Martin 2023-03-28  133  		}
8b654b5034baba0 Hector Martin 2023-03-28  134  		enable_irq(mbox->irq_send_empty);
8b654b5034baba0 Hector Martin 2023-03-28  135  		reinit_completion(&mbox->tx_empty);
8b654b5034baba0 Hector Martin 2023-03-28  136  		spin_unlock_irqrestore(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28  137  
8b654b5034baba0 Hector Martin 2023-03-28  138  		t = wait_for_completion_interruptible_timeout(
8b654b5034baba0 Hector Martin 2023-03-28  139  			&mbox->tx_empty,
8b654b5034baba0 Hector Martin 2023-03-28  140  			msecs_to_jiffies(APPLE_MBOX_TX_TIMEOUT));
8b654b5034baba0 Hector Martin 2023-03-28  141  		if (t < 0)
8b654b5034baba0 Hector Martin 2023-03-28  142  			return t;
8b654b5034baba0 Hector Martin 2023-03-28  143  		else if (t == 0)
8b654b5034baba0 Hector Martin 2023-03-28  144  			return -ETIMEDOUT;
8b654b5034baba0 Hector Martin 2023-03-28  145  
8b654b5034baba0 Hector Martin 2023-03-28  146  		spin_lock_irqsave(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28  147  		mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->a2i_control);
8b654b5034baba0 Hector Martin 2023-03-28  148  	}
8b654b5034baba0 Hector Martin 2023-03-28  149  
8b654b5034baba0 Hector Martin 2023-03-28  150  	writeq_relaxed(msg.msg0, mbox->regs + mbox->hw->a2i_send0);
8b654b5034baba0 Hector Martin 2023-03-28 @151  	writeq_relaxed(FIELD_PREP(APPLE_MBOX_MSG1_MSG, msg.msg1),
8b654b5034baba0 Hector Martin 2023-03-28  152  		       mbox->regs + mbox->hw->a2i_send1);
8b654b5034baba0 Hector Martin 2023-03-28  153  
8b654b5034baba0 Hector Martin 2023-03-28  154  	spin_unlock_irqrestore(&mbox->tx_lock, flags);
8b654b5034baba0 Hector Martin 2023-03-28  155  
8b654b5034baba0 Hector Martin 2023-03-28  156  	return 0;
8b654b5034baba0 Hector Martin 2023-03-28  157  }
8b654b5034baba0 Hector Martin 2023-03-28  158  EXPORT_SYMBOL(apple_mbox_send);
8b654b5034baba0 Hector Martin 2023-03-28  159  
8b654b5034baba0 Hector Martin 2023-03-28  160  static irqreturn_t apple_mbox_send_empty_irq(int irq, void *data)
8b654b5034baba0 Hector Martin 2023-03-28  161  {
8b654b5034baba0 Hector Martin 2023-03-28  162  	struct apple_mbox *mbox = data;
8b654b5034baba0 Hector Martin 2023-03-28  163  
8b654b5034baba0 Hector Martin 2023-03-28  164  	/*
8b654b5034baba0 Hector Martin 2023-03-28  165  	 * We don't need to acknowledge the interrupt at the mailbox level
8b654b5034baba0 Hector Martin 2023-03-28  166  	 * here even if supported by the hardware. It will keep firing but that
8b654b5034baba0 Hector Martin 2023-03-28  167  	 * doesn't matter since it's disabled at the main interrupt controller.
8b654b5034baba0 Hector Martin 2023-03-28  168  	 * apple_mbox_send will acknowledge it before enabling
8b654b5034baba0 Hector Martin 2023-03-28  169  	 * it at the main controller again.
8b654b5034baba0 Hector Martin 2023-03-28  170  	 */
8b654b5034baba0 Hector Martin 2023-03-28  171  	spin_lock(&mbox->tx_lock);
8b654b5034baba0 Hector Martin 2023-03-28  172  	disable_irq_nosync(mbox->irq_send_empty);
8b654b5034baba0 Hector Martin 2023-03-28  173  	complete(&mbox->tx_empty);
8b654b5034baba0 Hector Martin 2023-03-28  174  	spin_unlock(&mbox->tx_lock);
8b654b5034baba0 Hector Martin 2023-03-28  175  
8b654b5034baba0 Hector Martin 2023-03-28  176  	return IRQ_HANDLED;
8b654b5034baba0 Hector Martin 2023-03-28  177  }
8b654b5034baba0 Hector Martin 2023-03-28  178  
8b654b5034baba0 Hector Martin 2023-03-28  179  static int apple_mbox_poll_locked(struct apple_mbox *mbox)
8b654b5034baba0 Hector Martin 2023-03-28  180  {
8b654b5034baba0 Hector Martin 2023-03-28  181  	struct apple_mbox_msg msg;
8b654b5034baba0 Hector Martin 2023-03-28  182  	int ret = 0;
8b654b5034baba0 Hector Martin 2023-03-28  183  
8b654b5034baba0 Hector Martin 2023-03-28  184  	u32 mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->i2a_control);
8b654b5034baba0 Hector Martin 2023-03-28  185  
8b654b5034baba0 Hector Martin 2023-03-28  186  	while (!(mbox_ctrl & mbox->hw->control_empty)) {
8b654b5034baba0 Hector Martin 2023-03-28  187  		msg.msg0 = readq_relaxed(mbox->regs + mbox->hw->i2a_recv0);
8b654b5034baba0 Hector Martin 2023-03-28 @188  		msg.msg1 = FIELD_GET(
8b654b5034baba0 Hector Martin 2023-03-28  189  			APPLE_MBOX_MSG1_MSG,
8b654b5034baba0 Hector Martin 2023-03-28  190  			readq_relaxed(mbox->regs + mbox->hw->i2a_recv1));
8b654b5034baba0 Hector Martin 2023-03-28  191  
8b654b5034baba0 Hector Martin 2023-03-28  192  		mbox->rx(mbox, msg, mbox->cookie);
8b654b5034baba0 Hector Martin 2023-03-28  193  		ret++;
8b654b5034baba0 Hector Martin 2023-03-28  194  		mbox_ctrl = readl_relaxed(mbox->regs + mbox->hw->i2a_control);
8b654b5034baba0 Hector Martin 2023-03-28  195  	}
8b654b5034baba0 Hector Martin 2023-03-28  196  
8b654b5034baba0 Hector Martin 2023-03-28  197  	/*
8b654b5034baba0 Hector Martin 2023-03-28  198  	 * The interrupt will keep firing even if there are no more messages
8b654b5034baba0 Hector Martin 2023-03-28  199  	 * unless we also acknowledge it at the mailbox level here.
8b654b5034baba0 Hector Martin 2023-03-28  200  	 * There's no race if a message comes in between the check in the while
8b654b5034baba0 Hector Martin 2023-03-28  201  	 * loop above and the ack below: If a new messages arrives inbetween
8b654b5034baba0 Hector Martin 2023-03-28  202  	 * those two the interrupt will just fire again immediately after the
8b654b5034baba0 Hector Martin 2023-03-28  203  	 * ack since it's level triggered.
8b654b5034baba0 Hector Martin 2023-03-28  204  	 */
8b654b5034baba0 Hector Martin 2023-03-28  205  	if (mbox->hw->has_irq_controls) {
8b654b5034baba0 Hector Martin 2023-03-28  206  		writel_relaxed(mbox->hw->irq_bit_recv_not_empty,
8b654b5034baba0 Hector Martin 2023-03-28  207  			       mbox->regs + mbox->hw->irq_ack);
8b654b5034baba0 Hector Martin 2023-03-28  208  	}
8b654b5034baba0 Hector Martin 2023-03-28  209  
8b654b5034baba0 Hector Martin 2023-03-28  210  	return ret;
8b654b5034baba0 Hector Martin 2023-03-28  211  }
8b654b5034baba0 Hector Martin 2023-03-28  212
  

Patch

diff --git a/drivers/soc/apple/Kconfig b/drivers/soc/apple/Kconfig
index d0e29bbd8c6f..c5203c388bf4 100644
--- a/drivers/soc/apple/Kconfig
+++ b/drivers/soc/apple/Kconfig
@@ -17,11 +17,10 @@  config APPLE_PMGR_PWRSTATE
 	  controls for SoC devices. This driver manages them through the
 	  generic power domain framework, and also provides reset support.
 
-config APPLE_MBOX
+config APPLE_MAILBOX
 	tristate "Apple SoC mailboxes"
 	depends on PM
 	depends on ARCH_APPLE || (64BIT && COMPILE_TEST)
-	depends on !APPLE_MAILBOX
 	default ARCH_APPLE
 	help
 	  Apple SoCs have various co-processors required for certain
@@ -33,7 +32,7 @@  config APPLE_MBOX
 
 config APPLE_RTKIT
 	tristate "Apple RTKit co-processor IPC protocol"
-	depends on APPLE_MBOX
+	depends on APPLE_MAILBOX
 	depends on ARCH_APPLE || COMPILE_TEST
 	default ARCH_APPLE
 	help
diff --git a/drivers/soc/apple/Makefile b/drivers/soc/apple/Makefile
index e52edf6a73da..20feee6f3943 100644
--- a/drivers/soc/apple/Makefile
+++ b/drivers/soc/apple/Makefile
@@ -1,7 +1,7 @@ 
 # SPDX-License-Identifier: GPL-2.0-only
 obj-$(CONFIG_APPLE_PMGR_PWRSTATE)	+= apple-pmgr-pwrstate.o
 
-obj-$(CONFIG_APPLE_MBOX) += apple-mailbox.o
+obj-$(CONFIG_APPLE_MAILBOX) += apple-mailbox.o
 apple-mailbox-y = mailbox.o
 
 obj-$(CONFIG_APPLE_RTKIT) += apple-rtkit.o