Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5efd4c9 authored by Dan Sneddon's avatar Dan Sneddon
Browse files

spi: spi_qsd: Clean-up pinctrl code



Reduce the pinctrl overhead in the msm spi driver code.

Change-Id: I19854ecdcd4230bfda946c773bc39909508c0891
Signed-off-by: default avatarDan Sneddon <dsneddon@codeaurora.org>
parent ee794fa1
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -1282,11 +1282,9 @@
                interrupt-names = "spi_irq", "spi_bam_irq";
                interrupts = <0 97 0>, <0 238 0>;
                spi-max-frequency = <50000000>;
                pinctrl-names = "default", "sleep", "cs0_active", "cs0_sleep";
                pinctrl-0 = <&spi0_default>;
		pinctrl-1 = <&spi0_sleep>;
		pinctrl-2 = <&spi0_cs0_active>;
		pinctrl-3 = <&spi0_cs0_sleep>;
                pinctrl-names = "default", "sleep";
                pinctrl-0 = <&spi0_default &spi0_cs0_active>;
		pinctrl-1 = <&spi0_sleep &spi0_cs0_sleep>;
		clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
			 <&clock_gcc clk_gcc_blsp1_qup3_spi_apps_clk>;
		clock-names = "iface_clk", "core_clk";
+1 −35
Original line number Diff line number Diff line
@@ -91,8 +91,6 @@ static inline void msm_spi_register_init(struct msm_spi *dd)

static int msm_spi_pinctrl_init(struct msm_spi *dd)
{
	int i;

	dd->pinctrl = devm_pinctrl_get(dd->dev);
	if (IS_ERR_OR_NULL(dd->pinctrl)) {
		dev_err(dd->dev, "Failed to get pin ctrl\n");
@@ -112,20 +110,6 @@ static int msm_spi_pinctrl_init(struct msm_spi *dd)
		return PTR_ERR(dd->pins_sleep);
	}

	for (i = 0; i <= SPI_NUM_CHIPSELECTS-1; i++) {
		dd->pins_cs_active[i] = pinctrl_lookup_state(dd->pinctrl,
				pinctrl_cs_pin_name[i][0]);

		if (IS_ERR_OR_NULL(dd->pins_cs_active[i]))
			dev_info(dd->dev,
			"Failed to lookup pinctrl cs[%d] default state\n", i);

		dd->pins_cs_sleep[i] = pinctrl_lookup_state(dd->pinctrl,
					pinctrl_cs_pin_name[i][1]);
		if (IS_ERR_OR_NULL(dd->pins_cs_sleep[i]))
			dev_info(dd->dev,
			"Failed to lookup pinctrl cs[%d] sleep state\n", i);
	}
	return 0;
}

@@ -213,16 +197,6 @@ static inline int msm_spi_request_cs_gpio(struct msm_spi *dd)
				}
				dd->cs_gpios[cs_num].valid = 1;
			}
		} else {
			if (!IS_ERR_OR_NULL(dd->pins_cs_active[cs_num])) {
				rc = pinctrl_select_state(dd->pinctrl,
					dd->pins_cs_active[cs_num]);
				if (rc) {
					dev_err(dd->dev, "%s: Can not set %s pins\n",
					__func__, PINCTRL_STATE_DEFAULT);
					return rc;
				}
			}
		}
	}
	return 0;
@@ -230,7 +204,7 @@ static inline int msm_spi_request_cs_gpio(struct msm_spi *dd)

static inline void msm_spi_free_cs_gpio(struct msm_spi *dd)
{
	int cs_num, rc;
	int cs_num;

	cs_num = dd->cur_msg->spi->chip_select;
	if (!dd->pdata->use_pinctrl) {
@@ -238,14 +212,6 @@ static inline void msm_spi_free_cs_gpio(struct msm_spi *dd)
			gpio_free(dd->cs_gpios[cs_num].gpio_num);
			dd->cs_gpios[cs_num].valid = 0;
		}
	} else {
		if (!IS_ERR_OR_NULL(dd->pins_cs_sleep[cs_num])) {
			rc = pinctrl_select_state(dd->pinctrl,
				dd->pins_cs_sleep[cs_num]);
			if (rc)
				dev_err(dd->dev, "%s: Can not set %s pins\n",
					__func__, PINCTRL_STATE_DEFAULT);
		}
	}
}

+0 −9
Original line number Diff line number Diff line
@@ -370,15 +370,6 @@ struct msm_spi {
	struct pinctrl		*pinctrl;
	struct pinctrl_state	*pins_active;
	struct pinctrl_state	*pins_sleep;
	struct pinctrl_state	 *pins_cs_active[SPI_NUM_CHIPSELECTS];
	struct pinctrl_state	 *pins_cs_sleep[SPI_NUM_CHIPSELECTS];
};

static const char *pinctrl_cs_pin_name[][SPI_NUM_CHIPSELECTS] = {
	{"cs0_active", "cs0_sleep"},
	{"cs1_active", "cs1_sleep"},
	{"cs2_active", "cs2_sleep"},
	{"cs3_active", "cs3_sleep"},
};

/* Forward declaration */