Skip to content

Commit

Permalink
platform/x86: intel_cht_int33fe: Replacing the old connections with r…
Browse files Browse the repository at this point in the history
…eferences

Replacing the old connection descriptions with software node
references. Supplying the USB connector also a reference to
the DisplayPort while at it.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Heikki Krogerus authored and Rafael J. Wysocki committed Jun 3, 2019
1 parent 6249933 commit be6dc32
Showing 1 changed file with 28 additions and 19 deletions.
47 changes: 28 additions & 19 deletions drivers/platform/x86/intel_cht_int33fe.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,35 @@ struct cht_int33fe_data {
struct i2c_client *max17047;
struct i2c_client *fusb302;
struct i2c_client *pi3usb30532;
/* Contain a list-head must be per device */
struct device_connection connections[4];

struct fwnode_handle *dp;
struct fwnode_handle *mux;
};

static const struct software_node nodes[];

static const struct software_node_ref_args pi3usb30532_ref = {
&nodes[INT33FE_NODE_PI3USB30532]
};

static const struct software_node_ref_args dp_ref = {
&nodes[INT33FE_NODE_DISPLAYPORT]
};

static struct software_node_ref_args mux_ref;

static const struct software_node_reference usb_connector_refs[] = {
{ "orientation-switch", 1, &pi3usb30532_ref},
{ "mode-switch", 1, &pi3usb30532_ref},
{ "displayport", 1, &dp_ref},
{ }
};

static const struct software_node_reference fusb302_refs[] = {
{ "usb-role-switch", 1, &mux_ref},
{ }
};

/*
* Grrr I severly dislike buggy BIOS-es. At least one BIOS enumerates
* the max17047 both through the INT33FE ACPI device (it is right there
Expand Down Expand Up @@ -113,12 +135,12 @@ static const struct property_entry usb_connector_props[] = {
};

static const struct software_node nodes[] = {
{ "fusb302", NULL, fusb302_props },
{ "fusb302", NULL, fusb302_props, fusb302_refs },
{ "max17047", NULL, max17047_props },
{ "pi3usb30532" },
{ "displayport" },
{ "usb-role-switch" },
{ "connector", &nodes[0], usb_connector_props },
{ "connector", &nodes[0], usb_connector_props, usb_connector_refs },
{ }
};

Expand Down Expand Up @@ -152,6 +174,7 @@ static int cht_int33fe_setup_mux(struct cht_int33fe_data *data)

data->mux = fwnode_handle_get(dev->fwnode);
put_device(dev);
mux_ref.node = to_software_node(data->mux);

return 0;
}
Expand Down Expand Up @@ -190,6 +213,7 @@ static void cht_int33fe_remove_nodes(struct cht_int33fe_data *data)

if (data->mux) {
fwnode_handle_put(data->mux);
mux_ref.node = NULL;
data->mux = NULL;
}

Expand Down Expand Up @@ -343,18 +367,6 @@ static int cht_int33fe_probe(struct platform_device *pdev)
if (ret)
goto out_remove_nodes;

data->connections[0].endpoint[0] = "port0";
data->connections[0].endpoint[1] = "i2c-pi3usb30532-switch";
data->connections[0].id = "orientation-switch";
data->connections[1].endpoint[0] = "port0";
data->connections[1].endpoint[1] = "i2c-pi3usb30532-mux";
data->connections[1].id = "mode-switch";
data->connections[2].endpoint[0] = "i2c-fusb302";
data->connections[2].endpoint[1] = "intel_xhci_usb_sw-role-switch";
data->connections[2].id = "usb-role-switch";

device_connections_add(data->connections);

fwnode = software_node_fwnode(&nodes[INT33FE_NODE_FUSB302]);
if (!fwnode) {
ret = -ENODEV;
Expand Down Expand Up @@ -400,8 +412,6 @@ static int cht_int33fe_probe(struct platform_device *pdev)
out_unregister_max17047:
i2c_unregister_device(data->max17047);

device_connections_remove(data->connections);

out_remove_nodes:
cht_int33fe_remove_nodes(data);

Expand All @@ -416,7 +426,6 @@ static int cht_int33fe_remove(struct platform_device *pdev)
i2c_unregister_device(data->fusb302);
i2c_unregister_device(data->max17047);

device_connections_remove(data->connections);
cht_int33fe_remove_nodes(data);

return 0;
Expand Down

0 comments on commit be6dc32

Please sign in to comment.