Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9bd9fa6c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull HSI updates from Sebastian Reichel:
 "Misc fixes"

* tag 'hsi-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
  hsi: controllers:remove redundant code
  hsi: correctly handle return value of kzalloc
  hsi: omap_ssi_port: Prevent warning if cawake_gpio is not defined.
  hsi: fix double kfree
  HSI: Fix a typo
parents b0378657 16bd5865
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -783,7 +783,7 @@ static void ssip_rx_strans(struct hsi_client *cl, u32 cmd)
	}
	ssip_set_rxstate(ssi, RECEIVING);
	if (unlikely(SSIP_MSG_ID(cmd) != ssi->rxid)) {
		dev_err(&cl->device, "START TRANS id %d expeceted %d\n",
		dev_err(&cl->device, "START TRANS id %d expected %d\n",
					SSIP_MSG_ID(cmd), ssi->rxid);
		spin_unlock(&ssi->lock);
		goto out1;
+4 −17
Original line number Diff line number Diff line
@@ -295,27 +295,14 @@ static int __init ssi_get_iomem(struct platform_device *pd,
		const char *name, void __iomem **pbase, dma_addr_t *phy)
{
	struct resource *mem;
	struct resource *ioarea;
	void __iomem *base;
	struct hsi_controller *ssi = platform_get_drvdata(pd);

	mem = platform_get_resource_byname(pd, IORESOURCE_MEM, name);
	if (!mem) {
		dev_err(&pd->dev, "IO memory region missing (%s)\n", name);
		return -ENXIO;
	}
	ioarea = devm_request_mem_region(&ssi->device, mem->start,
					resource_size(mem), dev_name(&pd->dev));
	if (!ioarea) {
		dev_err(&pd->dev, "%s IO memory region request failed\n",
								mem->name);
		return -ENXIO;
	}
	base = devm_ioremap(&ssi->device, mem->start, resource_size(mem));
	if (!base) {
		dev_err(&pd->dev, "%s IO remap failed\n", mem->name);
		return -ENXIO;
	}
	base = devm_ioremap_resource(&ssi->device, mem);
	if (IS_ERR(base))
		return PTR_ERR(base);

	*pbase = base;

	if (phy)
+1 −1
Original line number Diff line number Diff line
@@ -1111,7 +1111,7 @@ static int __init ssi_port_probe(struct platform_device *pd)
	struct omap_ssi_port *omap_port;
	struct hsi_controller *ssi = dev_get_drvdata(pd->dev.parent);
	struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi);
	u32 cawake_gpio = 0;
	int cawake_gpio = 0;
	u32 port_id;
	int err;

+11 −2
Original line number Diff line number Diff line
@@ -85,12 +85,14 @@ struct hsi_client *hsi_new_client(struct hsi_port *port,

	cl = kzalloc(sizeof(*cl), GFP_KERNEL);
	if (!cl)
		return NULL;
		goto err;

	cl->tx_cfg = info->tx_cfg;
	if (cl->tx_cfg.channels) {
		size = cl->tx_cfg.num_channels * sizeof(*cl->tx_cfg.channels);
		cl->tx_cfg.channels = kzalloc(size , GFP_KERNEL);
		if (!cl->tx_cfg.channels)
			goto err_tx;
		memcpy(cl->tx_cfg.channels, info->tx_cfg.channels, size);
	}

@@ -98,6 +100,8 @@ struct hsi_client *hsi_new_client(struct hsi_port *port,
	if (cl->rx_cfg.channels) {
		size = cl->rx_cfg.num_channels * sizeof(*cl->rx_cfg.channels);
		cl->rx_cfg.channels = kzalloc(size , GFP_KERNEL);
		if (!cl->rx_cfg.channels)
			goto err_rx;
		memcpy(cl->rx_cfg.channels, info->rx_cfg.channels, size);
	}

@@ -114,6 +118,12 @@ struct hsi_client *hsi_new_client(struct hsi_port *port,
	}

	return cl;
err_rx:
	kfree(cl->tx_cfg.channels);
err_tx:
	kfree(cl);
err:
	return NULL;
}
EXPORT_SYMBOL_GPL(hsi_new_client);

@@ -300,7 +310,6 @@ static void hsi_add_client_from_dt(struct hsi_port *port,
	if (device_register(&cl->device) < 0) {
		pr_err("hsi: failed to register client: %s\n", name);
		put_device(&cl->device);
		goto err3;
	}

	return;