提交 a9254475 编写于 作者: M Mauro Carvalho Chehab

V4L/DVB (7115): Fix bug #9833: regression when compiling V4L without I2C

Adrian Bunk reported:

> > Commit 8ffbc655 causes the following
> > compile error with CONFIG_VIDEO_DEV=y/m, CONFIG_I2C=n:
> >
> > <--  snip  -->
> >
> > ...
> >   MODPOST 26 modules
> > ERROR: "i2c_attach_client" [drivers/media/video/v4l2-common.ko] undefined!
> > make[2]: *** [__modpost] Error 1
> >
> > <--  snip  -->

...

And what should happen if CONFIG_VIDEO_DEV=y, CONFIG_I2C=m?

CC: Adrian Bunk <bunk@kernel.org>
Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 1309d4e6
...@@ -25,6 +25,11 @@ config VIDEO_DEV ...@@ -25,6 +25,11 @@ config VIDEO_DEV
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called videodev. module will be called videodev.
config VIDEO_V4L2_COMMON
tristate
depends on (I2C || I2C=n) && VIDEO_DEV
default (I2C || I2C=n) && VIDEO_DEV
config VIDEO_V4L1 config VIDEO_V4L1
bool "Enable Video For Linux API 1 (DEPRECATED)" bool "Enable Video For Linux API 1 (DEPRECATED)"
depends on VIDEO_DEV depends on VIDEO_DEV
......
...@@ -10,8 +10,9 @@ msp3400-objs := msp3400-driver.o msp3400-kthreads.o ...@@ -10,8 +10,9 @@ msp3400-objs := msp3400-driver.o msp3400-kthreads.o
stkwebcam-objs := stk-webcam.o stk-sensor.o stkwebcam-objs := stk-webcam.o stk-sensor.o
obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o compat_ioctl32.o \ obj-$(CONFIG_VIDEO_DEV) += videodev.o compat_ioctl32.o v4l2-int-device.o
v4l2-int-device.o
obj-$(CONFIG_VIDEO_V4L2_COMMON) += v4l2-common.o
ifeq ($(CONFIG_VIDEO_V4L1_COMPAT),y) ifeq ($(CONFIG_VIDEO_V4L1_COMPAT),y)
obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o
......
...@@ -973,6 +973,18 @@ u32 v4l2_ctrl_next(const u32 * const * ctrl_classes, u32 id) ...@@ -973,6 +973,18 @@ u32 v4l2_ctrl_next(const u32 * const * ctrl_classes, u32 id)
return **ctrl_classes; return **ctrl_classes;
} }
int v4l2_chip_match_host(u32 match_type, u32 match_chip)
{
switch (match_type) {
case V4L2_CHIP_MATCH_HOST:
return match_chip == 0;
default:
return 0;
}
}
EXPORT_SYMBOL(v4l2_chip_match_host);
#if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 match_type, u32 match_chip) int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 match_type, u32 match_chip)
{ {
switch (match_type) { switch (match_type) {
...@@ -984,6 +996,7 @@ int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 match_type, u32 match_c ...@@ -984,6 +996,7 @@ int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 match_type, u32 match_c
return 0; return 0;
} }
} }
EXPORT_SYMBOL(v4l2_chip_match_i2c_client);
int v4l2_chip_ident_i2c_client(struct i2c_client *c, struct v4l2_chip_ident *chip, int v4l2_chip_ident_i2c_client(struct i2c_client *c, struct v4l2_chip_ident *chip,
u32 ident, u32 revision) u32 ident, u32 revision)
...@@ -1000,16 +1013,7 @@ int v4l2_chip_ident_i2c_client(struct i2c_client *c, struct v4l2_chip_ident *chi ...@@ -1000,16 +1013,7 @@ int v4l2_chip_ident_i2c_client(struct i2c_client *c, struct v4l2_chip_ident *chi
} }
return 0; return 0;
} }
EXPORT_SYMBOL(v4l2_chip_ident_i2c_client);
int v4l2_chip_match_host(u32 match_type, u32 match_chip)
{
switch (match_type) {
case V4L2_CHIP_MATCH_HOST:
return match_chip == 0;
default:
return 0;
}
}
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
...@@ -1038,6 +1042,8 @@ int v4l2_i2c_attach(struct i2c_adapter *adapter, int address, struct i2c_driver ...@@ -1038,6 +1042,8 @@ int v4l2_i2c_attach(struct i2c_adapter *adapter, int address, struct i2c_driver
} }
return err != -ENOMEM ? 0 : err; return err != -ENOMEM ? 0 : err;
} }
EXPORT_SYMBOL(v4l2_i2c_attach);
#endif
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
...@@ -1061,15 +1067,3 @@ EXPORT_SYMBOL(v4l2_ctrl_get_menu); ...@@ -1061,15 +1067,3 @@ EXPORT_SYMBOL(v4l2_ctrl_get_menu);
EXPORT_SYMBOL(v4l2_ctrl_query_menu); EXPORT_SYMBOL(v4l2_ctrl_query_menu);
EXPORT_SYMBOL(v4l2_ctrl_query_fill); EXPORT_SYMBOL(v4l2_ctrl_query_fill);
EXPORT_SYMBOL(v4l2_ctrl_query_fill_std); EXPORT_SYMBOL(v4l2_ctrl_query_fill_std);
EXPORT_SYMBOL(v4l2_chip_match_i2c_client);
EXPORT_SYMBOL(v4l2_chip_ident_i2c_client);
EXPORT_SYMBOL(v4l2_chip_match_host);
EXPORT_SYMBOL(v4l2_i2c_attach);
/*
* Local variables:
* c-basic-offset: 8
* End:
*/
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册