42#define LTC4296_REG_GFLTEV 0x02
43#define LTC4296_REG_GFLTMSK 0x03
44#define LTC4296_REG_GCAP 0x06
45#define LTC4296_REG_GIOST 0x07
46#define LTC4296_REG_GCMD 0x08
47#define LTC4296_REG_GCFG 0x09
48#define LTC4296_REG_GADCCFG 0x0A
49#define LTC4296_REG_GADCDAT 0x0B
50#define LTC4296_REG_P0EV 0x10
51#define LTC4296_REG_P0ST 0x12
52#define LTC4296_REG_P0CFG0 0x13
53#define LTC4296_REG_P0CFG1 0x14
54#define LTC4296_REG_P0ADCCFG 0x15
55#define LTC4296_REG_P0ADCDAT 0x16
56#define LTC4296_REG_P0SELFTEST 0x17
57#define LTC4296_REG_P1EV 0x20
58#define LTC4296_REG_P1ST 0x22
59#define LTC4296_REG_P1CFG0 0x23
60#define LTC4296_REG_P1CFG1 0x24
61#define LTC4296_REG_P1ADCCFG 0x25
62#define LTC4296_REG_P1ADCDAT 0x26
63#define LTC4296_REG_P1SELFTEST 0x27
64#define LTC4296_REG_P2EV 0x30
65#define LTC4296_REG_P2ST 0x32
66#define LTC4296_REG_P2CFG0 0x33
67#define LTC4296_REG_P2CFG1 0x34
68#define LTC4296_REG_P2ADCCFG 0x35
69#define LTC4296_REG_P2ADCDAT 0x36
70#define LTC4296_REG_P2SELFTEST 0x37
71#define LTC4296_REG_P3EV 0x40
72#define LTC4296_REG_P3ST 0x42
73#define LTC4296_REG_P3CFG0 0x43
74#define LTC4296_REG_P3CFG1 0x44
75#define LTC4296_REG_P3ADCCFG 0x45
76#define LTC4296_REG_P3ADCDAT 0x46
77#define LTC4296_REG_P3SELFTEST 0x47
78#define LTC4296_REG_P4EV 0x50
79#define LTC4296_REG_P4ST 0x52
80#define LTC4296_REG_P4CFG0 0x53
81#define LTC4296_REG_P4CFG1 0x54
82#define LTC4296_REG_P4ADCCFG 0x55
83#define LTC4296_REG_P4ADCDAT 0x56
84#define LTC4296_REG_P4SELFTEST 0x57
87#define LTC4296_UVLO_DIGITAL_MSK NO_OS_BIT(4)
88#define LTC4296_COMMAND_FAULT_MSK NO_OS_BIT(3)
89#define LTC4296_PEC_FAULT_MSK NO_OS_BIT(2)
90#define LTC4296_MEMORY_FAULT_MSK NO_OS_BIT(1)
91#define LTC4296_LOW_CKT_BRK_FAULT_MSK NO_OS_BIT(0)
94#define LTC4296_SCCP_SUPPORT_MSK NO_OS_BIT(6)
95#define LTC4296_WAKE_FWD_SUPPORT_MSK NO_OS_BIT(5)
96#define LTC4296_NUMPORTS_MSK NO_OS_GENMASK(4, 0)
99#define LTC4296_PG_OUT4_MSK NO_OS_BIT(8)
100#define LTC4296_PG_OUT3_MSK NO_OS_BIT(7)
101#define LTC4296_PG_OUT2_MSK NO_OS_BIT(6)
102#define LTC4296_PG_OUT1_MSK NO_OS_BIT(5)
103#define LTC4296_PG_OUT0_MSK NO_OS_BIT(4)
104#define LTC4296_PAD_AUTO_MSK NO_OS_BIT(3)
105#define LTC4296_PAD_WAKEUP_MSK NO_OS_BIT(2)
106#define LTC4296_PAD_WAKEUP_DRIVE_MSK NO_OS_BIT(1)
109#define LTC4296_SW_RESET_MSK NO_OS_GENMASK(15, 8)
110#define LTC4296_WRITE_PROTECT_MSK NO_OS_GENMASK(7, 0)
113#define LTC4296_MASK_LOWFAULT_MSK NO_OS_BIT(5)
114#define LTC4296_TLIM_DISABLE_MSK NO_OS_BIT(4)
115#define LTC4296_TLIM_TIMER_SLEEP_MSK NO_OS_GENMASK(3, 2)
116#define LTC4296_REFRESH_MSK NO_OS_BIT(1)
117#define LTC4296_SW_VIN_PGOOD_MSK NO_OS_BIT(0)
120#define LTC4296_GADC_SAMPLE_MODE_MSK NO_OS_GENMASK(6, 5)
121#define LTC4296_GADC_SEL_MSK NO_OS_GENMASK(4, 0)
124#define LTC4296_GADC_MISSED_MSK NO_OS_BIT(13)
125#define LTC4296_GADC_NEW_MSK NO_OS_BIT(12)
126#define LTC4296_GADC_MSK NO_OS_GENMASK(11, 0)
129#define LTC4296_VALID_SIGNATURE_MSK NO_OS_BIT(9)
130#define LTC4296_INVALID_SIGNATURE_MSK NO_OS_BIT(8)
131#define LTC4296_TOFF_TIMER_DONE_MSK NO_OS_BIT(7)
132#define LTC4296_OVERLOAD_DETECTED_ISLEEP_MSK NO_OS_BIT(6)
133#define LTC4296_OVERLOAD_DETECTED_IPOWERED_MSK NO_OS_BIT(5)
134#define LTC4296_MFVS_TIMEOUT_MSK NO_OS_BIT(4)
135#define LTC4296_TINRUSH_TIMER_DONE_MSK NO_OS_BIT(3)
136#define LTC4296_PD_WAKEUP_MSK NO_OS_BIT(2)
137#define LTC4296_LSNS_FORWARD_FAULT_MSK NO_OS_BIT(1)
138#define LTC4296_LSNS_REVERSE_FAULT_MSK NO_OS_BIT(0)
141#define LTC4296_DET_VHIGH_MSK NO_OS_BIT(13)
142#define LTC4296_DET_VLOW_MSK NO_OS_BIT(12)
143#define LTC4296_POWER_STABLE_HI_MSK NO_OS_BIT(11)
144#define LTC4296_POWER_STABLE_LO_MSK NO_OS_BIT(10)
145#define LTC4296_POWER_STABLE_MSK NO_OS_BIT(9)
146#define LTC4296_OVERLOAD_HELD_MSK NO_OS_BIT(8)
147#define LTC4296_PI_SLEEPING_MSK NO_OS_BIT(7)
148#define LTC4296_PI_PREBIASED_MSK NO_OS_BIT(6)
149#define LTC4296_PI_DETECTING_MSK NO_OS_BIT(5)
150#define LTC4296_PI_POWERED_MSK NO_OS_BIT(4)
151#define LTC4296_PI_DISCHARGE_EN_MSK NO_OS_BIT(3)
152#define LTC4296_PSE_STATUS_MSK NO_OS_GENMASK(2, 0)
155#define LTC4296_SW_INRUSH_MSK NO_OS_BIT(15)
156#define LTC4296_END_CLASSIFICATION_MSK NO_OS_BIT(14)
157#define LTC4296_SET_CLASSIFICATION_MODE_MSK NO_OS_BIT(13)
158#define LTC4296_DISABLE_DETECTION_PULLUP_MSK NO_OS_BIT(12)
159#define LTC4296_TDET_DISABLE_MSK NO_OS_BIT(11)
160#define LTC4296_FOLDBACK_DISABLE_MSK NO_OS_BIT(10)
161#define LTC4296_SOFT_START_DISABLE_MSK NO_OS_BIT(9)
162#define LTC4296_TOFF_TIMER_DISABLE_MSK NO_OS_BIT(8)
163#define LTC4296_TMFVDO_TIMER_DISABLE_MSK NO_OS_BIT(7)
164#define LTC4296_SW_PSE_READY_MSK NO_OS_BIT(6)
165#define LTC4296_SW_POWER_AVAILABLE_MSK NO_OS_BIT(5)
166#define LTC4296_UPSTREAM_WAKEUP_DISABLE_MSK NO_OS_BIT(4)
167#define LTC4296_DOWNSTREAM_WAKEUP_DISABLE_MSK NO_OS_BIT(3)
168#define LTC4296_SW_PSE_WAKEUP_MSK NO_OS_BIT(2)
169#define LTC4296_HW_EN_MASK_MSK NO_OS_BIT(1)
170#define LTC4296_SW_EN_MSK NO_OS_BIT(0)
173#define LTC4296_PREBIAS_OVERRIDE_GOOD_MSK NO_OS_BIT(8)
174#define LTC4296_TLIM_TIMER_TOP_MSK NO_OS_GENMASK(7, 6)
175#define LTC4296_TOD_TRESTART_TIMER_MSK NO_OS_GENMASK(5, 4)
176#define LTC4296_TINRUSH_TIMER_MSK NO_OS_GENMASK(3, 2)
177#define LTC4296_SIG_OVERRIDE_BAD_MSK NO_OS_BIT(1)
178#define LTC4296_SIG_OVERRIDE_GOOD_MSK NO_OS_BIT(0)
181#define LTC4296_MFVS_THRESHOLD_MSK NO_OS_GENMASK(7, 0)
184#define LTC4296_MISSED_MSK NO_OS_BIT(13)
185#define LTC4296_NEW_MSK NO_OS_BIT(12)
186#define LTC4296_SOURCE_CURRENT_MSK NO_OS_GENMASK(11, 0)
189#define LTC4296_SPI_READ 0x01
190#define LTC4296_SPI_WRITE 0x00
192#define LTC4296_RESET_CODE 0x73
193#define LTC4296_UNLOCK_KEY 0x05
194#define LTC4296_LOCK_KEY 0xA0
196#define LTC4296_ADC_OFFSET 2049
198#define LTC4296_VGAIN 35230 / 1000
199#define LTC4296_IGAIN 1 / 10
201#define LTC4296_VMAX 1
202#define LTC4296_VMIN 0
204#define LTC4296_MAX_PORTS 5
383 uint16_t *port_events);
391 uint16_t *port_status);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int ltc4296_set_gadc_vin(struct ltc4296_dev *dev)
Set the global ADC to measure voltage.
Definition ltc4296.c:323
int ltc4296_chk_port_events(struct ltc4296_dev *dev, enum ltc4296_port ltc4296_port)
int ltc4296_read_port_events(struct ltc4296_dev *dev, enum ltc4296_port port_no, uint16_t *port_events)
Read Port Events.
Definition ltc4296.c:418
int ltc4296_read_port_adc(struct ltc4296_dev *dev, enum ltc4296_port port_no, int *port_i_out_ma)
Read port ADC.
Definition ltc4296.c:610
int ltc4296_reset(struct ltc4296_dev *dev)
Software reset.
Definition ltc4296.c:158
int ltc4296_is_locked(struct ltc4296_dev *dev, enum ltc4296_state *state)
Check device state.
Definition ltc4296.c:271
int ltc4296_unlock(struct ltc4296_dev *dev)
Device unlock.
Definition ltc4296.c:256
int ltc4296_init(struct ltc4296_dev **device, struct ltc4296_init_param *init_param)
Device initialization.
Definition ltc4296.c:1016
int ltc4296_read_global_faults(struct ltc4296_dev *dev, uint16_t *g_events)
Read global faults.
Definition ltc4296.c:240
int ltc4296_disable_gadc(struct ltc4296_dev *dev)
Disable the global ADC.
Definition ltc4296.c:395
int ltc4296_force_port_pwr(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Force port to power mode.
Definition ltc4296.c:774
int ltc4296_get_port_addr(enum ltc4296_port port_no, enum ltc4296_port_reg_offset_e port_offset, uint8_t *port_addr)
Get port address.
Definition ltc4296.c:183
int ltc4296_port_pwr_available(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Set port is able to source power.
Definition ltc4296.c:797
int ltc4296_set_port_mfvs(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Set port to maintain full voltage signature.
Definition ltc4296.c:721
ltc4296_port_reg_offset_e
Device Port Register offsets.
Definition ltc4296.h:298
@ LTC_PORT_CFG1
Definition ltc4296.h:302
@ LTC_PORT_ADCCFG
Definition ltc4296.h:303
@ LTC_PORT_STATUS
Definition ltc4296.h:300
@ LTC_PORT_CFG0
Definition ltc4296.h:301
@ LTC_PORT_EVENTS
Definition ltc4296.h:299
@ LTC_PORT_ADCDAT
Definition ltc4296.h:304
@ LTC_PORT_SELFTEST
Definition ltc4296.h:305
int ltc4296_print_port_events(enum ltc4296_port port_no, uint16_t port_events)
Print port events.
Definition ltc4296.c:866
int ltc4296_is_port_disabled(struct ltc4296_dev *dev, enum ltc4296_port port_no, enum ltc4296_port_status *port_chk)
Check if port is enabled/disabled.
Definition ltc4296.c:486
int ltc4296_port_en(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Enable specific port.
Definition ltc4296.c:673
int ltc4296_read_gadc(struct ltc4296_dev *dev, int *port_voltage_mv)
Read global ADC.
Definition ltc4296.c:297
int ltc4296_print_global_faults(uint16_t g_events)
Print global faults.
Definition ltc4296.c:844
adi_ltc_result
Device Result Codes.
Definition ltc4296.h:311
@ ADI_LTC_TEST_FAILED
Definition ltc4296.h:331
@ ADI_LTC_SCCP_PD_PRESENT
Definition ltc4296.h:318
@ ADI_LTC_INVALID_ADC_PORT_CURRENT
Definition ltc4296.h:328
@ ADI_LTC_TEST_COMPLETE
Definition ltc4296.h:329
@ ADI_LTC_SCCP_PD_NOT_PRESENT
Definition ltc4296.h:316
@ ADI_LTC_SCCP_PD_LINE_NOT_LOW
Definition ltc4296.h:323
@ ADI_LTC_DISCONTINUE_SCCP
Definition ltc4296.h:313
@ ADI_LTC_SCCP_COMPLETE
Definition ltc4296.h:314
@ ADI_LTC_SCCP_PD_CLASS_COMPATIBLE
Definition ltc4296.h:319
@ ADI_LTC_SCCP_PD_CLASS_NOT_SUPPORTED
Definition ltc4296.h:320
@ ADI_LTC_INVALID_ADC_VOLTAGE
Definition ltc4296.h:327
@ ADI_LTC_SCCP_PD_CLASS_NOT_COMPATIBLE
Definition ltc4296.h:321
@ ADI_LTC_INVALID_VIN
Definition ltc4296.h:332
@ ADI_LTC_DISCONTINUE_APL
Definition ltc4296.h:326
@ ADI_LTC_SUCCESS
Definition ltc4296.h:312
@ ADI_LTC_SCCP_PD_CRC_FAILED
Definition ltc4296.h:324
@ ADI_LTC_SCCP_PD_RES_INVALID
Definition ltc4296.h:317
@ ADI_LTC_SCCP_PD_DETECTION_FAILED
Definition ltc4296.h:315
@ ADI_LTC_APL_COMPLETE
Definition ltc4296.h:325
@ ADI_LTC_DISCONTINUE_TEST
Definition ltc4296.h:330
@ ADI_LTC_SCCP_PD_LINE_NOT_HIGH
Definition ltc4296.h:322
ltc4296_port_status
Device Port Status.
Definition ltc4296.h:245
@ LTC_PORT_DISABLED
Definition ltc4296.h:246
@ LTC_PORT_ENABLED
Definition ltc4296.h:247
int ltc4296_clear_global_faults(struct ltc4296_dev *dev)
Clear global faults.
Definition ltc4296.c:200
int ltc4296_reg_write(struct ltc4296_dev *dev, uint8_t reg, uint16_t data)
Register Write.
Definition ltc4296.c:138
int ltc4296_is_vin_valid(struct ltc4296_dev *dev, int port_vin_mv, enum ltc4296_board_class ltcboard_class, bool *vin_valid)
Check if input voltage is valid.
Definition ltc4296.c:349
int ltc4296_port_en_and_classification(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Enable specific port and classify.
Definition ltc4296.c:697
int ltc4296_set_port_pwr(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Set port to power mode.
Definition ltc4296.c:750
int ltc4296_is_port_pwr_stable(struct ltc4296_dev *dev, enum ltc4296_port port_no, bool *pwr_status)
Check if port has stable power.
Definition ltc4296.c:576
ltc4296_port
Device Port Numbers.
Definition ltc4296.h:233
@ LTC_NO_PORT
Definition ltc4296.h:239
@ LTC_PORT2
Definition ltc4296.h:236
@ LTC_PORT1
Definition ltc4296.h:235
@ LTC_PORT3
Definition ltc4296.h:237
@ LTC_PORT0
Definition ltc4296.h:234
@ LTC_PORT4
Definition ltc4296.h:238
int ltc4296_is_vout_valid(struct ltc4296_dev *dev, int port_vout_mv, enum ltc4296_board_class ltcboard_class, bool *vout_valid)
Check if output voltage is valid.
Definition ltc4296.c:373
int ltc4296_reg_read(struct ltc4296_dev *dev, uint8_t reg, uint16_t *data)
Register Read.
Definition ltc4296.c:111
int ltc4296_clear_ckt_breaker(struct ltc4296_dev *dev)
Clear circuit break faults.
Definition ltc4296.c:216
int ltc4296_read_port_status(struct ltc4296_dev *dev, enum ltc4296_port port_no, uint16_t *port_status)
Read Port Status.
Definition ltc4296.c:463
ltc4296_state
Device State.
Definition ltc4296.h:225
@ LTC_LOCKED
Definition ltc4296.h:227
@ LTC_UNLOCKED
Definition ltc4296.h:226
int ltc4296_port_disable(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Check if port is disabled.
Definition ltc4296.c:519
int ltc4296_is_port_deliver_pwr(struct ltc4296_dev *dev, enum ltc4296_port port_no, enum ltc4296_pse_status *pwr_status)
Check if port delivers power.
Definition ltc4296.c:541
int ltc4296_set_gadc_vout(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Configure Global ADC to read output voltage.
Definition ltc4296.c:822
int ltc4296_clear_port_events(struct ltc4296_dev *dev, enum ltc4296_port port_no)
Clear Port Events.
Definition ltc4296.c:440
ltc4296_pse_status
Device PSE Status.
Definition ltc4296.h:253
@ LTC_PSE_STATUS_SEARCHING
Definition ltc4296.h:257
@ LTC_PSE_STATUS_PREPDET
Definition ltc4296.h:260
@ LTC_PSE_STATUS_ERROR
Definition ltc4296.h:258
@ LTC_PSE_STATUS_DISABLED
Definition ltc4296.h:254
@ LTC_PSE_STATUS_UNKNOWN
Definition ltc4296.h:261
@ LTC_PSE_STATUS_SLEEPING
Definition ltc4296.h:255
@ LTC_PSE_STATUS_DELIVERING
Definition ltc4296.h:256
@ LTC_PSE_STATUS_IDLE
Definition ltc4296.h:259
ltc4296_board_class
Board Classes.
Definition ltc4296.h:267
@ APL_CLASSA_NOAUTONEG
Definition ltc4296.h:275
@ APL_CLASSC
Definition ltc4296.h:276
@ SPOE_CLASS10
Definition ltc4296.h:268
@ SPOE_OFF
Definition ltc4296.h:280
@ APL_CLASSA_OLD_DEMO
Definition ltc4296.h:279
@ SPOE_CLASS14
Definition ltc4296.h:272
@ SPOE_CLASS12
Definition ltc4296.h:270
@ SPOE_CLASS13
Definition ltc4296.h:271
@ SPOE_CLASS11
Definition ltc4296.h:269
@ PRODUCTION_DATA_TEST
Definition ltc4296.h:281
@ DEBUGMODE
Definition ltc4296.h:283
@ SPOE_CLASS15
Definition ltc4296.h:273
@ PRODUCTION_POWER_TEST
Definition ltc4296.h:278
@ APL_CLASSA
Definition ltc4296.h:274
@ APL_CLASS3
Definition ltc4296.h:277
@ RESERVED
Definition ltc4296.h:282
int ltc4296_remove(struct ltc4296_dev *dev)
Free allocated resources.
Definition ltc4296.c:1069
int ltc4296_chk_global_events(struct ltc4296_dev *dev)
Check global events.
Definition ltc4296.c:911
int ltc4296_port_prebias(struct ltc4296_dev *dev, enum ltc4296_port port_no, enum ltc4296_config mode)
Stimulate valid wake-up signature for a port.
Definition ltc4296.c:646
ltc4296_config
Device Configuration Modes.
Definition ltc4296.h:289
@ LTC_CFG_RESET
Definition ltc4296.h:292
@ LTC_CFG_APL_MODE
Definition ltc4296.h:291
@ LTC_CFG_SCCP_MODE
Definition ltc4296.h:290
Header file of GPIO Interface.
Header file of SPI Interface.
Header file of utility functions.
Definition ad9361_util.h:63
Device Structure.
Definition ltc4296.h:211
struct no_os_spi_desc * spi_desc
Definition ltc4296.h:212
Initialization Structure.
Definition ltc4296.h:218
struct no_os_spi_init_param * spi_init
Definition ltc4296.h:219
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128
enum no_os_spi_mode mode
Definition no_os_spi.h:136