Memory controller drivers - fixes for v5.18
Issues in v5.18: 1. Freescale/NXP: fix populating children of Integrated Flash Controller DT nodes. Issues existing before: 1. Renesas: fix platform-device leak in probe's error path. 2. Atmel: fix of_node reference leak in probe's error path. 3. Synopsys: correct the bindings for snps,ddrc-3.80a (interrupts are required). -----BEGIN PGP SIGNATURE----- iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmJOnPsQHGtyemtAa2Vy bmVsLm9yZwAKCRDBN2bmhouD18r3D/sHivcq0Vq2nWC5IUcpAzL/WaF1H/rMHnE+ Y/gQxormQ6u/eBhfiHG4o6sLm4io8YJzCCvsnDnM//GExrUHJHohy5bGOGiSGRi3 lF0UWWQAWVyxIuF058gtzPuNmjZTH7VJnAIA/TNAvnQIt34269VxcdIFTIICLESo jUiZ3nswDBuS/9CQM/L2F3XBnmK2foSZIJFGNK5uNDWMyOlY2NTuejC0fs8uXFuh 14B3OwKm4LOhshGrwBGfJS0k6VxINDKGeZ6yslYEx8s/CFqTwCTsdgEgxjX5zfuA CKZjZCC9neZIdOP8tAgx8lfR4shWTf5jXkW1FXOGzvRfnKCVZeebqSUkUMQo3VuK zMeHb6iYtj9F+F0kqhlb67UtATv/0C7zFEYej8YD764SXnPl20NEVR+SrzaQtyLO V6G0Xc19pf9rnUIA0XiEF9yNXdOGswANqucHTl6+oOt3vwT0iT+kzzgQBC2Ucl1u eHLeyTTTdFKTvWuzcKK97h3/N80T/U2FMoJgIzgU9ajCkyQrWEdoCZrUqS93TA1I wALsZWqgvu6PLeUcSHCIdGPI+VktloIDKi/wlttOttBN38W1WwuyHZTt52zEmA2P /rPScCVf3IEn0rtC6EP+gZ2SYbC0LCsgs5vmpvfgoxVIGA3+lmSoKmUprFWG6Z86 ZclVVBMV4g== =1KGr -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmJO0doACgkQmmx57+YA GNlkDg/+KbDojSclosmC90vGT/dfgQ5Vj3e/frFTyQN/Dd28cnJLz4agoleWz/TD ouazIm8OKSt35qsn1CgnWn/h3gpvn6U2/Ejms//69tJdPfTRa3Hv0fnHo//It9co LQgTtXSlf69wA89YnDS1VXryjKJJXvyxoNeEv0CUmM81p01kH17LCOgnDKJSDKIK YKnPGE+SLOOUDyF4/0Fy6pihk8mBczkO5jnZAqnILfYdaYbG2BYS0mPdKWaSR2fa 9oLeM9CcUSYw/k5e1O+WoXiXQnaauINTgtn7sIcaCxo8DF7FwHiHUCi+vm0HwyWm c0ziqA1c2Tx8DVGLrq7ex3v5O89jPdkBI70SsOHEiqw5v3znTjpWbvcFX64V8rVv ZJg0i/j2xBX8eazlV1q+ssachMe+1r5CjZPaW0e70xFlr3HEKRG7Wiu0dUHhQ0RC BIVb5cMJvMGCxbkwWaPPasq0q78KnCDThVHWahJskc1KHhKI49LqF6BQMJQvGG3u n9+4OI0AI+WLspB8g4eRaS2/VBHndeDt3yhY7nz/tdacUa9xNJfzNpcLqlPrdiwA niyRhuQInIE1h7iut2iPTwG6LVLE9HjQy2sGYwZg392Mhk6Ugf61uArKu2WCw/Kf Si5rj3nbbCJvnxakuNtekbQVP4kLgWqmYRLSpcYzbcUQOX92nKw= =BmJv -----END PGP SIGNATURE----- Merge tag 'memory-controller-drv-fixes-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into arm/fixes Memory controller drivers - fixes for v5.18 Issues in v5.18: 1. Freescale/NXP: fix populating children of Integrated Flash Controller DT nodes. Issues existing before: 1. Renesas: fix platform-device leak in probe's error path. 2. Atmel: fix of_node reference leak in probe's error path. 3. Synopsys: correct the bindings for snps,ddrc-3.80a (interrupts are required). * tag 'memory-controller-drv-fixes-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl: memory: fsl_ifc: populate child nodes of buses and mfd devices dt-bindings: memory: snps,ddrc-3.80a compatible also need interrupts memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe memory: renesas-rpc-if: fix platform-device leak in error path Link: https://lore.kernel.org/r/20220407081448.113208-1-krzysztof.kozlowski@linaro.org Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
44e4a2c756
@ -24,9 +24,9 @@ description: |
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- snps,ddrc-3.80a
|
||||
- xlnx,zynq-ddrc-a05
|
||||
- xlnx,zynqmp-ddrc-2.40a
|
||||
- snps,ddrc-3.80a
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
@ -43,7 +43,9 @@ allOf:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: xlnx,zynqmp-ddrc-2.40a
|
||||
enum:
|
||||
- snps,ddrc-3.80a
|
||||
- xlnx,zynqmp-ddrc-2.40a
|
||||
then:
|
||||
required:
|
||||
- interrupts
|
||||
|
@ -544,20 +544,27 @@ static int atmel_ebi_probe(struct platform_device *pdev)
|
||||
smc_np = of_parse_phandle(dev->of_node, "atmel,smc", 0);
|
||||
|
||||
ebi->smc.regmap = syscon_node_to_regmap(smc_np);
|
||||
if (IS_ERR(ebi->smc.regmap))
|
||||
return PTR_ERR(ebi->smc.regmap);
|
||||
if (IS_ERR(ebi->smc.regmap)) {
|
||||
ret = PTR_ERR(ebi->smc.regmap);
|
||||
goto put_node;
|
||||
}
|
||||
|
||||
ebi->smc.layout = atmel_hsmc_get_reg_layout(smc_np);
|
||||
if (IS_ERR(ebi->smc.layout))
|
||||
return PTR_ERR(ebi->smc.layout);
|
||||
if (IS_ERR(ebi->smc.layout)) {
|
||||
ret = PTR_ERR(ebi->smc.layout);
|
||||
goto put_node;
|
||||
}
|
||||
|
||||
ebi->smc.clk = of_clk_get(smc_np, 0);
|
||||
if (IS_ERR(ebi->smc.clk)) {
|
||||
if (PTR_ERR(ebi->smc.clk) != -ENOENT)
|
||||
return PTR_ERR(ebi->smc.clk);
|
||||
if (PTR_ERR(ebi->smc.clk) != -ENOENT) {
|
||||
ret = PTR_ERR(ebi->smc.clk);
|
||||
goto put_node;
|
||||
}
|
||||
|
||||
ebi->smc.clk = NULL;
|
||||
}
|
||||
of_node_put(smc_np);
|
||||
ret = clk_prepare_enable(ebi->smc.clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -608,6 +615,10 @@ static int atmel_ebi_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
return of_platform_populate(np, NULL, NULL, dev);
|
||||
|
||||
put_node:
|
||||
of_node_put(smc_np);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __maybe_unused int atmel_ebi_resume(struct device *dev)
|
||||
|
@ -287,8 +287,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
|
||||
}
|
||||
|
||||
/* legacy dts may still use "simple-bus" compatible */
|
||||
ret = of_platform_populate(dev->dev.of_node, NULL, NULL,
|
||||
&dev->dev);
|
||||
ret = of_platform_default_populate(dev->dev.of_node, NULL, &dev->dev);
|
||||
if (ret)
|
||||
goto err_free_nandirq;
|
||||
|
||||
|
@ -651,6 +651,7 @@ static int rpcif_probe(struct platform_device *pdev)
|
||||
struct platform_device *vdev;
|
||||
struct device_node *flash;
|
||||
const char *name;
|
||||
int ret;
|
||||
|
||||
flash = of_get_next_child(pdev->dev.of_node, NULL);
|
||||
if (!flash) {
|
||||
@ -674,7 +675,14 @@ static int rpcif_probe(struct platform_device *pdev)
|
||||
return -ENOMEM;
|
||||
vdev->dev.parent = &pdev->dev;
|
||||
platform_set_drvdata(pdev, vdev);
|
||||
return platform_device_add(vdev);
|
||||
|
||||
ret = platform_device_add(vdev);
|
||||
if (ret) {
|
||||
platform_device_put(vdev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rpcif_remove(struct platform_device *pdev)
|
||||
|
Loading…
x
Reference in New Issue
Block a user