All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: Hans de Goede <hansg@kernel.org>
Cc: Israel Cepeda <israel.a.cepeda.lopez@intel.com>,
	Wolfram Sang <wsa@kernel.org>, Andi Shyti <andi.shyti@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>,
	Linus Walleij <linus.walleij@linaro.org>,
	Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>,
	Richard Hughes <rhughes@redhat.com>,
	linux-i2c@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-gpio@vger.kernel.org
Subject: Re: [PATCH 3/3] i2c: Add Intel USBIO I2C driver
Date: Sat, 6 Sep 2025 00:28:21 +0300	[thread overview]
Message-ID: <aLtV9THflQYXmSlK@kekkonen.localdomain> (raw)
In-Reply-To: <7321f79e-6004-4bca-85bb-a10f0636deb5@kernel.org>

Hi Hans,

On Mon, Aug 11, 2025 at 11:49:29AM +0200, Hans de Goede wrote:
> Hi Sakari,
> 
> Thank you for your review, note this
> is not a full reply.
> 
> On 11-Aug-25 9:16 AM, Sakari Ailus wrote:
> 
> <snip>
> 
> >> +static int usbio_i2c_probe(struct auxiliary_device *adev,
> >> +		const struct auxiliary_device_id *adev_id)
> >> +{
> >> +	struct usbio_i2c_bus_desc *i2c_desc;
> >> +	struct device *dev = &adev->dev;
> >> +	u8 dummy_read_buf;
> >> +	struct i2c_msg dummy_read = {
> >> +		.addr = 0x08,
> >> +		.flags = I2C_M_RD,
> >> +		.len = 1,
> >> +		.buf = &dummy_read_buf,
> >> +	};
> >> +	struct usbio_i2c *i2c;
> >> +	u32 max_speed;
> >> +	int ret;
> >> +
> >> +	i2c_desc = dev_get_platdata(dev);
> >> +	if (!i2c_desc)
> >> +		return -EINVAL;
> >> +
> >> +	/* Some USBIO chips have caps set to 0, but all chips can do 400KHz */
> >> +	if (!i2c_desc->caps)
> >> +		max_speed = I2C_MAX_FAST_MODE_FREQ;
> >> +	else
> >> +		max_speed = usbio_i2c_speeds[i2c_desc->caps & USBIO_I2C_BUS_MODE_CAP_MASK];
> >> +
> >> +	i2c = devm_kzalloc(dev, sizeof(*i2c), GFP_KERNEL);
> >> +	if (!i2c)
> >> +		return -ENOMEM;
> > 
> > Same comment on devm memory allocation than on the GPIO driver: I think you
> > need to use the release callback of struct device here.
> 
> And more or less the same reply, i2c_del_adapter() ensures
> all i2c_clients on the adapters bus are unregistered so
> it guarantees that after i2c_del_adapter() none of the adapter
> functions will get called.
> 
> So freeing the struct containing the adapter after remove()
> has run is fine.
> 
> I know that the media subsystem does not handle v4l2-subdevs
> (which the i2c-clients are) going away very well.
> 
> Richard mentioned that after a fw-update the usbio chip will
> not come back until a reboot. And I've noticed that after crashing
> the usbio fw it will not come back until a full power-cycle.

Ouch. I guess this also depends on the implementation. Some presumably
behave better and with firmware upgrades the behaviour could (at least
theoretically) change as well.

> 
> So we do not need to worry about somehow slotting new i2c-clients
> into the media-controller graph after a disconnect + reconnect
> since the reconnect will never happen during the current boot.

Ack.

> 
> We do need to somehow make sure that trying to access the v4l2-subdev
> after disconnect does not cause oopses or worse.
> 
> We will likely need to somehow keep the memory for the v4l2-subdev
> around and add something like a disconnected / dead flag to it.

For this exact reason. V4L2 sub-devices can't be reliably removed for the
time being. (The same goes for the Media device.) I presume the sub-devices
will remain, but just won't actually be functional in this case?

-- 
Kind regards,

Sakari Ailus

  reply	other threads:[~2025-09-05 21:28 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-09 10:23 [PATCH 0/3] usb/gpio/i2c: Add Intel USBIO USB IO-expander drivers Hans de Goede
2025-08-09 10:23 ` [PATCH 1/3] usb: misc: Add Intel USBIO bridge driver Hans de Goede
2025-08-09 14:28   ` Greg Kroah-Hartman
2025-08-09 15:05     ` Hans de Goede
2025-08-09 15:29   ` kernel test robot
2025-08-10  0:19   ` kernel test robot
2025-08-11  6:51   ` Sakari Ailus
2025-08-11  7:12     ` Greg Kroah-Hartman
2025-08-11  7:29       ` Sakari Ailus
2025-08-11  8:31         ` Greg Kroah-Hartman
2025-08-11  9:23           ` Sakari Ailus
2025-08-11  9:29             ` Hans de Goede
2025-08-11  9:13     ` Hans de Goede
2025-08-11  9:32       ` Sakari Ailus
2025-09-05 18:36     ` Hans de Goede
2025-08-09 10:23 ` [PATCH 2/3] gpio: Add Intel USBIO GPIO driver Hans de Goede
2025-08-11  7:07   ` Sakari Ailus
2025-08-11  9:23     ` Hans de Goede
2025-08-11  9:43       ` Sakari Ailus
2025-08-09 10:23 ` [PATCH 3/3] i2c: Add Intel USBIO I2C driver Hans de Goede
2025-08-11  7:16   ` Sakari Ailus
2025-08-11  9:49     ` Hans de Goede
2025-09-05 21:28       ` Sakari Ailus [this message]
2025-09-05 18:50     ` Hans de Goede
2025-09-05 21:34       ` Sakari Ailus

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=aLtV9THflQYXmSlK@kekkonen.localdomain \
    --to=sakari.ailus@linux.intel.com \
    --cc=andi.shyti@kernel.org \
    --cc=brgl@bgdev.pl \
    --cc=gregkh@linuxfoundation.org \
    --cc=hansg@kernel.org \
    --cc=israel.a.cepeda.lopez@intel.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=rhughes@redhat.com \
    --cc=stanislaw.gruszka@linux.intel.com \
    --cc=wsa@kernel.org \
    /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.