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:
Arnd Bergmann 2022-04-07 13:58:17 +02:00
commit 44e4a2c756
4 changed files with 31 additions and 11 deletions

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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)