libnx/nx/include/switch/services/i2c.h
2019-10-20 01:13:39 +02:00

68 lines
2.1 KiB
C

/**
* @file i2c.h
* @brief I2C service IPC wrapper.
* @author SciresM
* @copyright libnx Authors
*/
#pragma once
#include "../types.h"
#include "../sf/service.h"
typedef enum {
I2cDevice_DebugPad = 0,
I2cDevice_TouchPanel = 1,
I2cDevice_Tmp451 = 2,
I2cDevice_Nct72 = 3,
I2cDevice_Alc5639 = 4,
I2cDevice_Max77620Rtc = 5,
I2cDevice_Max77620Pmic = 6,
I2cDevice_Max77621Cpu = 7,
I2cDevice_Max77621Gpu = 8,
I2cDevice_Bq24193 = 9,
I2cDevice_Max17050 = 10,
I2cDevice_Bm92t30mwv = 11,
I2cDevice_Ina226Vdd15v0Hb = 12,
I2cDevice_Ina226VsysCpuDs = 13,
I2cDevice_Ina226VsysGpuDs = 14,
I2cDevice_Ina226VsysDdrDs = 15,
I2cDevice_Ina226VsysAp = 16,
I2cDevice_Ina226VsysBlDs = 17,
I2cDevice_Bh1730 = 18,
I2cDevice_Ina226VsysCore = 19,
I2cDevice_Ina226Soc1V8 = 20,
I2cDevice_Ina226Lpddr1V8 = 21,
I2cDevice_Ina226Reg1V32 = 22,
I2cDevice_Ina226Vdd3V3Sys = 23,
I2cDevice_HdmiDdc = 24,
I2cDevice_HdmiScdc = 25,
I2cDevice_HdmiHdcp = 26,
I2cDevice_Fan53528 = 27,
I2cDevice_Max77812_3 = 28,
I2cDevice_Max77812_2 = 29,
I2cDevice_Ina226VddDdr0V6 = 30,
I2cDevice_Count,
} I2cDevice;
typedef struct {
Service s;
} I2cSession;
typedef enum {
I2cTransactionOption_Start = (1 << 0),
I2cTransactionOption_Stop = (1 << 1),
I2cTransactionOption_All = I2cTransactionOption_Start | I2cTransactionOption_Stop,
} I2cTransactionOption;
Result i2cInitialize(void);
void i2cExit(void);
Service* i2cGetServiceSession(void);
Result i2cOpenSession(I2cSession *out, I2cDevice dev);
Result i2csessionSendAuto(I2cSession *s, const void *buf, size_t size, I2cTransactionOption option);
Result i2csessionReceiveAuto(I2cSession *s, void *buf, size_t size, I2cTransactionOption option);
Result i2csessionExecuteCommandList(I2cSession *s, void *dst, size_t dst_size, const void *cmd_list, size_t cmd_list_size);
void i2csessionClose(I2cSession *s);