Skip to content

OV4689 driver build fails on VF2 6.12 branch #145

@MichaIng

Description

@MichaIng

When using CONFIG_VIN_SENSOR_OV4689 (enabled in starfive_jh7110_defconfig) on unmodified https://github.com/starfive-tech/linux/tree/JH7110_VisionFive2_6.12.y_devel branch:

  CC [M]  drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.o
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c: In function ‘ov4689_write_reg’:
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c:1569:15: error: implicit declaration of function ‘i2c_transfer’; did you mean ‘spi_sync_transfer’? [-Werror=implicit-function-declaration]
 1569 |         ret = i2c_transfer(client->adapter, &msg, 1);
      |               ^~~~~~~~~~~~
      |               spi_sync_transfer
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c: At top level:
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c:2979:1: warning: data definition has no type or storage class
 2979 | module_i2c_driver(ov4689_i2c_driver);
      | ^~~~~~~~~~~~~~~~~
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c:2979:1: error: type defaults to ‘int’ in declaration of ‘module_i2c_driver’ [-Werror=implicit-int]
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c:2979:1: warning: parameter names (without types) in function declaration
drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.c:2968:26: warning: ‘ov4689_i2c_driver’ defined but not used [-Wunused-variable]
 2968 | static struct i2c_driver ov4689_i2c_driver = {
      |                          ^~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[6]: *** [scripts/Makefile.build:229: drivers/media/platform/starfive/v4l2_driver/ov4689_mipi.o] Error 1
make[5]: *** [scripts/Makefile.build:478: drivers/media/platform/starfive] Error 2
make[4]: *** [scripts/Makefile.build:478: drivers/media/platform] Error 2
make[3]: *** [scripts/Makefile.build:478: drivers/media] Error 2
make[2]: *** [scripts/Makefile.build:478: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....

linux/i2c.h is included, but the structure is defined only within CONFIG_I2C check, which is not explicitly enabled in the default config. Adding CONFIG_I2C=y or CONFIG_I2C=m solves the issue. Seems the explicit depends/select for this is missing?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions