summaryrefslogtreecommitdiffstats
path: root/src/lib/dp_aux.c
blob: 6a925f13f641b9bc6a55c0c0fcf1434468def419 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* SPDX-License-Identifier: GPL-2.0-only */

#include <dp_aux.h>

bool dp_aux_request_is_write(enum aux_request request)
{
	switch (request) {
	case I2C_RAW_WRITE_AND_STOP:
	case I2C_RAW_WRITE:
	case DPCD_WRITE:
		return true;
	default:
		return false;
	}
}

enum i2c_over_aux dp_get_aux_cmd(enum aux_request request, uint32_t remaining_after_this)
{
	switch (request) {
	case I2C_RAW_WRITE_AND_STOP:
		if (!remaining_after_this)
			return I2C_OVER_AUX_WRITE_MOT_0;
		__fallthrough;
	case I2C_RAW_WRITE:
		return I2C_OVER_AUX_WRITE_MOT_1;
	case I2C_RAW_READ_AND_STOP:
		if (!remaining_after_this)
			return I2C_OVER_AUX_READ_MOT_0;
		__fallthrough;
	case I2C_RAW_READ:
		return I2C_OVER_AUX_READ_MOT_1;
	case DPCD_WRITE:
		return NATIVE_AUX_WRITE;
	case DPCD_READ:
	default:
		return NATIVE_AUX_READ;
	}
}