Page MenuHomeFreeBSD

D49701.id153257.diff
No OneTemporary

D49701.id153257.diff

diff --git a/sys/arm/mv/mv_common.c b/sys/arm/mv/mv_common.c
--- a/sys/arm/mv/mv_common.c
+++ b/sys/arm/mv/mv_common.c
@@ -984,40 +984,46 @@
}
+struct ddr_data {
+ uint8_t window_valid[MV_WIN_DDR_MAX];
+ uint32_t mr_count;
+ uint32_t valid_win_num;
+};
+
+static void
+ddr_valid_cb(const struct mem_region *mr, void *arg)
+{
+ struct ddr_data *data = arg;
+ int j;
+
+ for (j = 0; j < MV_WIN_DDR_MAX; j++) {
+ if (ddr_is_active(j) &&
+ (ddr_base(j) == mr->mr_start) &&
+ (ddr_size(j) == mr->mr_size)) {
+ data->window_valid[j] = 1;
+ data->valid_win_num++;
+ }
+ }
+ data->mr_count++;
+}
+
static int
decode_win_sdram_fixup(void)
{
- struct mem_region mr[FDT_MEM_REGIONS];
- uint8_t window_valid[MV_WIN_DDR_MAX];
- int mr_cnt, err, i, j;
- uint32_t valid_win_num = 0;
+ struct ddr_data window_data;
+ int err, j;
- /* Grab physical memory regions information from device tree. */
- err = fdt_get_mem_regions(mr, &mr_cnt, NULL);
+ memset(&window_data, 0, sizeof(window_data));
+ err = fdt_foreach_mem_region(ddr_valid_cb, &window_data);
if (err != 0)
return (err);
- for (i = 0; i < MV_WIN_DDR_MAX; i++)
- window_valid[i] = 0;
-
- /* Try to match entries from device tree with settings from u-boot */
- for (i = 0; i < mr_cnt; i++) {
- for (j = 0; j < MV_WIN_DDR_MAX; j++) {
- if (ddr_is_active(j) &&
- (ddr_base(j) == mr[i].mr_start) &&
- (ddr_size(j) == mr[i].mr_size)) {
- window_valid[j] = 1;
- valid_win_num++;
- }
- }
- }
-
- if (mr_cnt != valid_win_num)
+ if (window_data.mr_count != window_data.valid_win_num)
return (EINVAL);
/* Destroy windows without corresponding device tree entry */
for (j = 0; j < MV_WIN_DDR_MAX; j++) {
- if (ddr_is_active(j) && (window_valid[j] != 1)) {
+ if (ddr_is_active(j) && (window_data.window_valid[j] != 1)) {
printf("Disabling SDRAM decoding window: %d\n", j);
ddr_disable(j);
}

File Metadata

Mime Type
text/plain
Expires
Sun, May 24, 9:44 AM (1 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33469199
Default Alt Text
D49701.id153257.diff (1 KB)

Event Timeline