From c616ac28a5b392a03eaa1bbab2bdb1d8931cfdb8 Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Wed, 12 Aug 2015 16:15:35 +0200 Subject: HSI: Fix a typo Signed-off-by: Jakub Wilk Signed-off-by: Sebastian Reichel --- drivers/hsi/clients/ssi_protocol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/hsi/clients/ssi_protocol.c b/drivers/hsi/clients/ssi_protocol.c index e5c7a969f28b..a38af68cf326 100644 --- a/drivers/hsi/clients/ssi_protocol.c +++ b/drivers/hsi/clients/ssi_protocol.c @@ -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; -- cgit v1.2.3 From f098a045350ecd6045f2f2d5a50fecf2a98962d7 Mon Sep 17 00:00:00 2001 From: Geliang Tang Date: Thu, 1 Oct 2015 22:35:21 +0800 Subject: hsi: fix double kfree When device_register() fails, kfree() is called in hsi_client_release(), hence there is no need to call kfree in err3 again. Fixes: a2aa24734d9db ("HSI: Add common DT binding for HSI client devices") Signed-off-by: Geliang Tang Signed-off-by: Sebastian Reichel --- drivers/hsi/hsi.c | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers') diff --git a/drivers/hsi/hsi.c b/drivers/hsi/hsi.c index fe9371271ce2..35d631e91908 100644 --- a/drivers/hsi/hsi.c +++ b/drivers/hsi/hsi.c @@ -300,7 +300,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; -- cgit v1.2.3 From e74eba049356fdad6713ab66322d9aeb0e85608b Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Wed, 14 Oct 2015 13:44:15 +0300 Subject: hsi: omap_ssi_port: Prevent warning if cawake_gpio is not defined. The error handling path is broken as cawake_gpio was defined as unsigned integer causing the following warnings on boards that don't use SSI port and so don't have cawake_gpio defined. e.g. beagleboard C4. [ 30.094635] WARNING: CPU: 0 PID: 322 at drivers/gpio/gpiolib.c:86 gpio_to_desc+0xa4/0xb8() [ 30.103363] invalid GPIO -2 [ 30.106292] Modules linked in: omap_ssi_port(+) cpufreq_dt cfbfillrect cfbimgblt leds_gpio cfbcopyarea thermal_sys led_class hwmon gpio_keys encoder_tfp410 connector_analog_tv connector_dvi omap_hdq snd phy_i [ 30.145477] CPU: 0 PID: 322 Comm: modprobe Not tainted 4.3.0-rc4-00030-gca978c0-dirty #335 [ 30.154174] Hardware name: Generic OMAP3-GP (Flattened Device Tree) [ 30.160827] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 30.168975] [] (show_stack) from [] (dump_stack+0x80/0x9c) [ 30.176635] [] (dump_stack) from [] (warn_slowpath_common+0x7c/0xb8) [ 30.185180] [] (warn_slowpath_common) from [] (warn_slowpath_fmt+0x30/0x40) [ 30.194366] [] (warn_slowpath_fmt) from [] (gpio_to_desc+0xa4/0xb8) [ 30.202819] [] (gpio_to_desc) from [] (gpio_request_one+0x14/0x11c) [ 30.211273] [] (gpio_request_one) from [] (devm_gpio_request_one+0x3c/0x78) [ 30.220458] [] (devm_gpio_request_one) from [] (ssi_port_probe+0x118/0x504 [omap_ssi_port]) [ 30.231170] [] (ssi_port_probe [omap_ssi_port]) from [] (platform_drv_probe+0x48/0xa4) [ 30.241424] [] (platform_drv_probe) from [] (driver_probe_device+0x1dc/0x2a0) [ 30.250793] [] (driver_probe_device) from [] (__driver_attach+0x94/0x98) [ 30.259643] [] (__driver_attach) from [] (bus_for_each_dev+0x54/0x88) [ 30.268249] [] (bus_for_each_dev) from [] (bus_add_driver+0xe8/0x1f8) [ 30.276916] [] (bus_add_driver) from [] (driver_register+0x78/0xf4) [ 30.285369] [] (driver_register) from [] (__platform_driver_probe+0x34/0xd8) [ 30.294647] [] (__platform_driver_probe) from [] (do_one_initcall+0x80/0x1d8) [ 30.303985] [] (do_one_initcall) from [] (do_init_module+0x5c/0x1cc) [ 30.312561] [] (do_init_module) from [] (load_module+0x18c8/0x1f0c) [ 30.320983] [] (load_module) from [] (SyS_init_module+0xdc/0x150) [ 30.329223] [] (SyS_init_module) from [] (ret_fast_syscall+0x0/0x1c) Fixes: b209e047bc743 ("HSI: Introduce OMAP SSI driver") Signed-off-by: Roger Quadros Signed-off-by: Sebastian Reichel --- drivers/hsi/controllers/omap_ssi_port.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/hsi/controllers/omap_ssi_port.c b/drivers/hsi/controllers/omap_ssi_port.c index 1f8652b3de06..02e66032ae73 100644 --- a/drivers/hsi/controllers/omap_ssi_port.c +++ b/drivers/hsi/controllers/omap_ssi_port.c @@ -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; -- cgit v1.2.3 From d2c85ac24ed7636934f469fac8836b87c7e6cb40 Mon Sep 17 00:00:00 2001 From: Insu Yun Date: Sat, 17 Oct 2015 19:25:07 +0000 Subject: hsi: correctly handle return value of kzalloc Since kzalloc can be failed in memory pressure, its return value should be checked and handled. Signed-off-by: Insu Yun Signed-off-by: Sebastian Reichel --- drivers/hsi/hsi.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/hsi/hsi.c b/drivers/hsi/hsi.c index 35d631e91908..df380d55c58f 100644 --- a/drivers/hsi/hsi.c +++ b/drivers/hsi/hsi.c @@ -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); -- cgit v1.2.3 From 16bd5865cdb3b190105db21bd22a0ca0501e7b20 Mon Sep 17 00:00:00 2001 From: Sanjeev Sharma Date: Thu, 29 Oct 2015 15:34:55 +0530 Subject: hsi: controllers:remove redundant code Use devm_ioremap_resource() in order to make the code simpler, and remove redundant return value check of platform_get_resource() because this value is alreadytaken care by devm_ioremap_resource() Signed-off-by: Sanjeev Sharma Signed-off-by: Sebastian Reichel --- drivers/hsi/controllers/omap_ssi.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'drivers') diff --git a/drivers/hsi/controllers/omap_ssi.c b/drivers/hsi/controllers/omap_ssi.c index 089c6c3feb3e..f6d3100b7a32 100644 --- a/drivers/hsi/controllers/omap_ssi.c +++ b/drivers/hsi/controllers/omap_ssi.c @@ -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) -- cgit v1.2.3