Skip to content

Commit 30e0d3b

Browse files
JordanYateskartben
authored andcommitted
disk: sdmmc: runtime structure initialisation
Move all initialisation of the data struct to the init function to avoid creating the very large `struct sd_card` in `.bss`. Signed-off-by: Jordan Yates <[email protected]>
1 parent 9eb036c commit 30e0d3b

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

drivers/disk/sdmmc_subsys.c

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ enum sd_status {
2121

2222
struct sdmmc_config {
2323
const struct device *host_controller;
24+
const char *name;
2425
};
2526

2627
struct sdmmc_data {
2728
struct sd_card card;
2829
enum sd_status status;
29-
struct disk_info *disk_info;
30+
struct disk_info disk_info;
3031
};
3132

3233

@@ -113,27 +114,24 @@ static const struct disk_operations sdmmc_disk_ops = {
113114

114115
static int disk_sdmmc_init(const struct device *dev)
115116
{
117+
const struct sdmmc_config *config = dev->config;
116118
struct sdmmc_data *data = dev->data;
117119

118120
data->status = SD_UNINIT;
121+
data->disk_info.name = config->name;
122+
data->disk_info.ops = &sdmmc_disk_ops;
123+
data->disk_info.dev = dev;
119124

120-
return disk_access_register(data->disk_info);
125+
return disk_access_register(&data->disk_info);
121126
}
122127

123128
#define DISK_ACCESS_SDMMC_INIT(n) \
124129
static const struct sdmmc_config sdmmc_config_##n = { \
125130
.host_controller = DEVICE_DT_GET(DT_INST_PARENT(n)), \
126-
}; \
127-
\
128-
static struct disk_info sdmmc_disk_##n = { \
129131
.name = DT_INST_PROP(n, disk_name), \
130-
.ops = &sdmmc_disk_ops, \
131-
.dev = DEVICE_DT_INST_GET(n), \
132132
}; \
133133
\
134-
static struct sdmmc_data sdmmc_data_##n = { \
135-
.disk_info = &sdmmc_disk_##n, \
136-
}; \
134+
static struct sdmmc_data sdmmc_data_##n; \
137135
\
138136
DEVICE_DT_INST_DEFINE(n, \
139137
&disk_sdmmc_init, \

0 commit comments

Comments
 (0)