All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Scally <djrscally@gmail.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	linux-media@vger.kernel.org, devel@acpica.org, rjw@rjwysocki.net,
	lenb@kernel.org, gregkh@linuxfoundation.org, yong.zhi@intel.com,
	sakari.ailus@linux.intel.com, bingbu.cao@intel.com,
	tian.shu.qiu@intel.com, mchehab@kernel.org,
	robert.moore@intel.com, erik.kaneda@intel.com, pmladek@suse.com,
	rostedt@goodmis.org, sergey.senozhatsky@gmail.com,
	linux@rasmusvillemoes.dk,
	laurent.pinchart+renesas@ideasonboard.com,
	jacopo+renesas@jmondi.org,
	kieran.bingham+renesas@ideasonboard.com,
	linus.walleij@linaro.org, heikki.krogerus@linux.intel.com,
	kitakar@gmail.com, jorhand@linux.microsoft.com
Subject: Re: [PATCH v2 12/12] ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver
Date: Sat, 19 Dec 2020 00:22:44 +0000	[thread overview]
Message-ID: <e2b4c35f-5020-c332-d97a-8ba25be0e55e@gmail.com> (raw)
In-Reply-To: <20201218211732.GE4077@smile.fi.intel.com>

Hi Andy, thanks for the comments

On 18/12/2020 21:17, Andy Shevchenko wrote:
> On Thu, Dec 17, 2020 at 11:43:37PM +0000, Daniel Scally wrote:
>> Currently on platforms designed for Windows, connections between CIO2 and
>> sensors are not properly defined in DSDT. This patch extends the ipu3-cio2
>> driver to compensate by building software_node connections, parsing the
>> connection properties from the sensor's SSDB buffer.
> 
> ...
> 
>> +	sensor->ep_properties[0] = PROPERTY_ENTRY_U32(sensor->prop_names.bus_type, 4);
> 
> Does 4 has any meaning that can be described by #define ?

It's V4L2_FWNODE_BUS_TYPE_CSI2_DPHY:

https://elixir.bootlin.com/linux/latest/source/drivers/media/v4l2-core/v4l2-fwnode.c#L36

That enum's not in an accessible header, but I can define it in this
module's header

