Re: [PATCH v5 05/13] coresight: Rename connection members to make the direction explicit
From: Mike Leach
Date: Wed Apr 12 2023 - 09:33:06 EST
On Tue, 4 Apr 2023 at 16:52, James Clark <james.clark@xxxxxxx> wrote:
>
> When input connections are added they will use the same connection
> object as the output so parent and child could be misinterpreted. Making
> the direction unambiguous in the names should improve readability.
>
> Signed-off-by: James Clark <james.clark@xxxxxxx>
> ---
> drivers/hwtracing/coresight/coresight-core.c | 51 +++++++++----------
> .../hwtracing/coresight/coresight-platform.c | 30 +++++------
> drivers/hwtracing/coresight/coresight-sysfs.c | 10 ++--
> .../hwtracing/coresight/coresight-tmc-etr.c | 2 +-
> include/linux/coresight.h | 18 +++----
> 5 files changed, 55 insertions(+), 56 deletions(-)
>
> diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c
> index 0f6712a6fba3..f3dc320b374c 100644
> --- a/drivers/hwtracing/coresight/coresight-core.c
> +++ b/drivers/hwtracing/coresight/coresight-core.c
> @@ -120,8 +120,8 @@ static int coresight_find_link_inport(struct coresight_device *csdev,
>
> for (i = 0; i < parent->pdata->nr_outconns; i++) {
> conn = &parent->pdata->out_conns[i];
> - if (conn->child_dev == csdev)
> - return conn->child_port;
> + if (conn->dest_dev == csdev)
> + return conn->dest_port;
> }
>
> dev_err(&csdev->dev, "couldn't find inport, parent: %s, child: %s\n",
> @@ -138,8 +138,8 @@ static int coresight_find_link_outport(struct coresight_device *csdev,
>
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> conn = &csdev->pdata->out_conns[i];
> - if (conn->child_dev == child)
> - return conn->outport;
> + if (conn->dest_dev == child)
> + return conn->src_port;
> }
>
> dev_err(&csdev->dev, "couldn't find outport, parent: %s, child: %s\n",
> @@ -606,7 +606,7 @@ coresight_find_enabled_sink(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_device *child_dev;
>
> - child_dev = csdev->pdata->out_conns[i].child_dev;
> + child_dev = csdev->pdata->out_conns[i].dest_dev;
> if (child_dev)
> sink = coresight_find_enabled_sink(child_dev);
> if (sink)
> @@ -722,7 +722,7 @@ static int coresight_grab_device(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_device *child;
>
> - child = csdev->pdata->out_conns[i].child_dev;
> + child = csdev->pdata->out_conns[i].dest_dev;
> if (child && child->type == CORESIGHT_DEV_TYPE_HELPER)
> if (!coresight_get_ref(child))
> goto err;
> @@ -733,7 +733,7 @@ static int coresight_grab_device(struct coresight_device *csdev)
> for (i--; i >= 0; i--) {
> struct coresight_device *child;
>
> - child = csdev->pdata->out_conns[i].child_dev;
> + child = csdev->pdata->out_conns[i].dest_dev;
> if (child && child->type == CORESIGHT_DEV_TYPE_HELPER)
> coresight_put_ref(child);
> }
> @@ -752,7 +752,7 @@ static void coresight_drop_device(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_device *child;
>
> - child = csdev->pdata->out_conns[i].child_dev;
> + child = csdev->pdata->out_conns[i].dest_dev;
> if (child && child->type == CORESIGHT_DEV_TYPE_HELPER)
> coresight_put_ref(child);
> }
> @@ -794,7 +794,7 @@ static int _coresight_build_path(struct coresight_device *csdev,
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_device *child_dev;
>
> - child_dev = csdev->pdata->out_conns[i].child_dev;
> + child_dev = csdev->pdata->out_conns[i].dest_dev;
> if (child_dev &&
> _coresight_build_path(child_dev, sink, path) == 0) {
> found = true;
> @@ -964,7 +964,7 @@ coresight_find_sink(struct coresight_device *csdev, int *depth)
> struct coresight_device *child_dev, *sink = NULL;
> int child_depth = curr_depth;
>
> - child_dev = csdev->pdata->out_conns[i].child_dev;
> + child_dev = csdev->pdata->out_conns[i].dest_dev;
> if (child_dev)
> sink = coresight_find_sink(child_dev, &child_depth);
>
> @@ -1337,12 +1337,12 @@ static int coresight_orphan_match(struct device *dev, void *data)
> conn = &i_csdev->pdata->out_conns[i];
>
> /* Skip the port if FW doesn't describe it */
> - if (!conn->child_fwnode)
> + if (!conn->dest_fwnode)
> continue;
> /* We have found at least one orphan connection */
> - if (conn->child_dev == NULL) {
> + if (conn->dest_dev == NULL) {
> /* Does it match this newly added device? */
> - if (conn->child_fwnode == csdev->dev.fwnode) {
> + if (conn->dest_fwnode == csdev->dev.fwnode) {
> ret = coresight_make_links(i_csdev,
> conn, csdev);
> if (ret)
> @@ -1377,13 +1377,12 @@ static int coresight_fixup_device_conns(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_connection *conn = &csdev->pdata->out_conns[i];
>
> - if (!conn->child_fwnode)
> + if (!conn->dest_fwnode)
> continue;
> - conn->child_dev =
> - coresight_find_csdev_by_fwnode(conn->child_fwnode);
> - if (conn->child_dev && conn->child_dev->has_conns_grp) {
> - ret = coresight_make_links(csdev, conn,
> - conn->child_dev);
> + conn->dest_dev =
> + coresight_find_csdev_by_fwnode(conn->dest_fwnode);
> + if (conn->dest_dev && conn->dest_dev->has_conns_grp) {
> + ret = coresight_make_links(csdev, conn, conn->dest_dev);
> if (ret)
> break;
> } else {
> @@ -1414,14 +1413,14 @@ static int coresight_remove_match(struct device *dev, void *data)
> for (i = 0; i < iterator->pdata->nr_outconns; i++) {
> conn = &iterator->pdata->out_conns[i];
>
> - if (conn->child_dev == NULL || conn->child_fwnode == NULL)
> + if (conn->dest_dev == NULL || conn->dest_fwnode == NULL)
> continue;
>
> - if (csdev->dev.fwnode == conn->child_fwnode) {
> + if (csdev->dev.fwnode == conn->dest_fwnode) {
> iterator->orphan = true;
> coresight_remove_links(iterator, conn);
>
> - conn->child_dev = NULL;
> + conn->dest_dev = NULL;
> /* No need to continue */
> break;
> }
> @@ -1547,15 +1546,15 @@ void coresight_release_platform_data(struct coresight_device *csdev,
>
> for (i = 0; i < pdata->nr_outconns; i++) {
> /* If we have made the links, remove them now */
> - if (csdev && conns[i].child_dev)
> + if (csdev && conns[i].dest_dev)
> coresight_remove_links(csdev, &conns[i]);
> /*
> * Drop the refcount and clear the handle as this device
> * is going away
> */
> - if (conns[i].child_fwnode) {
> - fwnode_handle_put(conns[i].child_fwnode);
> - conns[i].child_fwnode = NULL;
> + if (conns[i].dest_fwnode) {
> + fwnode_handle_put(conns[i].dest_fwnode);
> + conns[i].dest_fwnode = NULL;
> }
> }
> if (csdev)
> diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c
> index ed865e0621a9..566cc99a2c34 100644
> --- a/drivers/hwtracing/coresight/coresight-platform.c
> +++ b/drivers/hwtracing/coresight/coresight-platform.c
> @@ -252,13 +252,13 @@ static int of_coresight_parse_endpoint(struct device *dev,
> }
>
> conn = &pdata->out_conns[endpoint.port];
> - if (conn->child_fwnode) {
> + if (conn->dest_fwnode) {
> dev_warn(dev, "Duplicate output port %d\n",
> endpoint.port);
> ret = -EINVAL;
> break;
> }
> - conn->outport = endpoint.port;
> + conn->src_port = endpoint.port;
> /*
> * Hold the refcount to the target device. This could be
> * released via:
> @@ -267,8 +267,8 @@ static int of_coresight_parse_endpoint(struct device *dev,
> * 2) While removing the target device via
> * coresight_remove_match()
> */
> - conn->child_fwnode = fwnode_handle_get(rdev_fwnode);
> - conn->child_port = rendpoint.port;
> + conn->dest_fwnode = fwnode_handle_get(rdev_fwnode);
> + conn->dest_port = rendpoint.port;
> /* Connection record updated */
> } while (0);
>
> @@ -649,8 +649,8 @@ static int acpi_coresight_parse_link(struct acpi_device *adev,
>
> dir = fields[3].integer.value;
> if (dir == ACPI_CORESIGHT_LINK_MASTER) {
> - conn->outport = fields[0].integer.value;
> - conn->child_port = fields[1].integer.value;
> + conn->src_port = fields[0].integer.value;
> + conn->dest_port = fields[1].integer.value;
> rdev = coresight_find_device_by_fwnode(&r_adev->fwnode);
> if (!rdev)
> return -EPROBE_DEFER;
> @@ -662,14 +662,14 @@ static int acpi_coresight_parse_link(struct acpi_device *adev,
> * 2) While removing the target device via
> * coresight_remove_match().
> */
> - conn->child_fwnode = fwnode_handle_get(&r_adev->fwnode);
> + conn->dest_fwnode = fwnode_handle_get(&r_adev->fwnode);
> } else if (dir == ACPI_CORESIGHT_LINK_SLAVE) {
> /*
> * We are only interested in the port number
> * for the input ports at this component.
> * Store the port number in child_port.
> */
> - conn->child_port = fields[0].integer.value;
> + conn->dest_port = fields[0].integer.value;
> } else {
> /* Invalid direction */
> return -EINVAL;
> @@ -718,11 +718,11 @@ static int acpi_coresight_parse_graph(struct acpi_device *adev,
> return dir;
>
> if (dir == ACPI_CORESIGHT_LINK_MASTER) {
> - if (ptr->outport >= pdata->nr_outconns)
> - pdata->nr_outconns = ptr->outport + 1;
> + if (ptr->src_port >= pdata->nr_outconns)
> + pdata->nr_outconns = ptr->src_port + 1;
> ptr++;
> } else {
> - WARN_ON(pdata->nr_inconns == ptr->child_port + 1);
> + WARN_ON(pdata->nr_inconns == ptr->dest_port + 1);
> /*
> * We do not track input port connections for a device.
> * However we need the highest port number described,
> @@ -730,8 +730,8 @@ static int acpi_coresight_parse_graph(struct acpi_device *adev,
> * record for an output connection. Hence, do not move
> * the ptr for input connections
> */
> - if (ptr->child_port >= pdata->nr_inconns)
> - pdata->nr_inconns = ptr->child_port + 1;
> + if (ptr->dest_port >= pdata->nr_inconns)
> + pdata->nr_inconns = ptr->dest_port + 1;
> }
> }
>
> @@ -741,10 +741,10 @@ static int acpi_coresight_parse_graph(struct acpi_device *adev,
>
> /* Copy the connection information to the final location */
> for (i = 0; conns + i < ptr; i++) {
> - int port = conns[i].outport;
> + int port = conns[i].src_port;
>
> /* Duplicate output port */
> - WARN_ON(pdata->out_conns[port].child_fwnode);
> + WARN_ON(pdata->out_conns[port].dest_fwnode);
> pdata->out_conns[port] = conns[i];
> }
>
> diff --git a/drivers/hwtracing/coresight/coresight-sysfs.c b/drivers/hwtracing/coresight/coresight-sysfs.c
> index 34d2a2d31d00..a4a8e8e642e8 100644
> --- a/drivers/hwtracing/coresight/coresight-sysfs.c
> +++ b/drivers/hwtracing/coresight/coresight-sysfs.c
> @@ -150,11 +150,11 @@ int coresight_make_links(struct coresight_device *orig,
>
> do {
> outs = devm_kasprintf(&orig->dev, GFP_KERNEL,
> - "out:%d", conn->outport);
> + "out:%d", conn->src_port);
> if (!outs)
> break;
> ins = devm_kasprintf(&target->dev, GFP_KERNEL,
> - "in:%d", conn->child_port);
> + "in:%d", conn->dest_port);
> if (!ins)
> break;
> link = devm_kzalloc(&orig->dev,
> @@ -178,7 +178,7 @@ int coresight_make_links(struct coresight_device *orig,
> * Install the device connection. This also indicates that
> * the links are operational on both ends.
> */
> - conn->child_dev = target;
> + conn->dest_dev = target;
> return 0;
> } while (0);
>
> @@ -198,9 +198,9 @@ void coresight_remove_links(struct coresight_device *orig,
>
> coresight_remove_sysfs_link(conn->link);
>
> - devm_kfree(&conn->child_dev->dev, conn->link->target_name);
> + devm_kfree(&conn->dest_dev->dev, conn->link->target_name);
> devm_kfree(&orig->dev, conn->link->orig_name);
> devm_kfree(&orig->dev, conn->link);
> conn->link = NULL;
> - conn->child_dev = NULL;
> + conn->dest_dev = NULL;
> }
> diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
> index 4711dfa7418c..61234cb8052a 100644
> --- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
> +++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
> @@ -782,7 +782,7 @@ tmc_etr_get_catu_device(struct tmc_drvdata *drvdata)
> return NULL;
>
> for (i = 0; i < etr->pdata->nr_outconns; i++) {
> - tmp = etr->pdata->out_conns[i].child_dev;
> + tmp = etr->pdata->out_conns[i].dest_dev;
> if (tmp && coresight_is_catu_device(tmp))
> return tmp;
> }
> diff --git a/include/linux/coresight.h b/include/linux/coresight.h
> index daf392fcb67a..b6f444804bf3 100644
> --- a/include/linux/coresight.h
> +++ b/include/linux/coresight.h
> @@ -164,18 +164,18 @@ struct coresight_desc {
>
> /**
> * struct coresight_connection - representation of a single connection
> - * @outport: a connection's output port number.
> - * @child_port: remote component's port number @output is connected to.
> - * @chid_fwnode: remote component's fwnode handle.
> - * @child_dev: a @coresight_device representation of the component
> - connected to @outport.
> + * @src_port: a connection's output port number.
> + * @dest_port: destination's input port number @src_port is connected to.
> + * @dest_fwnode: destination component's fwnode handle.
> + * @dest_dev: a @coresight_device representation of the component
> + connected to @src_port. NULL until the device is created
> * @link: Representation of the connection as a sysfs link.
> */
> struct coresight_connection {
> - int outport;
> - int child_port;
> - struct fwnode_handle *child_fwnode;
> - struct coresight_device *child_dev;
> + int src_port;
> + int dest_port;
> + struct fwnode_handle *dest_fwnode;
> + struct coresight_device *dest_dev;
> struct coresight_sysfs_link *link;
> };
>
> --
> 2.34.1
>
Reviewed-by: Mike Leach <mike.leach@xxxxxxxxxx>
--
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK