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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions