Unverified Commit 54711ee4 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'memory-controller-drv-5.19' of...

Merge tag 'memory-controller-drv-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into arm/drivers

Memory controller drivers for v5.19

1. Exynos: Reduce memory usage/allocation in Exynos5422 DMC driver.
2. Renesas:
   - Add bindings for R-Car H3/M3/E3.
   - Simplify single/double data register access.
3. Minor cleanups: TI/EMIF and FSL/Corenet.

* tag 'memory-controller-drv-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl:
  memory: fsl-corenet-cf: Use helper function devm_platform_ioremap_resource()
  memory: renesas-rpc-if: Simplify single/double data register access
  dt-bindings: memory: renesas,rpc-if: Document R-Car H3/M3/E3 support
  memory: emif: remove unneeded ENOMEM error messages
  memory: samsung: exynos5422-dmc: Avoid some over memory allocation

Link: https://lore.kernel.org/r/20220420072712.12648-1-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents b2d229d4 d37b0789
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -31,8 +31,13 @@ properties:
              - renesas,r8a774b1-rpc-if       # RZ/G2N
              - renesas,r8a774c0-rpc-if       # RZ/G2E
              - renesas,r8a774e1-rpc-if       # RZ/G2H
              - renesas,r8a7795-rpc-if        # R-Car H3
              - renesas,r8a7796-rpc-if        # R-Car M3-W
              - renesas,r8a77961-rpc-if       # R-Car M3-W+
              - renesas,r8a77965-rpc-if       # R-Car M3-N
              - renesas,r8a77970-rpc-if       # R-Car V3M
              - renesas,r8a77980-rpc-if       # R-Car V3H
              - renesas,r8a77990-rpc-if       # R-Car E3
              - renesas,r8a77995-rpc-if       # R-Car D3
              - renesas,r8a779a0-rpc-if       # R-Car V3U
          - const: renesas,rcar-gen3-rpc-if   # a generic R-Car gen3 or RZ/G2{E,H,M,N} device
+1 −10
Original line number Diff line number Diff line
@@ -1025,10 +1025,8 @@ static struct emif_data *__init_or_module get_device_details(
	temp	= devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL);
	dev_info = devm_kzalloc(dev, sizeof(*dev_info), GFP_KERNEL);

	if (!emif || !temp || !dev_info) {
		dev_err(dev, "%s:%d: allocation error\n", __func__, __LINE__);
	if (!emif || !temp || !dev_info)
		goto error;
	}

	memcpy(temp, pd, sizeof(*pd));
	pd = temp;
@@ -1067,9 +1065,6 @@ static struct emif_data *__init_or_module get_device_details(
		temp = devm_kzalloc(dev, sizeof(*cust_cfgs), GFP_KERNEL);
		if (temp)
			memcpy(temp, cust_cfgs, sizeof(*cust_cfgs));
		else
			dev_warn(dev, "%s:%d: allocation error\n", __func__,
				__LINE__);
		pd->custom_configs = temp;
	}

