From 8644493ca12cad239c98d03941c3f5383e019c46 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Wed, 28 Oct 2026 23:16:22 +0300 Subject: [PATCH] hisi: probe ViSemi at 0x6c too, where a CV610 camera keeps its VS4388 A Hi3516CV610 camera with a VS4388 (OpenIPC/majestic#357) was not identified: the ViSemi probe only tries 0x20, and that board's vendor firmware addresses the sensor at 0x6c -- vs4388_i2c_init() does I2C_SLAVE_FORCE 0x36, and its sync registers carry dev_addr 0x6c. With no name, majestic has nothing to choose a sensor profile by. 0x6c is added after 0x20. It cannot be taken for another sensor: the ViSemi probe accepts only an exact 0x4388 at 0x3000, and the OmniVision probe, which also tries 0x6c, runs first and matches only its own IDs. --- src/hal/hisi/hal_hisi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hal/hisi/hal_hisi.c b/src/hal/hisi/hal_hisi.c index ac27a38..9ae86d0 100644 --- a/src/hal/hisi/hal_hisi.c +++ b/src/hal/hisi/hal_hisi.c @@ -29,7 +29,9 @@ static unsigned char gc_addrs[] = {0x6e, 0x52, 0x42, 0x78, 0}; static unsigned char superpix_addrs[] = {0x79, 0}; static unsigned char tp_addrs[] = {0x88, 0}; static unsigned char imagedesign_addrs[] = {0x60, 0}; -static unsigned char visemi_addrs[] = {0x20, 0}; +/* 0x6c: the VS4388 of a Hi3516CV610 camera, whose vendor firmware addresses + * it there (I2C_SLAVE_FORCE 0x36) and not at 0x20. */ +static unsigned char visemi_addrs[] = {0x20, 0x6c, 0}; static unsigned char cvsens_addrs[] = {0x6a, 0}; static sensor_addr_t my_possible_i2c_addrs[] = {