Commit b4797048 authored by Patrick Boettcher's avatar Patrick Boettcher Committed by Mauro Carvalho Chehab

[media] stv090x: added function to control GPIOs from the outside

This patch STV090X adds and exports a function to control the GPIOs of
the stv090x-devices.

Cc: Manu Abraham <abraham.manu@gmail.com>
Signed-off-by: default avatarMartin Wilks <m.wilks@technisat.com>
Signed-off-by: default avatarPatrick Boettcher <pboettcher@kernellabs.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 521cb40b
...@@ -4516,6 +4516,20 @@ static int stv090x_setup(struct dvb_frontend *fe) ...@@ -4516,6 +4516,20 @@ static int stv090x_setup(struct dvb_frontend *fe)
return -1; return -1;
} }
int stv090x_set_gpio(struct dvb_frontend *fe, u8 gpio, u8 dir, u8 value,
u8 xor_value)
{
struct stv090x_state *state = fe->demodulator_priv;
u8 reg = 0;
STV090x_SETFIELD(reg, GPIOx_OPD_FIELD, dir);
STV090x_SETFIELD(reg, GPIOx_CONFIG_FIELD, value);
STV090x_SETFIELD(reg, GPIOx_XOR_FIELD, xor_value);
return stv090x_write_reg(state, STV090x_GPIOxCFG(gpio), reg);
}
EXPORT_SYMBOL(stv090x_set_gpio);
static struct dvb_frontend_ops stv090x_ops = { static struct dvb_frontend_ops stv090x_ops = {
.info = { .info = {
......
...@@ -104,6 +104,11 @@ struct stv090x_config { ...@@ -104,6 +104,11 @@ struct stv090x_config {
extern struct dvb_frontend *stv090x_attach(const struct stv090x_config *config, extern struct dvb_frontend *stv090x_attach(const struct stv090x_config *config,
struct i2c_adapter *i2c, struct i2c_adapter *i2c,
enum stv090x_demodulator demod); enum stv090x_demodulator demod);
/* dir = 0 -> output, dir = 1 -> input/open-drain */
extern int stv090x_set_gpio(struct dvb_frontend *fe, u8 gpio,
u8 dir, u8 value, u8 xor_value);
#else #else
static inline struct dvb_frontend *stv090x_attach(const struct stv090x_config *config, static inline struct dvb_frontend *stv090x_attach(const struct stv090x_config *config,
...@@ -113,6 +118,13 @@ static inline struct dvb_frontend *stv090x_attach(const struct stv090x_config *c ...@@ -113,6 +118,13 @@ static inline struct dvb_frontend *stv090x_attach(const struct stv090x_config *c
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return NULL; return NULL;
} }
static inline int stv090x_set_gpio(struct dvb_frontend *fe, u8 gpio,
u8 opd, u8 value, u8 xor_value)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return -ENODEV;
}
#endif /* CONFIG_DVB_STV090x */ #endif /* CONFIG_DVB_STV090x */
#endif /* __STV090x_H */ #endif /* __STV090x_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment