Commit dd7a3710 authored by Heikki Krogerus's avatar Heikki Krogerus Committed by Wolfram Sang

i2c: icy: Constify the software node

Complete software node can now be supplied to the device
with struct i2c_board_info.
Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: default avatarMax Staudt <max@enpas.org>
Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
parent 239798f5
...@@ -54,7 +54,6 @@ struct icy_i2c { ...@@ -54,7 +54,6 @@ struct icy_i2c {
void __iomem *reg_s0; void __iomem *reg_s0;
void __iomem *reg_s1; void __iomem *reg_s1;
struct fwnode_handle *ltc2990_fwnode;
struct i2c_client *ltc2990_client; struct i2c_client *ltc2990_client;
}; };
...@@ -115,6 +114,10 @@ static const struct property_entry icy_ltc2990_props[] = { ...@@ -115,6 +114,10 @@ static const struct property_entry icy_ltc2990_props[] = {
{ } { }
}; };
static const struct software_node icy_ltc2990_node = {
.properties = icy_ltc2990_props,
};
static int icy_probe(struct zorro_dev *z, static int icy_probe(struct zorro_dev *z,
const struct zorro_device_id *ent) const struct zorro_device_id *ent)
{ {
...@@ -123,6 +126,7 @@ static int icy_probe(struct zorro_dev *z, ...@@ -123,6 +126,7 @@ static int icy_probe(struct zorro_dev *z,
struct fwnode_handle *new_fwnode; struct fwnode_handle *new_fwnode;
struct i2c_board_info ltc2990_info = { struct i2c_board_info ltc2990_info = {
.type = "ltc2990", .type = "ltc2990",
.swnode = &icy_ltc2990_node,
}; };
i2c = devm_kzalloc(&z->dev, sizeof(*i2c), GFP_KERNEL); i2c = devm_kzalloc(&z->dev, sizeof(*i2c), GFP_KERNEL);
...@@ -174,26 +178,10 @@ static int icy_probe(struct zorro_dev *z, ...@@ -174,26 +178,10 @@ static int icy_probe(struct zorro_dev *z,
* *
* See property_entry above for in1, in2, temp3. * See property_entry above for in1, in2, temp3.
*/ */
new_fwnode = fwnode_create_software_node(icy_ltc2990_props, NULL); i2c->ltc2990_client = i2c_new_scanned_device(&i2c->adapter,
if (IS_ERR(new_fwnode)) {
dev_info(&z->dev, "Failed to create fwnode for LTC2990, error: %ld\n",
PTR_ERR(new_fwnode));
} else {
/*
* Store the fwnode so we can destroy it on .remove().
* Only store it on success, as fwnode_remove_software_node()
* is NULL safe, but not PTR_ERR safe.
*/
i2c->ltc2990_fwnode = new_fwnode;
ltc2990_info.fwnode = new_fwnode;
i2c->ltc2990_client =
i2c_new_scanned_device(&i2c->adapter,
&ltc2990_info, &ltc2990_info,
icy_ltc2990_addresses, icy_ltc2990_addresses,
NULL); NULL);
}
return 0; return 0;
} }
...@@ -202,8 +190,6 @@ static void icy_remove(struct zorro_dev *z) ...@@ -202,8 +190,6 @@ static void icy_remove(struct zorro_dev *z)
struct icy_i2c *i2c = dev_get_drvdata(&z->dev); struct icy_i2c *i2c = dev_get_drvdata(&z->dev);
i2c_unregister_device(i2c->ltc2990_client); i2c_unregister_device(i2c->ltc2990_client);
fwnode_remove_software_node(i2c->ltc2990_fwnode);
i2c_del_adapter(&i2c->adapter); i2c_del_adapter(&i2c->adapter);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment