struct resource *res;
u32 clock_freq;
struct clk *clk;
- int err = -ENODEV;
- host = spi_alloc_host(&pdev->dev, sizeof(struct jcore_spi));
+ host = devm_spi_alloc_host(&pdev->dev, sizeof(struct jcore_spi));
if (!host)
- return err;
+ return -ENOMEM;
/* Setup the host state. */
host->num_chipselect = 3;
/* Find and map our resources */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res)
- goto exit_busy;
+ return -EBUSY;
if (!devm_request_mem_region(&pdev->dev, res->start,
resource_size(res), pdev->name))
- goto exit_busy;
+ return -EBUSY;
hw->base = devm_ioremap(&pdev->dev, res->start,
resource_size(res));
if (!hw->base)
- goto exit_busy;
+ return -EBUSY;
/*
* The SPI clock rate controlled via a configurable clock divider
jcore_spi_baudrate(hw, 400000);
/* Register our spi controller */
- err = devm_spi_register_controller(&pdev->dev, host);
- if (err)
- goto exit;
-
- return 0;
-
-exit_busy:
- err = -EBUSY;
-exit:
- spi_controller_put(host);
- return err;
+ return devm_spi_register_controller(&pdev->dev, host);
}
static const struct of_device_id jcore_spi_of_match[] = {