diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi index f6d2bcb6dbd1..450347e0e56e 100644 --- a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi @@ -208,6 +208,12 @@ /* On Low speed expansion */ label = "LS-SPI0"; status = "okay"; +/* cs-gpios = <&msmgpio 18 0>; */ + spidev@0 { + compatible = "spidev"; + spi-max-frequency = <100000>; + reg = <0>; + }; }; leds { diff --git a/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi b/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi index 899f2b28a9c9..4c9caae90c58 100644 --- a/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi @@ -208,7 +208,7 @@ pins = "gpio16", "gpio17", "gpio19"; }; pinmux_cs { - function = "gpio"; + function = "blsp_spi5"; pins = "gpio18"; }; pinconf { diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c index 68f95acf7971..b5f803e6b580 100644 --- a/drivers/spi/spi-qup.c +++ b/drivers/spi/spi-qup.c @@ -579,7 +579,7 @@ static int spi_qup_io_config(struct spi_device *spi, struct spi_transfer *xfer) control |= SPI_IO_C_CLK_IDLE_HIGH; else control &= ~SPI_IO_C_CLK_IDLE_HIGH; - + control |= SPI_IO_C_MX_CS_MODE; writel_relaxed(control, controller->base + SPI_IO_CONTROL); config = readl_relaxed(controller->base + SPI_CONFIG); @@ -603,6 +603,7 @@ static int spi_qup_io_config(struct spi_device *spi, struct spi_transfer *xfer) else config &= ~SPI_CONFIG_HS_MODE; + config |= SPI_IO_C_MX_CS_MODE; writel_relaxed(config, controller->base + SPI_CONFIG); config = readl_relaxed(controller->base + QUP_CONFIG); @@ -928,7 +929,7 @@ static int spi_qup_probe(struct platform_device *pdev) base + QUP_ERROR_FLAGS_EN); writel_relaxed(0, base + SPI_CONFIG); - writel_relaxed(SPI_IO_C_NO_TRI_STATE, base + SPI_IO_CONTROL); + writel_relaxed(SPI_IO_C_NO_TRI_STATE|SPI_IO_C_MX_CS_MODE, base + SPI_IO_CONTROL); ret = devm_request_irq(dev, irq, spi_qup_qup_irq, IRQF_TRIGGER_HIGH, pdev->name, controller);