1*a48b9003SAbdelkader Boudih /* 2*a48b9003SAbdelkader Boudih * Copyright (c) 2026 Abdelkader Boudih <freebsd@seuros.com> 3*a48b9003SAbdelkader Boudih * 4*a48b9003SAbdelkader Boudih * SPDX-License-Identifier: BSD-2-Clause 5*a48b9003SAbdelkader Boudih */ 6*a48b9003SAbdelkader Boudih 7*a48b9003SAbdelkader Boudih #ifndef _DEV_ASMC_ASMCMMIO_H_ 8*a48b9003SAbdelkader Boudih #define _DEV_ASMC_ASMCMMIO_H_ 9*a48b9003SAbdelkader Boudih 10*a48b9003SAbdelkader Boudih struct asmc_softc; 11*a48b9003SAbdelkader Boudih 12*a48b9003SAbdelkader Boudih /* 13*a48b9003SAbdelkader Boudih * MMIO register offsets. 14*a48b9003SAbdelkader Boudih */ 15*a48b9003SAbdelkader Boudih #define ASMC_MMIO_DATA 0x0000 16*a48b9003SAbdelkader Boudih #define ASMC_MMIO_KEY_NAME 0x0078 17*a48b9003SAbdelkader Boudih #define ASMC_MMIO_DATA_LEN 0x007D 18*a48b9003SAbdelkader Boudih #define ASMC_MMIO_SMC_ID 0x007E 19*a48b9003SAbdelkader Boudih #define ASMC_MMIO_CMD 0x007F 20*a48b9003SAbdelkader Boudih #define ASMC_MMIO_STATUS 0x4005 21*a48b9003SAbdelkader Boudih #define ASMC_MMIO_MIN_SIZE 0x4006 22*a48b9003SAbdelkader Boudih #define ASMC_MMIO_STATUS_READY 0x20 /* Bit 5 */ 23*a48b9003SAbdelkader Boudih #define ASMC_MMIO_MAX_WAIT 24 24*a48b9003SAbdelkader Boudih 25*a48b9003SAbdelkader Boudih /* 26*a48b9003SAbdelkader Boudih * T2-specific keys. 27*a48b9003SAbdelkader Boudih */ 28*a48b9003SAbdelkader Boudih #define ASMC_KEY_LDKN "LDKN" /* RO; 1 byte, firmware version */ 29*a48b9003SAbdelkader Boudih #define ASMC_KEY_BCLM "BCLM" /* RW; 1 byte, battery charge limit 0-100 */ 30*a48b9003SAbdelkader Boudih #define ASMC_KEY_FANMANUAL_T2 "F%dMd" /* RW; 1 byte per fan (T2) */ 31*a48b9003SAbdelkader Boudih 32*a48b9003SAbdelkader Boudih /* 33*a48b9003SAbdelkader Boudih * MMIO backend functions. 34*a48b9003SAbdelkader Boudih */ 35*a48b9003SAbdelkader Boudih int asmc_mmio_probe(device_t dev); 36*a48b9003SAbdelkader Boudih void asmc_mmio_detach(device_t dev, struct asmc_softc *sc); 37*a48b9003SAbdelkader Boudih int asmc_mmio_key_read(device_t dev, const char *key, 38*a48b9003SAbdelkader Boudih uint8_t *buf, uint8_t len); 39*a48b9003SAbdelkader Boudih int asmc_mmio_key_write(device_t dev, const char *key, 40*a48b9003SAbdelkader Boudih uint8_t *buf, uint8_t len); 41*a48b9003SAbdelkader Boudih int asmc_mmio_key_getinfo(device_t dev, const char *key, 42*a48b9003SAbdelkader Boudih uint8_t *len, char *type); 43*a48b9003SAbdelkader Boudih int asmc_mmio_key_getbyindex(device_t dev, int index, char *key); 44*a48b9003SAbdelkader Boudih 45*a48b9003SAbdelkader Boudih /* 46*a48b9003SAbdelkader Boudih * IEEE 754 float <-> uint32 conversion for T2 fan RPM values. 47*a48b9003SAbdelkader Boudih */ 48*a48b9003SAbdelkader Boudih uint32_t asmc_float_to_u32(uint32_t d); 49*a48b9003SAbdelkader Boudih uint32_t asmc_u32_to_float(uint32_t d); 50*a48b9003SAbdelkader Boudih 51*a48b9003SAbdelkader Boudih /* 52*a48b9003SAbdelkader Boudih * T2-specific sysctls. 53*a48b9003SAbdelkader Boudih */ 54*a48b9003SAbdelkader Boudih int asmc_bclm_sysctl(SYSCTL_HANDLER_ARGS); 55*a48b9003SAbdelkader Boudih 56*a48b9003SAbdelkader Boudih #endif /* _DEV_ASMC_ASMCMMIO_H_ */ 57