mrdy_set_high/mrdy_set_low functions used to be void parameters and used cached ptr to access device structure.
redefined mrdy_set_high/low to take a device parameter and avoid using cached pointer. Signed-off-by: Russ Gorby <russ.go...@intel.com> --- drivers/serial/ifx6x60.c | 23 +++++++++++------------ 1 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/serial/ifx6x60.c b/drivers/serial/ifx6x60.c index 8ddac7c..d036625 100644 --- a/drivers/serial/ifx6x60.c +++ b/drivers/serial/ifx6x60.c @@ -108,21 +108,19 @@ MODULE_PARM_DESC(ignore_srdy_start, /** * mrdy_set_high - set MRDY GPIO * - * FIXME: Should pass ifx_dev not use saved_ifx_dev */ -static inline void mrdy_set_high(void) +static inline void mrdy_set_high(struct ifx_spi_device *ifx_dev) { - gpio_set_value(saved_ifx_dev->gpio.mrdy, 1); + gpio_set_value(ifx_dev->gpio.mrdy, 1); } /** * mrdy_set_low - clear MRDY GPIO * - * FIXME: Should pass ifx_dev not use saved_ifx_dev */ -static inline void mrdy_set_low(void) +static inline void mrdy_set_low(struct ifx_spi_device *ifx_dev) { - gpio_set_value(saved_ifx_dev->gpio.mrdy, 0); + gpio_set_value(ifx_dev->gpio.mrdy, 0); } /** @@ -227,7 +225,7 @@ static void mrdy_assert(struct ifx_spi_device *ifx_dev) } } ifx_spi_power_state_set(ifx_dev, IFX_SPI_POWER_DATA_PENDING); - mrdy_set_high(); + mrdy_set_high(ifx_dev); } /** @@ -276,7 +274,7 @@ static void ifx_spi_timeout(unsigned long arg) dev_warn(&ifx_dev->spi_dev->dev, "*** SPI Timeout ***"); ifx_spi_ttyhangup(ifx_dev); - mrdy_set_low(); + mrdy_set_low(ifx_dev); clear_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags); } @@ -861,6 +859,7 @@ static void ifx_port_shutdown(struct tty_port *port) struct ifx_spi_port_data *port_data = container_of(port, struct ifx_spi_port_data, serial.tty_port); struct ifx_spi_serial *ifx_ser = &port_data->serial; + struct ifx_spi_device *ifx_dev = port_data->ifx_spi; struct tty_struct *tty; dev_dbg(ifx_ser->tty_dev, "%s called", __func__); @@ -869,14 +868,14 @@ static void ifx_port_shutdown(struct tty_port *port) clear_bit(OS_HCLOSE_START, &ifx_ser->ostatus); clear_bit(OS_HCLOSE_DONE, &ifx_ser->ostatus); - mrdy_set_low(); + mrdy_set_low(ifx_dev); clear_bit(IFX_SPI_STATE_TIMER_PENDING, &port_data->ifx_spi->flags); tty = tty_port_tty_get(&ifx_ser->tty_port); if (!tty) { dev_dbg(ifx_ser->tty_dev, "no tty"); return; } - tasklet_kill(&saved_ifx_dev->io_work_tasklet); + tasklet_kill(&ifx_dev->io_work_tasklet); tty_kref_put(tty); } @@ -959,7 +958,7 @@ static void ifx_spi_complete(void *ctx) dev_dbg(&ifx_dev->spi_dev->dev, "mrdy set low"); - mrdy_set_low(); + mrdy_set_low(ifx_dev); if (!ifx_dev->spi_msg.status) { /* check header validity, get comm flags */ @@ -1608,7 +1607,7 @@ static int ifx_spi_spi_probe(struct spi_device *spi) ifx_spi_handle_srdy(ifx_dev); } else { dev_dbg(&spi->dev, "setting mrdy low"); - mrdy_set_low(); + mrdy_set_low(ifx_dev); } return 0; -- 1.6.0.6 _______________________________________________ MeeGo-kernel mailing list MeeGo-kernel@lists.meego.com http://lists.meego.com/listinfo/meego-kernel