[PATCH v3 2/2] mailbox: apple: Add driver for Apple mailboxes

Sven Peter sven at svenpeter.dev
Sun Oct 17 05:11:21 PDT 2021


Hi,

On Sun, Oct 17, 2021, at 14:02, Alyssa Rosenzweig wrote:
>> Apple SoCs such as the M1 come with various co-processors. Mailboxes
>> are used to communicate with those. This driver adds support for
>> two variants of those mailboxes.
>> 
>> Reviewed-by: Alyssa Rosenzweig <alyssa at rosenzweig.io>
>> Signed-off-by: Sven Peter <sven at svenpeter.dev>
>
> In the future, Reviewed-by tags should be dropped after making major
> changes to a patch.

I don't think there were any major changes since v2, but sure, I'll drop your
tag in the future. All your comments below already apply to v2.

>
>> +		writel_relaxed(apple_mbox->hw->irq_bit_recv_not_empty |
>> +				       apple_mbox->hw->irq_bit_send_empty,
>> +			       apple_mbox->regs + apple_mbox->hw->irq_enable);
>
> Nit: weird wrapping, much easier to read as:
>
> +		writel_relaxed(apple_mbox->hw->irq_bit_recv_not_empty |
> +			       apple_mbox->hw->irq_bit_send_empty,
> +			       apple_mbox->regs + apple_mbox->hw->irq_enable);
>

This is just what clang-format does and I'd rather keep it this way.
Note that the first two lines are the first argument combined with an OR.

>> +static const struct apple_mbox_hw apple_mbox_asc_hw = {
>> +	.control_full = APPLE_ASC_MBOX_CONTROL_FULL,
>> +	.control_empty = APPLE_ASC_MBOX_CONTROL_EMPTY,
>> +
>> +	.a2i_control = APPLE_ASC_MBOX_A2I_CONTROL,
>> +	.a2i_send0 = APPLE_ASC_MBOX_A2I_SEND0,
>> +	.a2i_send1 = APPLE_ASC_MBOX_A2I_SEND1,
>> +
>> +	.i2a_control = APPLE_ASC_MBOX_I2A_CONTROL,
>> +	.i2a_recv0 = APPLE_ASC_MBOX_I2A_RECV0,
>> +	.i2a_recv1 = APPLE_ASC_MBOX_I2A_RECV1,
>> +
>> +	.has_irq_controls = false,
>> +};
>
> Nit: consider dropping the `has_irq_controls = false` assignment.
> Clearly there are none, or you'd have to fill out the irq_* fields too.

I'd rather keep it explicit as false here to make the intent clear.

>
>> +static const struct of_device_id apple_mbox_of_match[] = {
>> +	{ .compatible = "apple,t8103-asc-mailbox", .data = &apple_mbox_asc_hw },
>> +	{ .compatible = "apple,t8103-m3-mailbox", .data = &apple_mbox_m3_hw },
>> +	{}
>> +};
>
> No generic compatibles? I assume this driver hasn't changed much in
> recent iPhones, and hopefully it won't change much in M1X...

Then we can always have apple,tXXX-asc-mailbox, apple,t8103-asc-mailbox in the
device tree. From what I can tell this specific mailbox has only appeared in
this SoC generation.

>
>> +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
>> +/*
>> + * Apple mailbox message format
>> + *
>> + * Copyright (C) 2021 The Asahi Linux Contributors
>> + */
>> +
>> +#ifndef _LINUX_APPLE_MAILBOX_H_
>> +#define _LINUX_APPLE_MAILBOX_H_
>> +
>> +#include <linux/types.h>
>> +
>> +struct apple_mbox_msg {
>> +	u64 msg0;
>> +	u32 msg1;
>> +};
>> +
>> +#endif
>
> Given this file lacks the context of the driver, and the questions
> raised in v2 review, it might be beneficial to add a quick comment to
> apple_mbox_msg explaiing that no, really, this is a 96-bit message.

I don't think that's necessary but it doesn't hurt either I guess.


Sven



More information about the linux-arm-kernel mailing list