Ensure that STB0899_POSTPROC_GPIO_POWER is set synchronously.

Signed-off-by: Max Kellermann <max.kellerm...@gmail.com>
---
 drivers/media/dvb-frontends/stb0899_drv.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb-frontends/stb0899_drv.c 
b/drivers/media/dvb-frontends/stb0899_drv.c
index 1d34e95..8dc4894 100644
--- a/drivers/media/dvb-frontends/stb0899_drv.c
+++ b/drivers/media/dvb-frontends/stb0899_drv.c
@@ -614,13 +614,19 @@ static int stb0899_postproc(struct stb0899_state *state, 
u8 ctl, int enable)
        return 0;
 }
 
-static void stb0899_release(struct dvb_frontend *fe)
+static void stb0899_detach(struct dvb_frontend *fe)
 {
        struct stb0899_state *state = fe->demodulator_priv;
 
-       dprintk(state->verbose, FE_DEBUG, 1, "Release Frontend");
        /* post process event */
        stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0);
+}
+
+static void stb0899_release(struct dvb_frontend *fe)
+{
+       struct stb0899_state *state = fe->demodulator_priv;
+
+       dprintk(state->verbose, FE_DEBUG, 1, "Release Frontend");
        kfree(state);
 }
 
@@ -1603,6 +1609,7 @@ static const struct dvb_frontend_ops stb0899_ops = {
                                          FE_CAN_QPSK
        },
 
+       .detach                         = stb0899_detach,
        .release                        = stb0899_release,
        .init                           = stb0899_init,
        .sleep                          = stb0899_sleep,

Reply via email to