Morse Micro IoT SDK  2.10.4
chip_cfg.c
1/*
2 * Copyright 2025 Morse Micro
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#include "chip_cfg.h"
8#include "sdio_spi.h"
9
10#include "mmutils.h"
11
12const uint32_t mm6108_valid_chip_ids[] = {
13 0x206,
14 0x306,
15 0x406,
16};
17
18static int mm6108_gpio_set_oe(uint8_t gpio_num, bool oe)
19{
20 if (oe)
21 {
22 return sdio_spi_set_bits_le32(0x10012008, 1ul << gpio_num);
23 }
24 else
25 {
26 return sdio_spi_clear_bits_le32(0x10012008, 1ul << gpio_num);
27 }
28}
29
30static int mm6108_gpio_set_value(uint8_t gpio_num, bool value)
31{
32 if (value)
33 {
34 return sdio_spi_set_bits_le32(0x1001200c, 1ul << gpio_num);
35 }
36 else
37 {
38 return sdio_spi_clear_bits_le32(0x1001200c, 1ul << gpio_num);
39 }
40}
41
42const uint32_t mm8108_valid_chip_ids[] = {
43 0x609,
44 0x709,
45 0x809,
46};
47
48static int mm8108_gpio_set_oe(uint8_t gpio_num, bool oe)
49{
50 if (oe)
51 {
52 return sdio_spi_write_le32(0x1360, 1ul << gpio_num);
53 }
54 else
55 {
56 return sdio_spi_write_le32(0x1364, 1ul << gpio_num);
57 }
58}
59
60static int mm8108_gpio_set_value(uint8_t gpio_num, bool value)
61{
62 if (value)
63 {
64 return sdio_spi_write_le32(0x1368, 1ul << gpio_num);
65 }
66 else
67 {
68 return sdio_spi_write_le32(0x136c, 1ul << gpio_num);
69 }
70}
71
72const struct chip_cfg chip_cfgs[] = {
73 {
74 .name = "mm6108",
75 .reg_chip_id = 0x10054d20,
76 .gpio_set_oe = mm6108_gpio_set_oe,
77 .gpio_set_value = mm6108_gpio_set_value,
78 .busy_gpio_num = 0,
79 .valid_chip_ids = mm6108_valid_chip_ids,
80 .n_valid_chip_ids = MM_ARRAY_COUNT(mm6108_valid_chip_ids),
81 },
82 {
83 .name = "mm8108",
84 .reg_chip_id = 0x00002d20,
85 .gpio_set_oe = mm8108_gpio_set_oe,
86 .gpio_set_value = mm8108_gpio_set_value,
87 .busy_gpio_num = 2,
88 .valid_chip_ids = mm8108_valid_chip_ids,
89 .n_valid_chip_ids = MM_ARRAY_COUNT(mm8108_valid_chip_ids),
90 },
91};
92
93const size_t n_chip_cfgs = MM_ARRAY_COUNT(chip_cfgs);
#define MM_ARRAY_COUNT(_a)
Return the number of elements in the given array.
Definition: mmutils.h:111
Chip configuration data structure.
Definition: chip_cfg.h:15
const char * name
Chip name.
Definition: chip_cfg.h:17