58 lines
2.0 KiB
C
58 lines
2.0 KiB
C
|
#ifndef __DIALOG_DCOMMON_H
|
||
|
#define __DIALOG_DCOMMON_H
|
||
|
|
||
|
typedef UInt8 eventRegisters[kDIALOG_EVENT_COUNT];
|
||
|
typedef UInt8 statusRegisters[kDIALOG_STATUS_COUNT];
|
||
|
typedef UInt8 faultRegisters[kDIALOG_FAULTLOG_COUNT];
|
||
|
|
||
|
// Test whether any of the 'mask' bits is set in 'registers'
|
||
|
static inline bool REGISTER_TEST_MASK(const UInt8 *events, const UInt8 *mask, unsigned int count) {
|
||
|
for (unsigned int i = 0 ; i < count; i++) {
|
||
|
if ((events[i] & mask[i]) != 0) return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
#define EVENT_FLAG_MAKE(byte,bit) ((UInt16)((byte)&0xff)<<8 | ((bit)&0xff))
|
||
|
#define EVENT_FLAG_GET_BYTE(flag) ((UInt16)flag>>8)
|
||
|
#define EVENT_FLAG_GET_BIT(flag) (flag&0xff)
|
||
|
|
||
|
/* return a UInt16 if mismatch, which should warn you */
|
||
|
#define EVENT_FLAG_GET_BIT_FOR_BYTE(flag,byte) \
|
||
|
(((flag) & 0xff) | (EVENT_FLAG_GET_BYTE(flag)==(byte) ? 0 : 0xffff))
|
||
|
|
||
|
#define EVENT_REGISTERS_GET_BYTE(registers,flag) ((registers)[EVENT_FLAG_GET_BYTE(flag)])
|
||
|
#define EVENT_FLAG_TEST(registers,flag) ((EVENT_REGISTERS_GET_BYTE(registers,flag)&EVENT_FLAG_GET_BIT(flag)) != 0)
|
||
|
#define EVENT_REGISTER_TEST_MASK(registers,mask) REGISTER_TEST_MASK(registers,mask,kDIALOG_EVENT_COUNT)
|
||
|
|
||
|
#define STATUS_FLAG_MAKE EVENT_FLAG_MAKE
|
||
|
#define STATUS_FLAG_TEST EVENT_FLAG_TEST
|
||
|
#define STATUS_REGISTER_TEST_MASK(registers,mask) REGISTER_TEST_MASK(registers,mask,kDIALOG_STATUS_COUNT)
|
||
|
|
||
|
#define FAULTLOG_FLAG_MAKE EVENT_FLAG_MAKE
|
||
|
#define FAULTLOG_FLAG_TEST EVENT_FLAG_TEST
|
||
|
#define FAULTLOG_REGISTER_TEST_MASK(registers,mask) REGISTER_TEST_MASK(registers,mask,kDIALOG_FAULTLOG_COUNT)
|
||
|
|
||
|
enum {
|
||
|
kDIALOG_NOTEXIST_MASK = EVENT_FLAG_MAKE(0, 0)
|
||
|
};
|
||
|
|
||
|
struct ldo_params {
|
||
|
UInt16 minv;
|
||
|
UInt8 step;
|
||
|
UInt8 maxs;
|
||
|
UInt8 stepmask;
|
||
|
UInt8 bypass;
|
||
|
UInt16 ldoreg;
|
||
|
UInt16 actreg;
|
||
|
UInt8 actmask;
|
||
|
};
|
||
|
|
||
|
int pmu_uvwarn_config(int dev, uint32_t thresholdMV);
|
||
|
int pmu_set_data(int dev, uint16_t reg, uint8_t byte, bool do_confirm);
|
||
|
int pmu_get_data(int dev, uint16_t reg, uint8_t *byte);
|
||
|
void pmu_check_events(bool *powersupply_change_event, bool *button_event, bool *other_wake_event);
|
||
|
void pmu_read_events(eventRegisters data);
|
||
|
|
||
|
#endif
|