Lines Matching +full:ddc +full:- +full:i2c +full:- +full:bus
5 * exist (chip ID) and confirm that we get switched over into DDC mode
7 * set-up of connectors etc will be acknowledged and ignored.
12 * See the COPYING file in the top-level directory.
13 * SPDX-License-Identifier: GPL-2.0-or-later
18 #include "hw/i2c/i2c.h"
20 #include "hw/display/i2c-ddc.h"
47 bool ddc; member
60 VMSTATE_BOOL(ddc, sii9022_state),
65 static int sii9022_event(I2CSlave *i2c, enum i2c_event event) in sii9022_event() argument
67 sii9022_state *s = SII9022(i2c); in sii9022_event()
71 s->addr_byte = true; in sii9022_event()
80 return -1; in sii9022_event()
86 static uint8_t sii9022_rx(I2CSlave *i2c) in sii9022_rx() argument
88 sii9022_state *s = SII9022(i2c); in sii9022_rx()
91 switch (s->ptr) { in sii9022_rx()
93 if (s->ddc_req) { in sii9022_rx()
94 /* Acknowledge DDC bus request */ in sii9022_rx()
102 /* Something is cold-plugged in, no interrupts */ in sii9022_rx()
109 trace_sii9022_read_reg(s->ptr, res); in sii9022_rx()
110 s->ptr++; in sii9022_rx()
115 static int sii9022_tx(I2CSlave *i2c, uint8_t data) in sii9022_tx() argument
117 sii9022_state *s = SII9022(i2c); in sii9022_tx()
119 if (s->addr_byte) { in sii9022_tx()
120 s->ptr = data; in sii9022_tx()
121 s->addr_byte = false; in sii9022_tx()
125 switch (s->ptr) { in sii9022_tx()
128 s->ddc_req = true; in sii9022_tx()
130 s->ddc = true; in sii9022_tx()
131 /* Skip this finish since we just switched to DDC */ in sii9022_tx()
132 s->ddc_skip_finish = true; in sii9022_tx()
133 trace_sii9022_switch_mode("DDC"); in sii9022_tx()
136 s->ddc_req = false; in sii9022_tx()
137 s->ddc = false; in sii9022_tx()
145 trace_sii9022_write_reg(s->ptr, data); in sii9022_tx()
146 s->ptr++; in sii9022_tx()
155 s->ptr = 0; in sii9022_reset()
156 s->addr_byte = false; in sii9022_reset()
157 s->ddc_req = false; in sii9022_reset()
158 s->ddc_skip_finish = false; in sii9022_reset()
159 s->ddc = false; in sii9022_reset()
164 I2CBus *bus; in sii9022_realize() local
166 bus = I2C_BUS(qdev_get_parent_bus(dev)); in sii9022_realize()
167 i2c_slave_create_simple(bus, TYPE_I2CDDC, 0x50); in sii9022_realize()
175 k->event = sii9022_event; in sii9022_class_init()
176 k->recv = sii9022_rx; in sii9022_class_init()
177 k->send = sii9022_tx; in sii9022_class_init()
179 dc->realize = sii9022_realize; in sii9022_class_init()
180 dc->vmsd = &vmstate_sii9022; in sii9022_class_init()