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