>> +static void cio2_bridge_init_swnode_names(struct cio2_sensor *sensor)
>> +{
>> +	snprintf(sensor->node_names.remote_port, 7, "port@%u", sensor->ssdb.link);
> 
> Hmm... I think you should use actual size of remote_port instead of 7.

Yes ok


>> +	strscpy(sensor->node_names.port, "port@0", sizeof(sensor->node_names.port));
> 
> Yeah, I would rather like to see one point of the definition of the format.
> If it's the same as per OF case, perhaps some generic header (like fwnode.h?) is good for this?
> In this case the 5 in one of the previous patches Also can be derived from the format.

Okedokey. It is indeed intended to match OF and ACPI case, both of which
mandate that format (though only ACPI's functions seem to enforce it).
fwnode.h seems as good a place as any to me, though I'm not sure there's
anywhere in the driver code for OF or ACPI that would actually use it at
the moment.

>> +	strscpy(sensor->node_names.endpoint, "endpoint@0", sizeof(sensor->node_names.endpoint));
> 
> Similar here.
> 
>> +}
> 
> ...
> 
>> +	for (i = 0; i < ARRAY_SIZE(cio2_supported_sensors); i++) {
>> +		const struct cio2_sensor_config *cfg = &cio2_supported_sensors[i];
>> +
>> +		for_each_acpi_dev_match(adev, cfg->hid, NULL, -1) {
> 
>> +			if (bridge->n_sensors >= CIO2_NUM_PORTS) {
>> +				dev_warn(&cio2->dev, "Exceeded available CIO2 ports\n");
> 
>> +				/* overflow i so outer loop ceases */
>> +				i = ARRAY_SIZE(cio2_supported_sensors);
>> +				break;
> 
> Why not to create a new label below and assign ret here with probably comment
> why it's not an error?

Sure, I can do that, but since it wouldn't need any cleanup I could also
just return 0 here as Laurent suggest (but with a comment explaining why
that's ok as you say) - do you have a preference?

>> +			}
> 
> ...
> 
>> +			ret = cio2_bridge_read_acpi_buffer(adev, "SSDB",
>> +							   &sensor->ssdb,
>> +							   sizeof(sensor->ssdb));
>> +			if (ret < 0)
> 
> if (ret) (because positive case can be returned just by next conditional).

cio2_bridge_read_acpi_buffer() returns the buffer length on success at
the moment, but I can change it to return 0 and have this be if (ret)

>> +				goto err_put_adev;
>> +
>> +			if (sensor->ssdb.lanes > 4) {
>> +				dev_err(&adev->dev,
>> +					"Number of lanes in SSDB is invalid\n");
>> +				goto err_put_adev;
>> +			}
> 
> ...
> 
>> +			dev_info(&cio2->dev, "Found supported sensor %s\n",
>> +				 acpi_dev_name(adev));
>> +
>> +			bridge->n_sensors++;
>> +		}
>> +	}
> 
> 	return 0;

Okedokey

> 
>> +err_free_swnodes:
>> +	software_node_unregister_nodes(sensor->swnodes);
>> +err_put_adev:
>> +	acpi_dev_put(sensor->adev);
> 
> err_out:

Depends on question above I think

>> +	return ret;
>> +}
> 
> ...
> 
>> +enum cio2_sensor_swnodes {
>> +	SWNODE_SENSOR_HID,
>> +	SWNODE_SENSOR_PORT,
>> +	SWNODE_SENSOR_ENDPOINT,
>> +	SWNODE_CIO2_PORT,
>> +	SWNODE_CIO2_ENDPOINT,
> 
>> +	NR_OF_SENSOR_SWNODES
> 
> Perhaps same namespace, i.e.
> 
> 	SWNODE_SENSOR_NR

Yep, will do.

Thanks
Dan


  reply	other threads:[~2020-12-19  0:23 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-17 23:43 [PATCH v2 00/12] Add functionality to ipu3-cio2 driver allowing software_node connections to sensors on platforms designed for Windows Daniel Scally
2020-12-17 23:43 ` [PATCH v2 01/12] software_node: Fix refcounts in software_node_get_next_child() Daniel Scally
2020-12-21  9:08   ` Sakari Ailus
2020-12-17 23:43 ` [PATCH v2 02/12] property: Return true in fwnode_device_is_available for NULL ops Daniel Scally
2020-12-21  9:10   ` Sakari Ailus
2020-12-17 23:43 ` [PATCH v2 03/12] property: Call fwnode_graph_get_endpoint_by_id() for fwnode->secondary Daniel Scally
2020-12-17 23:43 ` [PATCH v2 04/12] software_node: Enforce parent before child ordering of nodes arrays Daniel Scally
2020-12-18 16:02   ` Laurent Pinchart
2020-12-18 22:19     ` Daniel Scally
2020-12-18 20:29   ` Andy Shevchenko
2020-12-19 23:33     ` Daniel Scally
2020-12-17 23:43 ` [PATCH v2 05/12] software_node: unregister software_nodes in reverse order Daniel Scally
2020-12-18 20:31   ` Andy Shevchenko
2020-12-21  9:21   ` Sakari Ailus
2020-12-21 11:26     ` Andy Shevchenko
2020-12-23 22:24       ` Daniel Scally
2020-12-17 23:43 ` [PATCH v2 06/12] software_node: Add support for fwnode_graph*() family of functions Daniel Scally
2020-12-18 16:22   ` Laurent Pinchart
2020-12-18 22:13     ` Daniel Scally
2020-12-18 23:46       ` Daniel Scally
2020-12-18 20:37   ` Andy Shevchenko
2020-12-18 22:26     ` Daniel Scally
2020-12-21  9:34   ` Sakari Ailus
2020-12-21 10:01     ` Daniel Scally
2020-12-17 23:43 ` [PATCH v2 07/12] lib/test_printf.c: Use helper function to unwind array of software_nodes Daniel Scally
2020-12-17 23:43 ` [PATCH v2 08/12] ipu3-cio2: Add T: entry to MAINTAINERS Daniel Scally
2020-12-17 23:43 ` [PATCH v2 09/12] ipu3-cio2: Rename ipu3-cio2.c Daniel Scally
2020-12-17 23:43 ` [PATCH v2 10/12] media: v4l2-core: v4l2-async: Check sd->fwnode->secondary in match_fwnode() Daniel Scally
2020-12-17 23:43 ` [PATCH v2 11/12] acpi: Add acpi_dev_get_next_match_dev() and helper macro Daniel Scally
2020-12-18 20:42   ` Andy Shevchenko
2020-12-21  9:47   ` Sakari Ailus
2020-12-17 23:43 ` [PATCH v2 12/12] ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver Daniel Scally
2020-12-18 16:53   ` Laurent Pinchart
2020-12-18 23:57     ` Daniel Scally
2020-12-19  0:39       ` Laurent Pinchart
2020-12-19 23:24         ` Daniel Scally
2020-12-18 21:17   ` Andy Shevchenko
2020-12-19  0:22     ` Daniel Scally [this message]
2020-12-19 18:52       ` Andy Shevchenko
2020-12-19 18:52         ` [Devel] " Andy Shevchenko
2020-12-19 23:48         ` Daniel Scally
2020-12-21 10:21           ` Sakari Ailus
2020-12-21 10:52             ` Daniel Scally
2020-12-21 10:57               ` 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=e2b4c35f-5020-c332-d97a-8ba25be0e55e@gmail.com \
    --to=djrscally@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bingbu.cao@intel.com \
    --cc=devel@acpica.org \
    --cc=erik.kaneda@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jacopo+renesas@jmondi.org \
    --cc=jorhand@linux.microsoft.com \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=kitakar@gmail.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=lenb@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=mchehab@kernel.org \
    --cc=pmladek@suse.com \
    --cc=rjw@rjwysocki.net \
    --cc=robert.moore@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tian.shu.qiu@intel.com \
    --cc=yong.zhi@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.