mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 15:04:27 +08:00
spi: cs42l43: Clean up of firmware node
As we get a child node in the OF case, we should also clean up the reference, add code to do so. Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://msgid.link/r/20240202103430.951598-1-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
e6c5812dc4
commit
1e942b5bb1
@ -202,6 +202,11 @@ static size_t cs42l43_spi_max_length(struct spi_device *spi)
|
||||
return CS42L43_SPI_MAX_LENGTH;
|
||||
}
|
||||
|
||||
static void cs42l43_release_of_node(void *data)
|
||||
{
|
||||
fwnode_handle_put(data);
|
||||
}
|
||||
|
||||
static int cs42l43_spi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct cs42l43 *cs42l43 = dev_get_drvdata(pdev->dev.parent);
|
||||
@ -228,12 +233,6 @@ static int cs42l43_spi_probe(struct platform_device *pdev)
|
||||
priv->ctlr->transfer_one = cs42l43_transfer_one;
|
||||
priv->ctlr->set_cs = cs42l43_set_cs;
|
||||
priv->ctlr->max_transfer_size = cs42l43_spi_max_length;
|
||||
|
||||
if (is_of_node(fwnode))
|
||||
fwnode = fwnode_get_named_child_node(fwnode, "spi");
|
||||
|
||||
device_set_node(&priv->ctlr->dev, fwnode);
|
||||
|
||||
priv->ctlr->mode_bits = SPI_3WIRE | SPI_MODE_X_MASK;
|
||||
priv->ctlr->flags = SPI_CONTROLLER_HALF_DUPLEX;
|
||||
priv->ctlr->bits_per_word_mask = SPI_BPW_MASK(8) | SPI_BPW_MASK(16) |
|
||||
@ -257,6 +256,17 @@ static int cs42l43_spi_probe(struct platform_device *pdev)
|
||||
regmap_write(priv->regmap, CS42L43_SPI_CONFIG3, 0);
|
||||
regmap_write(priv->regmap, CS42L43_SPI_CONFIG4, CS42L43_SPI_STALL_ENA_MASK);
|
||||
|
||||
if (is_of_node(fwnode)) {
|
||||
fwnode = fwnode_get_named_child_node(fwnode, "spi");
|
||||
ret = devm_add_action(priv->dev, cs42l43_release_of_node, fwnode);
|
||||
if (ret) {
|
||||
fwnode_handle_put(fwnode);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
device_set_node(&priv->ctlr->dev, fwnode);
|
||||
|
||||
ret = devm_spi_register_controller(priv->dev, priv->ctlr);
|
||||
if (ret) {
|
||||
dev_err(priv->dev, "Failed to register SPI controller: %d\n", ret);
|
||||
|
Loading…
Reference in New Issue
Block a user