1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* |
3 | * Copyright 2011 Florian Tobias Schandinat <FlorianSchandinat@gmx.de> |
4 | */ |
5 | /* |
6 | * driver for VIA VT1632 DVI Transmitter |
7 | */ |
8 | |
9 | #include <linux/slab.h> |
10 | #include "via_aux.h" |
11 | |
12 | |
13 | static const char *name = "VT1632 DVI Transmitter" ; |
14 | |
15 | |
16 | static void probe(struct via_aux_bus *bus, u8 addr) |
17 | { |
18 | struct via_aux_drv drv = { |
19 | .bus = bus, |
20 | .addr = addr, |
21 | .name = name}; |
22 | /* check vendor id and device id */ |
23 | const u8 id[] = {0x06, 0x11, 0x92, 0x31}, len = ARRAY_SIZE(id); |
24 | u8 tmp[ARRAY_SIZE(id)]; |
25 | |
26 | if (!via_aux_read(drv: &drv, start: 0x00, buf: tmp, len) || memcmp(p: id, q: tmp, size: len)) |
27 | return; |
28 | |
29 | printk(KERN_INFO "viafb: Found %s at address 0x%x\n" , name, addr); |
30 | via_aux_add(drv: &drv); |
31 | } |
32 | |
33 | void via_aux_vt1632_probe(struct via_aux_bus *bus) |
34 | { |
35 | u8 i; |
36 | |
37 | for (i = 0x08; i <= 0x0F; i++) |
38 | probe(bus, addr: i); |
39 | } |
40 | |