summaryrefslogtreecommitdiff
path: root/include/driver/pse_ltc4291.h
blob: 4db9ac49982f33ba390e72e5aa59185fee8dea78 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* Copyright 2023 The ChromiumOS Authors
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

/*
 * The LTC4291 is a power over ethernet (PoE) power sourcing equipment (PSE)
 * controller.
 */

#include "i2c.h"
#include "timer.h"
#include "util.h"

#define LTC4291_I2C_ADDR 0x2C

#define LTC4291_REG_SUPEVN_COR 0x0B
#define LTC4291_REG_STATPWR 0x10
#define LTC4291_REG_STATPIN 0x11
#define LTC4291_REG_OPMD 0x12
#define LTC4291_REG_DISENA 0x13
#define LTC4291_REG_DETENA 0x14
#define LTC4291_REG_DETPB 0x18
#define LTC4291_REG_PWRPB 0x19
#define LTC4291_REG_RSTPB 0x1A
#define LTC4291_REG_ID 0x1B
#define LTC4291_REG_DEVID 0x43
#define LTC4291_REG_HPMD1 0x46
#define LTC4291_REG_HPMD2 0x4B
#define LTC4291_REG_HPMD3 0x50
#define LTC4291_REG_HPMD4 0x55
#define LTC4291_REG_LPWRPB 0x6E

#define LTC4291_FLD_STATPIN_AUTO BIT(0)
#define LTC4291_FLD_RSTPB_RSTALL BIT(4)

#define LTC4291_STATPWR_ON_PORT(port) (0x01 << (port))
#define LTC4291_DETENA_EN_PORT(port) (0x11 << (port))
#define LTC4291_DETPB_EN_PORT(port) (0x11 << (port))
#define LTC4291_PWRPB_OFF_PORT(port) (0x10 << (port))

#define LTC4291_OPMD_AUTO 0xFF
#define LTC4291_DISENA_ALL 0x0F
#define LTC4291_DETENA_ALL 0xFF
#define LTC4291_ID 0x64
#define LTC4291_DEVID 0x38
#define LTC4291_HPMD_MIN 0x00
#define LTC4291_HPMD_MAX 0xA8

#define LTC4291_PORT_MAX 4

#define LTC4291_RESET_DELAY_US (20 * MSEC)

#define I2C_PSE_READ(reg, data) \
	i2c_read8(I2C_PORT_PSE, LTC4291_I2C_ADDR, LTC4291_REG_##reg, (data))

#define I2C_PSE_WRITE(reg, data) \
	i2c_write8(I2C_PORT_PSE, LTC4291_I2C_ADDR, LTC4291_REG_##reg, (data))

extern const int pse_port_hpmd[LTC4291_PORT_MAX];