1 #include "bflb_cks.h"
2 #include "hardware/cks_reg.h"
3 
bflb_cks_reset(struct bflb_device_s * dev)4 void 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)15 void 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)23 uint16_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