From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: "Ronald Tschalär" <ronald@innovation.ch>
Cc: Jiri Kosina <jikos@kernel.org>,
Benjamin Tissoires <benjamin.tissoires@redhat.com>,
Jonathan Cameron <jic23@kernel.org>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
"Lars-Peter Clausen" <lars@metafoo.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
<linux-kernel@vger.kernel.org>, <linux-input@vger.kernel.org>,
<linux-iio@vger.kernel.org>
Subject: Re: [PATCH 4/5] HID: apple-ibridge: Add Apple iBridge HID driver for T1 chip.
Date: Sun, 28 Feb 2021 15:02:39 +0000 [thread overview]
Message-ID: <20210228150239.00007d34@Huawei.com> (raw)
In-Reply-To: <20210228012643.69944-5-ronald@innovation.ch>
On Sat, 27 Feb 2021 17:26:42 -0800
Ronald Tschalär <ronald@innovation.ch> wrote:
> The iBridge device provides access to several devices, including:
> - the Touch Bar
> - the iSight webcam
> - the light sensor
> - the fingerprint sensor
>
> This driver provides the core support for managing the iBridge device
> and the access to the underlying devices. In particular, the
> functionality for the touch bar and light sensor is exposed via USB HID
> interfaces, and on devices with the T1 chip one of the HID devices is
> used for both functions. So this driver creates virtual HID devices, one
> per top-level report collection on each HID device (for a total of 3
> virtual HID devices). The sub-drivers then bind to these virtual HID
> devices.
>
> This way the Touch Bar and ALS drivers can be kept in their own modules,
> while at the same time making them look very much like as if they were
> connected to the real HID devices. And those drivers then work (mostly)
> without further changes on MacBooks with the T2 chip that don't need
> this driver.
>
> Signed-off-by: Ronald Tschalär <ronald@innovation.ch>
Hi Ronald.
This is far from my specialty but mostly looks sensible to me.
Just one thing stood out that I couldn't understand. See below.
Jonathan
> new file mode 100644
> index 0000000000000..5f2b71c199746
> --- /dev/null
> +++ b/drivers/hid/apple-ibridge.c
> @@ -0,0 +1,682 @@
...
> +
> +#ifdef CONFIG_PM
> +/**
> + * appleib_forward_int_op() - Forward a hid-driver callback to all drivers on
> + * all virtual HID devices attached to the given real HID device.
> + * @hdev the real hid-device
> + * @forward a function that calls the callback on the given driver
> + * @args arguments for the forward function
> + *
> + * This is for callbacks that return a status as an int.
> + *
> + * Returns: 0 on success, or the first error returned by the @forward function.
> + */
> +static int appleib_forward_int_op(struct hid_device *hdev,
> + int (*forward)(struct hid_driver *,
> + struct hid_device *, void *),
> + void *args)
> +{
> + struct appleib_hid_dev_info *hdev_info = hid_get_drvdata(hdev);
> + struct hid_device *sub_hdev;
> + int rc = 0;
> + int i;
> +
> + for (i = 0; i < ARRAY_SIZE(hdev_info->sub_hdevs); i++) {
> + sub_hdev = hdev_info->sub_hdevs[i];
> + if (sub_hdev->driver) {
> + rc = forward(sub_hdev->driver, sub_hdev, args);
> + if (rc)
> + break;
return rc; here would be cleaner.
> + }
> +
> + break;
This is unusual. It's a for loop but as far as I can see only first iteration
can ever run as we exit the loop at this break if we haven't done so earlier.
What is the intent here?
> + }
> +
> + return rc;
> +}
next prev parent reply other threads:[~2021-02-28 15:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-28 1:26 [PATCH 0/5] Touch Bar and ALS support for MacBook Pro's Ronald Tschalär
2021-02-28 1:26 ` [PATCH 1/5] HID: Recognize sensors with application collections too Ronald Tschalär
2021-02-28 1:26 ` [PATCH 2/5] iio: hid-sensor-als: Support change sensitivity in illuminance too Ronald Tschalär
2021-02-28 14:45 ` Jonathan Cameron
2021-03-01 17:39 ` Srinivas Pandruvada
2021-02-28 1:26 ` [PATCH 3/5] HID: core: Export some report item parsing functions Ronald Tschalär
2021-03-01 14:18 ` Andy Shevchenko
2021-03-01 14:27 ` Benjamin Tissoires
2021-02-28 1:26 ` [PATCH 4/5] HID: apple-ibridge: Add Apple iBridge HID driver for T1 chip Ronald Tschalär
2021-02-28 15:02 ` Jonathan Cameron [this message]
2021-03-01 0:04 ` Life is hard, and then you die
2021-03-01 14:12 ` Andy Shevchenko
2021-02-28 1:26 ` [PATCH 5/5] HID: apple-touchbar - Add driver for the Touch Bar on MacBook Pro's Ronald Tschalär
2021-02-28 3:52 ` kernel test robot
2021-02-28 3:52 ` kernel test robot
2021-02-28 4:16 ` kernel test robot
2021-02-28 4:16 ` kernel test robot
2021-02-28 7:37 ` kernel test robot
2021-02-28 7:37 ` kernel test robot
2021-02-28 14:38 ` [PATCH 0/5] Touch Bar and ALS support for " Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210228150239.00007d34@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=benjamin.tissoires@redhat.com \
--cc=jic23@kernel.org \
--cc=jikos@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pmeerw@pmeerw.net \
--cc=ronald@innovation.ch \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.