@@ -1084,8 +1079,6 @@ static struct emif_data *__init_or_module get_device_details(
			memcpy(temp, pd->timings, size);
			pd->timings = temp;
		} else {
			dev_warn(dev, "%s:%d: allocation error\n", __func__,
				__LINE__);
			get_default_timings(emif);
		}
	} else {
@@ -1098,8 +1091,6 @@ static struct emif_data *__init_or_module get_device_details(
			memcpy(temp, pd->min_tck, sizeof(*pd->min_tck));
			pd->min_tck = temp;
		} else {
			dev_warn(dev, "%s:%d: allocation error\n", __func__,
				__LINE__);
			pd->min_tck = &lpddr2_jedec_min_tck;
		}
	} else {
+1 −8
Original line number Diff line number Diff line
@@ -172,7 +172,6 @@ static irqreturn_t ccf_irq(int irq, void *dev_id)
static int ccf_probe(struct platform_device *pdev)
{
	struct ccf_private *ccf;
	struct resource *r;
	const struct of_device_id *match;
	u32 errinten;
	int ret, irq;
@@ -185,13 +184,7 @@ static int ccf_probe(struct platform_device *pdev)
	if (!ccf)
		return -ENOMEM;

	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!r) {
		dev_err(&pdev->dev, "%s: no mem resource\n", __func__);
		return -ENXIO;
	}

	ccf->regs = devm_ioremap_resource(&pdev->dev, r);
	ccf->regs = devm_platform_ioremap_resource(pdev, 0);
	if (IS_ERR(ccf->regs))
		return PTR_ERR(ccf->regs);

+8 −20
Original line number Diff line number Diff line
@@ -458,7 +458,7 @@ int rpcif_manual_xfer(struct rpcif *rpc)
	case RPCIF_DATA_OUT:
		while (pos < rpc->xferlen) {
			u32 bytes_left = rpc->xferlen - pos;
			u32 nbytes, data[2];
			u32 nbytes, data[2], *p = data;

			smcr = rpc->smcr | RPCIF_SMCR_SPIE;

@@ -471,15 +471,9 @@ int rpcif_manual_xfer(struct rpcif *rpc)
			regmap_write(rpc->regmap, RPCIF_SMENR, smenr);

			memcpy(data, rpc->buffer + pos, nbytes);
			if (nbytes == 8) {
				regmap_write(rpc->regmap, RPCIF_SMWDR1,
					     data[0]);
				regmap_write(rpc->regmap, RPCIF_SMWDR0,
					     data[1]);
			} else {
				regmap_write(rpc->regmap, RPCIF_SMWDR0,
					     data[0]);
			}
			if (nbytes == 8)
				regmap_write(rpc->regmap, RPCIF_SMWDR1, *p++);
			regmap_write(rpc->regmap, RPCIF_SMWDR0, *p);

			regmap_write(rpc->regmap, RPCIF_SMCR, smcr);
			ret = wait_msg_xfer_end(rpc);
@@ -521,7 +515,7 @@ int rpcif_manual_xfer(struct rpcif *rpc)
		}
		while (pos < rpc->xferlen) {
			u32 bytes_left = rpc->xferlen - pos;
			u32 nbytes, data[2];
			u32 nbytes, data[2], *p = data;

			/* nbytes may only be 1, 2, 4, or 8 */
			nbytes = bytes_left >= max ? max : (1 << ilog2(bytes_left));
@@ -537,15 +531,9 @@ int rpcif_manual_xfer(struct rpcif *rpc)
			if (ret)
				goto err_out;

			if (nbytes == 8) {
				regmap_read(rpc->regmap, RPCIF_SMRDR1,
					    &data[0]);
				regmap_read(rpc->regmap, RPCIF_SMRDR0,
					    &data[1]);
			} else {
				regmap_read(rpc->regmap, RPCIF_SMRDR0,
					    &data[0]);
			}
			if (nbytes == 8)
				regmap_read(rpc->regmap, RPCIF_SMRDR1, p++);
			regmap_read(rpc->regmap, RPCIF_SMRDR0, p);
			memcpy(rpc->buffer + pos, data, nbytes);

			pos += nbytes;
+2 −3
Original line number Diff line number Diff line
@@ -1322,7 +1322,6 @@ static int exynos5_dmc_init_clks(struct exynos5_dmc *dmc)
 */
static int exynos5_performance_counters_init(struct exynos5_dmc *dmc)
{
	int counters_size;
	int ret, i;

	dmc->num_counters = devfreq_event_get_edev_count(dmc->dev,
@@ -1332,8 +1331,8 @@ static int exynos5_performance_counters_init(struct exynos5_dmc *dmc)
		return dmc->num_counters;
	}

	counters_size = sizeof(struct devfreq_event_dev) * dmc->num_counters;
	dmc->counter = devm_kzalloc(dmc->dev, counters_size, GFP_KERNEL);
	dmc->counter = devm_kcalloc(dmc->dev, dmc->num_counters,
				    sizeof(*dmc->counter), GFP_KERNEL);
	if (!dmc->counter)
		return -ENOMEM;