On 12/05/2014 12:49 PM, tsk...@gmail.com wrote:
From: Akihiro Tsukada <tsk...@gmail.com>
Define a standard interface for demod/tuner i2c driver modules.
A module client calls dvb_i2c_attach_{fe,tuner}(),
and a module driver defines struct dvb_i2c_module_param and
calls DEFINE_DVB_I2C_MODULE() macro.
This template provides implicit module requests and ref-counting,
alloc/free's private data structures,
fixes the usage of clientdata of i2c devices,
and defines the platformdata structures for passing around
device specific config/output parameters between drivers and clients.
These kinds of code are common to (almost) all dvb i2c drivers/client,
but they were scattered over adapter modules and demod/tuner modules.
Signed-off-by: Akihiro Tsukada <tsk...@gmail.com>
---
drivers/media/dvb-core/Makefile | 4 +
drivers/media/dvb-core/dvb_frontend.h | 1 +
drivers/media/dvb-core/dvb_i2c.c | 219 ++++++++++++++++++++++++++++++++++
drivers/media/dvb-core/dvb_i2c.h | 110 +++++++++++++++++
4 files changed, 334 insertions(+)
create mode 100644 drivers/media/dvb-core/dvb_i2c.c
create mode 100644 drivers/media/dvb-core/dvb_i2c.h
diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile
index 8f22bcd..271648d 100644
--- a/drivers/media/dvb-core/Makefile
+++ b/drivers/media/dvb-core/Makefile
@@ -8,4 +8,8 @@ dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o
\
dvb_ca_en50221.o dvb_frontend.o \
$(dvb-net-y) dvb_ringbuffer.o dvb_math.o
+ifneq ($(CONFIG_I2C)$(CONFIG_I2C_MODULE),)
+dvb-core-objs += dvb_i2c.o
+endif
+
obj-$(CONFIG_DVB_CORE) += dvb-core.o
diff --git a/drivers/media/dvb-core/dvb_frontend.h
b/drivers/media/dvb-core/dvb_frontend.h
index 816269e..41aae1b 100644
--- a/drivers/media/dvb-core/dvb_frontend.h
+++ b/drivers/media/dvb-core/dvb_frontend.h
@@ -415,6 +415,7 @@ struct dtv_frontend_properties {
struct dvb_frontend {
struct dvb_frontend_ops ops;
struct dvb_adapter *dvb;
+ struct i2c_client *fe_cl;
IMHO that is ugly as hell. You should not add any hardware/driver things
to DVB frontend, even more bad this adds I2C dependency to DVB frontend,
how about some other busses... DVB frontend is *logical* entity
representing the DVB device to system. All hardware specific things
belongs to drivers - not the frontend at all.
void *demodulator_priv;
void *tuner_priv;
void *frontend_priv;
regards
Antti
--
http://palosaari.fi/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html