• Russell King's avatar
    ARM: OMAP: Cleanup OMAP FB SDRAM reservation · a1af0fbb
    Russell King authored
    The logic in this file is rather convoluted, but essentially:
    
    1. region type 0 is SDRAM
    2. referring to the code fragment
                    if (set_fbmem_region_type(&rg, OMAPFB_MEMTYPE_SDRAM,
                                              sdram_start, sdram_size) < 0 ||
                        (rg.type != OMAPFB_MEMTYPE_SDRAM))
                            continue;
       - if rg.type is not OMAPFB_MEMTYPE_SDRAM, set_fbmem_region_type()
         returns zero immediately (since rg.type is non-zero), and so we
         'continue'.
       - if rg.type is OMAPFB_MEMTYPE_SDRAM, and rg.paddr is zero,
         we fall through.
       - if rg.type is OMAPFB_MEMTYPE_SDRAM, and the region lies within
         SDRAM, we fall through.
       - if rg.type is OMAPFB_MEMTYPE_SDRAM, and the region is not within
         SDRAM, we 'continue'.
    3. check_fbmem_region seems unnecessary.
       - we know rg.type is OMAPFB_MEMTYPE_SDRAM
       - we can check rg.size independently
       - bootmem_reserve() can check for overlapping reservations itself
       - we've already validated that the requested region lies within SDRAM.
    4. avoid BUG()ing if the region entry is already set; print an error,
       and mark the configuration invalid - at least we'll continue booting
       so the error message has a chance of being logged/visible via serial
       console.
    
    With these changes in place, it makes the code much easier to understand
    and hence easier to convert to LMB.
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    a1af0fbb
fb.c 10.2 KB