Loading drivers/spi/spi-msm-geni.c +85 −62 Original line number Diff line number Diff line Loading @@ -163,6 +163,7 @@ struct spi_geni_master { bool cmd_done; bool set_miso_sampling; u32 miso_sampling_ctrl_val; bool is_le_vm; /* LE VM usecase */ }; static struct spi_master *get_spi_master(struct device *dev) Loading Loading @@ -1510,6 +1511,19 @@ static int spi_geni_probe(struct platform_device *pdev) goto spi_geni_probe_err; } geni_mas->wrapper_dev = &wrapper_pdev->dev; if (of_property_read_bool(pdev->dev.of_node, "qcom,le-vm")) { geni_mas->is_le_vm = true; dev_info(&pdev->dev, "LE-VM usecase\n"); } /* * For LE, clocks, gpio and icb voting will be provided by * by LA. The SPI operates in GSI mode only for LE usecase, * se irq not required. Below properties will not be present * in SPI LE dt. */ if (!geni_mas->is_le_vm) { geni_mas->spi_rsc.wrapper_dev = &wrapper_pdev->dev; ret = geni_se_resources_init(rsc, SPI_CORE2X_VOTE, (DEFAULT_SE_CLK * DEFAULT_BUS_WIDTH)); Loading Loading @@ -1552,7 +1566,8 @@ static int spi_geni_probe(struct platform_device *pdev) rsc->se_clk = devm_clk_get(&pdev->dev, "se-clk"); if (IS_ERR(rsc->se_clk)) { ret = PTR_ERR(rsc->se_clk); dev_err(&pdev->dev, "Err getting SE Core clk %d\n", ret); dev_err(&pdev->dev, "Err getting SE Core clk %d\n", ret); goto spi_geni_probe_err; } Loading @@ -1570,6 +1585,22 @@ static int spi_geni_probe(struct platform_device *pdev) goto spi_geni_probe_err; } geni_mas->irq = platform_get_irq(pdev, 0); if (geni_mas->irq < 0) { dev_err(&pdev->dev, "Err getting IRQ\n"); ret = geni_mas->irq; goto spi_geni_probe_unmap; } ret = devm_request_irq(&pdev->dev, geni_mas->irq, geni_spi_irq, IRQF_TRIGGER_HIGH, "spi_geni", geni_mas); if (ret) { dev_err(&pdev->dev, "Request_irq failed:%d: err:%d\n", geni_mas->irq, ret); goto spi_geni_probe_unmap; } } ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); if (ret) { ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); Loading Loading @@ -1627,20 +1658,6 @@ static int spi_geni_probe(struct platform_device *pdev) goto spi_geni_probe_err; } geni_mas->irq = platform_get_irq(pdev, 0); if (geni_mas->irq < 0) { dev_err(&pdev->dev, "Err getting IRQ\n"); ret = geni_mas->irq; goto spi_geni_probe_unmap; } ret = devm_request_irq(&pdev->dev, geni_mas->irq, geni_spi_irq, IRQF_TRIGGER_HIGH, "spi_geni", geni_mas); if (ret) { dev_err(&pdev->dev, "Request_irq failed:%d: err:%d\n", geni_mas->irq, ret); goto spi_geni_probe_unmap; } spi->mode_bits = (SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_CS_HIGH); spi->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); spi->num_chipselect = SPI_NUM_CHIPSELECT; Loading Loading @@ -1694,6 +1711,9 @@ static int spi_geni_runtime_suspend(struct device *dev) struct spi_master *spi = get_spi_master(dev); struct spi_geni_master *geni_mas = spi_master_get_devdata(spi); if (geni_mas->is_le_vm) return 0; if (geni_mas->shared_ee) goto exit_rt_suspend; Loading @@ -1716,6 +1736,9 @@ static int spi_geni_runtime_resume(struct device *dev) struct spi_master *spi = get_spi_master(dev); struct spi_geni_master *geni_mas = spi_master_get_devdata(spi); if (geni_mas->is_le_vm) return 0; if (geni_mas->shared_ee) goto exit_rt_resume; Loading Loading
drivers/spi/spi-msm-geni.c +85 −62 Original line number Diff line number Diff line Loading @@ -163,6 +163,7 @@ struct spi_geni_master { bool cmd_done; bool set_miso_sampling; u32 miso_sampling_ctrl_val; bool is_le_vm; /* LE VM usecase */ }; static struct spi_master *get_spi_master(struct device *dev) Loading Loading @@ -1510,6 +1511,19 @@ static int spi_geni_probe(struct platform_device *pdev) goto spi_geni_probe_err; } geni_mas->wrapper_dev = &wrapper_pdev->dev; if (of_property_read_bool(pdev->dev.of_node, "qcom,le-vm")) { geni_mas->is_le_vm = true; dev_info(&pdev->dev, "LE-VM usecase\n"); } /* * For LE, clocks, gpio and icb voting will be provided by * by LA. The SPI operates in GSI mode only for LE usecase, * se irq not required. Below properties will not be present * in SPI LE dt. */ if (!geni_mas->is_le_vm) { geni_mas->spi_rsc.wrapper_dev = &wrapper_pdev->dev; ret = geni_se_resources_init(rsc, SPI_CORE2X_VOTE, (DEFAULT_SE_CLK * DEFAULT_BUS_WIDTH)); Loading Loading @@ -1552,7 +1566,8 @@ static int spi_geni_probe(struct platform_device *pdev) rsc->se_clk = devm_clk_get(&pdev->dev, "se-clk"); if (IS_ERR(rsc->se_clk)) { ret = PTR_ERR(rsc->se_clk); dev_err(&pdev->dev, "Err getting SE Core clk %d\n", ret); dev_err(&pdev->dev, "Err getting SE Core clk %d\n", ret); goto spi_geni_probe_err; } Loading @@ -1570,6 +1585,22 @@ static int spi_geni_probe(struct platform_device *pdev) goto spi_geni_probe_err; } geni_mas->irq = platform_get_irq(pdev, 0); if (geni_mas->irq < 0) { dev_err(&pdev->dev, "Err getting IRQ\n"); ret = geni_mas->irq; goto spi_geni_probe_unmap; } ret = devm_request_irq(&pdev->dev, geni_mas->irq, geni_spi_irq, IRQF_TRIGGER_HIGH, "spi_geni", geni_mas); if (ret) { dev_err(&pdev->dev, "Request_irq failed:%d: err:%d\n", geni_mas->irq, ret); goto spi_geni_probe_unmap; } } ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); if (ret) { ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); Loading Loading @@ -1627,20 +1658,6 @@ static int spi_geni_probe(struct platform_device *pdev) goto spi_geni_probe_err; } geni_mas->irq = platform_get_irq(pdev, 0); if (geni_mas->irq < 0) { dev_err(&pdev->dev, "Err getting IRQ\n"); ret = geni_mas->irq; goto spi_geni_probe_unmap; } ret = devm_request_irq(&pdev->dev, geni_mas->irq, geni_spi_irq, IRQF_TRIGGER_HIGH, "spi_geni", geni_mas); if (ret) { dev_err(&pdev->dev, "Request_irq failed:%d: err:%d\n", geni_mas->irq, ret); goto spi_geni_probe_unmap; } spi->mode_bits = (SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_CS_HIGH); spi->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); spi->num_chipselect = SPI_NUM_CHIPSELECT; Loading Loading @@ -1694,6 +1711,9 @@ static int spi_geni_runtime_suspend(struct device *dev) struct spi_master *spi = get_spi_master(dev); struct spi_geni_master *geni_mas = spi_master_get_devdata(spi); if (geni_mas->is_le_vm) return 0; if (geni_mas->shared_ee) goto exit_rt_suspend; Loading @@ -1716,6 +1736,9 @@ static int spi_geni_runtime_resume(struct device *dev) struct spi_master *spi = get_spi_master(dev); struct spi_geni_master *geni_mas = spi_master_get_devdata(spi); if (geni_mas->is_le_vm) return 0; if (geni_mas->shared_ee) goto exit_rt_resume; Loading