4 #include "hw/i2c/smbus_master.h"
6 #define PM_SMBUS_MAX_MSG_SIZE 32
8 typedef struct PMSMBus
{
18 uint8_t smb_data
[PM_SMBUS_MAX_MSG_SIZE
];
23 /* Set by pm_smbus.c */
24 void (*reset
)(struct PMSMBus
*s
);
26 /* Set by the user. */
28 void (*set_irq
)(struct PMSMBus
*s
, bool enabled
);
31 /* Internally used by pm_smbus. */
33 /* Set on block transfers after the last byte has been read, so the
34 INTR bit can be set at the right time. */
37 /* Set during an I2C block read, so we know how to handle data. */
38 bool in_i2c_block_read
;
40 /* Used to work around a bug in AMIBIOS, see smb_transaction_start() */
41 bool start_transaction_on_status_read
;
44 void pm_smbus_init(DeviceState
*parent
, PMSMBus
*smb
, bool force_aux_blk
);
47 * For backwards compatibility on migration, older versions don't have
48 * working migration for pm_smbus, this lets us ignore the migrations
49 * for older machine versions.
51 bool pm_smbus_vmstate_needed(void);
53 extern const VMStateDescription pmsmb_vmstate
;
55 #endif /* PM_SMBUS_H */