lkml.org 
[lkml]   [2022]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 5/7] drm/bridge: anx7625: Register number of Type C switches
    Date
    Parse the "switches" node, if available, and count and store the number
    of Type-C switches within it. Since we currently don't do anything with
    this info, no functional changes are expected from this change.

    This patch sets a foundation for the actual registering of Type-C
    switches with the Type-C connector class framework.

    Signed-off-by: Prashant Malani <pmalani@chromium.org>
    ---

    Changes since v1:
    - No changes.

    drivers/gpu/drm/bridge/analogix/anx7625.c | 20 ++++++++++++++++++++
    drivers/gpu/drm/bridge/analogix/anx7625.h | 1 +
    2 files changed, 21 insertions(+)

    diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
    index 53a5da6c49dd..07ed44c6b839 100644
    --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
    +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
    @@ -2581,6 +2581,22 @@ static void anx7625_runtime_disable(void *data)
    pm_runtime_disable(data);
    }

    +static int anx7625_register_typec_switches(struct device *device, struct anx7625_data *ctx)
    +{
    + struct device_node *of = NULL;
    + int ret = 0;
    +
    + of = of_get_child_by_name(device->of_node, "switches");
    + if (!of)
    + return -ENODEV;
    +
    + ctx->num_typec_switches = of_get_child_count(of);
    + if (ctx->num_typec_switches <= 0)
    + return -ENODEV;
    +
    + return ret;
    +}
    +
    static int anx7625_i2c_probe(struct i2c_client *client,
    const struct i2c_device_id *id)
    {
    @@ -2686,6 +2702,10 @@ static int anx7625_i2c_probe(struct i2c_client *client,
    if (platform->pdata.intp_irq)
    queue_work(platform->workqueue, &platform->work);

    + ret = anx7625_register_typec_switches(dev, platform);
    + if (ret)
    + dev_info(dev, "Didn't register Type C switches, err: %d\n", ret);
    +
    platform->bridge.funcs = &anx7625_bridge_funcs;
    platform->bridge.of_node = client->dev.of_node;
    if (!anx7625_of_panel_on_aux_bus(&client->dev))
    diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
    index e257a84db962..d5cbca708842 100644
    --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
    +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
    @@ -473,6 +473,7 @@ struct anx7625_data {
    struct drm_connector *connector;
    struct mipi_dsi_device *dsi;
    struct drm_dp_aux aux;
    + int num_typec_switches;
    };

    #endif /* __ANX7625_H__ */
    --
    2.36.1.476.g0c4daa206d-goog
    \
     
     \ /
      Last update: 2022-06-09 20:20    [W:4.597 / U:0.436 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site