1 #include "bflb_cks.h" 2 #include "hardware/cks_reg.h" 3 bflb_cks_reset(struct bflb_device_s * dev)4void bflb_cks_reset(struct bflb_device_s *dev) 5 { 6 uint32_t regval; 7 uint32_t reg_base; 8 9 reg_base = dev->reg_base; 10 regval = getreg32(reg_base + CKS_CONFIG_OFFSET); 11 regval |= CKS_CR_CKS_CLR; 12 putreg32(regval, reg_base + CKS_CONFIG_OFFSET); 13 } 14 bflb_cks_set_endian(struct bflb_device_s * dev,uint8_t endian)15void bflb_cks_set_endian(struct bflb_device_s *dev, uint8_t endian) 16 { 17 uint32_t reg_base; 18 19 reg_base = dev->reg_base; 20 putreg32(endian << 1, reg_base + CKS_CONFIG_OFFSET); 21 } 22 bflb_cks_compute(struct bflb_device_s * dev,uint8_t * data,uint32_t length)23uint16_t bflb_cks_compute(struct bflb_device_s *dev, uint8_t *data, uint32_t length) 24 { 25 uint32_t reg_base; 26 uint32_t i; 27 28 reg_base = dev->reg_base; 29 for (i = 0; i < length; i++) { 30 putreg32(data[i], reg_base + CKS_DATA_IN_OFFSET); 31 } 32 33 return ((uint16_t)(getreg32(reg_base + CKS_OUT_OFFSET) & 0xffff)); 34 } 35