On Mon, Apr 03, 2023 at 11:05:27PM +0300, Abel Vesa wrote: > This takes the already existing duplicated support in both ufs-qcom > and sdhci-msm drivers and makes it a dedicated driver that can be used > by both mentioned drivers. The reason for this is because, staring with > SM8550, the ICE IP block is shared between UFS and SDCC, which means we > need to probe a dedicated device and share it between those two > consumers. So let's add the ICE dedicated driver as a soc driver. > Platforms that already have ICE supported, will use it as a library > as the of_qcom_ice_get will return an ICE instance created for the > consumer device. This allows the backwards compatibility with old-style > devicetree approach. Also, add support to HW version 4.x since it > works out-of-the-box with the current driver. The 4.x HW version is > found on SM8550 platform. Can you please split up long paragraphs like this into multiple paragraphs? > + pdev = of_find_device_by_node(node); > + if (!pdev) { > + dev_err(dev, "Cannot find device node %s\n", node->name); > + ice = ERR_PTR(-EPROBE_DEFER); > + goto out; > + } > + > + ice = platform_get_drvdata(pdev); > + if (!ice) { > + dev_err(dev, "Cannot get ice instance from %s\n", > + dev_name(&pdev->dev)); > + platform_device_put(pdev); > + ice = ERR_PTR(-EPROBE_DEFER); > + goto out; > + } > + > + ice->link = device_link_add(dev, &pdev->dev, DL_FLAG_AUTOREMOVE_SUPPLIER); > + if (!ice->link) { > + dev_err(&pdev->dev, > + "Failed to create device link to consumer %s\n", > + dev_name(dev)); > + ice = ERR_PTR(-EINVAL); > + } Is a call to platform_device_put() missing above? - Eric