Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: Add ADV7610 support for adv7604 driver.

ADV7610 is another HDMI receiver chip, very similar to
the ADV7611.

Also: print chip names in upper case.
Fix an error message claiming that no ADV761x has been found,
while in reality a chip different than requested (though still
supported) may have been found.
Tested on TinyRex BaseBoard Lite.

Signed-off-by: Krzysztof Hałasa <khalasa@piap.pl>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

authored by

Krzysztof Hałasa and committed by
Mauro Carvalho Chehab
c2c88a07 901a52c4

+9 -6
+9 -6
drivers/media/i2c/adv7604.c
··· 41 41 module_param(debug, int, 0644); 42 42 MODULE_PARM_DESC(debug, "debug level (0-2)"); 43 43 44 - MODULE_DESCRIPTION("Analog Devices ADV7604 video decoder driver"); 44 + MODULE_DESCRIPTION("Analog Devices ADV7604/10/11/12 video decoder driver"); 45 45 MODULE_AUTHOR("Hans Verkuil <hans.verkuil@cisco.com>"); 46 46 MODULE_AUTHOR("Mats Randgaard <mats.randgaard@cisco.com>"); 47 47 MODULE_LICENSE("GPL"); ··· 77 77 78 78 enum adv76xx_type { 79 79 ADV7604, 80 - ADV7611, 80 + ADV7611, // including ADV7610 81 81 ADV7612, 82 82 }; 83 83 ··· 3176 3176 3177 3177 static const struct i2c_device_id adv76xx_i2c_id[] = { 3178 3178 { "adv7604", (kernel_ulong_t)&adv76xx_chip_info[ADV7604] }, 3179 + { "adv7610", (kernel_ulong_t)&adv76xx_chip_info[ADV7611] }, 3179 3180 { "adv7611", (kernel_ulong_t)&adv76xx_chip_info[ADV7611] }, 3180 3181 { "adv7612", (kernel_ulong_t)&adv76xx_chip_info[ADV7612] }, 3181 3182 { } ··· 3184 3183 MODULE_DEVICE_TABLE(i2c, adv76xx_i2c_id); 3185 3184 3186 3185 static const struct of_device_id adv76xx_of_id[] __maybe_unused = { 3186 + { .compatible = "adi,adv7610", .data = &adv76xx_chip_info[ADV7611] }, 3187 3187 { .compatible = "adi,adv7611", .data = &adv76xx_chip_info[ADV7611] }, 3188 3188 { .compatible = "adi,adv7612", .data = &adv76xx_chip_info[ADV7612] }, 3189 3189 { } ··· 3502 3500 return -ENODEV; 3503 3501 } 3504 3502 if (val != 0x68) { 3505 - v4l2_err(sd, "not an adv7604 on address 0x%x\n", 3506 - client->addr << 1); 3503 + v4l2_err(sd, "not an ADV7604 on address 0x%x\n", 3504 + client->addr << 1); 3507 3505 return -ENODEV; 3508 3506 } 3509 3507 break; ··· 3527 3525 val |= val2; 3528 3526 if ((state->info->type == ADV7611 && val != 0x2051) || 3529 3527 (state->info->type == ADV7612 && val != 0x2041)) { 3530 - v4l2_err(sd, "not an adv761x on address 0x%x\n", 3531 - client->addr << 1); 3528 + v4l2_err(sd, "not an %s on address 0x%x\n", 3529 + state->info->type == ADV7611 ? "ADV7610/11" : "ADV7612", 3530 + client->addr << 1); 3532 3531 return -ENODEV; 3533 3532 } 3534 3533 break;