dtoc: Add a way for tests to request the fallback library
We need to test both the normal (Python libfdt module) and fallback (fdtget) implementations of the Fdt class. Add a way to select which implementation to use. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
		
							parent
							
								
									8828254cae
								
							
						
					
					
						commit
						3cb44ba80c
					
				| 
						 | 
					@ -6,6 +6,8 @@
 | 
				
			||||||
# SPDX-License-Identifier:      GPL-2.0+
 | 
					# SPDX-License-Identifier:      GPL-2.0+
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import fdt_fallback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Bring in either the normal fdt library (which relies on libfdt) or the
 | 
					# Bring in either the normal fdt library (which relies on libfdt) or the
 | 
				
			||||||
# fallback one (which uses fdtget and is slower). Both provide the same
 | 
					# fallback one (which uses fdtget and is slower). Both provide the same
 | 
				
			||||||
# interface for this file to use.
 | 
					# interface for this file to use.
 | 
				
			||||||
| 
						 | 
					@ -14,13 +16,21 @@ try:
 | 
				
			||||||
    have_libfdt = True
 | 
					    have_libfdt = True
 | 
				
			||||||
except ImportError:
 | 
					except ImportError:
 | 
				
			||||||
    have_libfdt = False
 | 
					    have_libfdt = False
 | 
				
			||||||
    import fdt_fallback
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def FdtScan(fname):
 | 
					force_fallback = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def FdtScan(fname, _force_fallback=False):
 | 
				
			||||||
    """Returns a new Fdt object from the implementation we are using"""
 | 
					    """Returns a new Fdt object from the implementation we are using"""
 | 
				
			||||||
    if have_libfdt:
 | 
					    if have_libfdt and not force_fallback and not _force_fallback:
 | 
				
			||||||
        dtb = fdt_normal.FdtNormal(fname)
 | 
					        dtb = fdt_normal.FdtNormal(fname)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        dtb = fdt_fallback.FdtFallback(fname)
 | 
					        dtb = fdt_fallback.FdtFallback(fname)
 | 
				
			||||||
    dtb.Scan()
 | 
					    dtb.Scan()
 | 
				
			||||||
    return dtb
 | 
					    return dtb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def UseFallback(fallback):
 | 
				
			||||||
 | 
					    global force_fallback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    old_val = force_fallback
 | 
				
			||||||
 | 
					    force_fallback = fallback
 | 
				
			||||||
 | 
					    return old_val
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue