diff options
author | Alok Chauhan <alokc@codeaurora.org> | 2018-10-25 12:40:29 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-11-05 06:53:52 -0500 |
commit | 6a34e285de9afc4441ee81ce76865acd30ed9263 (patch) | |
tree | 12e7c673a0f833cc77e176964b5619160d257814 /drivers/spi/spi-geni-qcom.c | |
parent | 0dccff3ce73aa6e9b1b4b0ddb3831c1d7fde9507 (diff) |
spi: spi-geni-qcom: Simplify probe function
Re-arrange existing APIs in probe function to
avoid using goto and remove redundant variables.
Signed-off-by: Alok Chauhan <alokc@codeaurora.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-geni-qcom.c')
-rw-r--r-- | drivers/spi/spi-geni-qcom.c | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index d1830fbf2fc6..fdb7cb88fb56 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c | |||
@@ -535,11 +535,30 @@ static irqreturn_t geni_spi_isr(int irq, void *data) | |||
535 | 535 | ||
536 | static int spi_geni_probe(struct platform_device *pdev) | 536 | static int spi_geni_probe(struct platform_device *pdev) |
537 | { | 537 | { |
538 | int ret; | 538 | int ret, irq; |
539 | struct spi_master *spi; | 539 | struct spi_master *spi; |
540 | struct spi_geni_master *mas; | 540 | struct spi_geni_master *mas; |
541 | struct resource *res; | 541 | struct resource *res; |
542 | struct geni_se *se; | 542 | void __iomem *base; |
543 | struct clk *clk; | ||
544 | |||
545 | irq = platform_get_irq(pdev, 0); | ||
546 | if (irq < 0) { | ||
547 | dev_err(&pdev->dev, "Err getting IRQ %d\n", irq); | ||
548 | return irq; | ||
549 | } | ||
550 | |||
551 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
552 | base = devm_ioremap_resource(&pdev->dev, res); | ||
553 | if (IS_ERR(base)) | ||
554 | return PTR_ERR(base); | ||
555 | |||
556 | clk = devm_clk_get(&pdev->dev, "se"); | ||
557 | if (IS_ERR(clk)) { | ||
558 | dev_err(&pdev->dev, "Err getting SE Core clk %ld\n", | ||
559 | PTR_ERR(clk)); | ||
560 | return PTR_ERR(clk); | ||
561 | } | ||
543 | 562 | ||
544 | spi = spi_alloc_master(&pdev->dev, sizeof(*mas)); | 563 | spi = spi_alloc_master(&pdev->dev, sizeof(*mas)); |
545 | if (!spi) | 564 | if (!spi) |
@@ -547,27 +566,15 @@ static int spi_geni_probe(struct platform_device *pdev) | |||
547 | 566 | ||
548 | platform_set_drvdata(pdev, spi); | 567 | platform_set_drvdata(pdev, spi); |
549 | mas = spi_master_get_devdata(spi); | 568 | mas = spi_master_get_devdata(spi); |
569 | mas->irq = irq; | ||
550 | mas->dev = &pdev->dev; | 570 | mas->dev = &pdev->dev; |
551 | mas->se.dev = &pdev->dev; | 571 | mas->se.dev = &pdev->dev; |
552 | mas->se.wrapper = dev_get_drvdata(pdev->dev.parent); | 572 | mas->se.wrapper = dev_get_drvdata(pdev->dev.parent); |
553 | se = &mas->se; | 573 | mas->se.base = base; |
574 | mas->se.clk = clk; | ||
554 | 575 | ||
555 | spi->bus_num = -1; | 576 | spi->bus_num = -1; |
556 | spi->dev.of_node = pdev->dev.of_node; | 577 | spi->dev.of_node = pdev->dev.of_node; |
557 | mas->se.clk = devm_clk_get(&pdev->dev, "se"); | ||
558 | if (IS_ERR(mas->se.clk)) { | ||
559 | ret = PTR_ERR(mas->se.clk); | ||
560 | dev_err(&pdev->dev, "Err getting SE Core clk %d\n", ret); | ||
561 | goto spi_geni_probe_err; | ||
562 | } | ||
563 | |||
564 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
565 | se->base = devm_ioremap_resource(&pdev->dev, res); | ||
566 | if (IS_ERR(se->base)) { | ||
567 | ret = PTR_ERR(se->base); | ||
568 | goto spi_geni_probe_err; | ||
569 | } | ||
570 | |||
571 | spi->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_CS_HIGH; | 578 | spi->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_CS_HIGH; |
572 | spi->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); | 579 | spi->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); |
573 | spi->num_chipselect = 4; | 580 | spi->num_chipselect = 4; |
@@ -586,13 +593,6 @@ static int spi_geni_probe(struct platform_device *pdev) | |||
586 | if (ret) | 593 | if (ret) |
587 | goto spi_geni_probe_runtime_disable; | 594 | goto spi_geni_probe_runtime_disable; |
588 | 595 | ||
589 | mas->irq = platform_get_irq(pdev, 0); | ||
590 | if (mas->irq < 0) { | ||
591 | ret = mas->irq; | ||
592 | dev_err(&pdev->dev, "Err getting IRQ %d\n", ret); | ||
593 | goto spi_geni_probe_runtime_disable; | ||
594 | } | ||
595 | |||
596 | ret = request_irq(mas->irq, geni_spi_isr, | 596 | ret = request_irq(mas->irq, geni_spi_isr, |
597 | IRQF_TRIGGER_HIGH, "spi_geni", spi); | 597 | IRQF_TRIGGER_HIGH, "spi_geni", spi); |
598 | if (ret) | 598 | if (ret) |
@@ -607,7 +607,6 @@ spi_geni_probe_free_irq: | |||
607 | free_irq(mas->irq, spi); | 607 | free_irq(mas->irq, spi); |
608 | spi_geni_probe_runtime_disable: | 608 | spi_geni_probe_runtime_disable: |
609 | pm_runtime_disable(&pdev->dev); | 609 | pm_runtime_disable(&pdev->dev); |
610 | spi_geni_probe_err: | ||
611 | spi_master_put(spi); | 610 | spi_master_put(spi); |
612 | return ret; | 611 | return ret; |
613 | } | 612 | } |