cros_bundle_firmware: Add defaults for exynos SPL parameters

When these parameters are not specified by the fdt (as with the current
upstream U-Boot for example), use sensible defaults instead of failing.

BUG=chromium-os:36112
TEST=manual
$ cros_bundle_firmware -b daisy
on an upstream U-Boot. See that it no longer fails with:

Command failed: fdtget out/updated.dtb /dmc mem-type
Error at '/dmc': FDT_ERR_NOTFOUND

Change-Id: I63b2e604a070e2ac9f2ffdcf2dfa335b37464438
Reviewed-on: https://gerrit.chromium.org/gerrit/37459
Commit-Ready: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
diff --git a/host/lib/bundle_firmware.py b/host/lib/bundle_firmware.py
index 734fecd..edbec06 100644
--- a/host/lib/bundle_firmware.py
+++ b/host/lib/bundle_firmware.py
@@ -714,22 +714,37 @@
     upto = 0
     for param in param_list:
       value = struct.unpack('<1L', data[pos + upto:pos + upto + 4])[0]
+
+      # Use this to detect a missing value from the fdt.
+      not_given = 'not-given-invalid-value'
       if param == 'm' :
-        mem_type = fdt.GetString('/dmc', 'mem-type')
+        mem_type = fdt.GetString('/dmc', 'mem-type', not_given)
+        if mem_type == not_given:
+          mem_type = 'ddr3'
+          self._out.Warning("No value for memory type: using '%s'" % mem_type)
         mem_types = ['ddr2', 'ddr3', 'lpddr2', 'lpddr3']
         if not mem_type in mem_types:
           raise CmdError("Unknown memory type '%s'" % mem_type)
         value = mem_types.index(mem_type)
         self._out.Info('  Memory type: %s (%d)' % (mem_type, value))
       elif param == 'M' :
-        mem_manuf = fdt.GetString('/dmc', 'mem-manuf')
+        mem_manuf = fdt.GetString('/dmc', 'mem-manuf', not_given)
+        if mem_manuf == not_given:
+          mem_manuf = 'samsung'
+          self._out.Warning("No value for memory manufacturer: using '%s'" %
+                            mem_manuf)
         mem_manufs = ['autodetect', 'elpida', 'samsung']
         if not mem_manuf in mem_manufs:
           raise CmdError("Unknown memory manufacturer: '%s'" % mem_manuf)
         value = mem_manufs.index(mem_manuf)
         self._out.Info('  Memory manufacturer: %s (%d)' % (mem_manuf, value))
       elif param == 'f' :
-        mem_freq = fdt.GetInt('/dmc', 'clock-frequency') / 1000000
+        mem_freq = fdt.GetInt('/dmc', 'clock-frequency', -1)
+        if mem_freq == -1:
+          mem_freq = 800000000
+          self._out.Warning("No value for memory frequency: using '%s'" %
+                            mem_freq)
+        mem_freq /= 1000000
         if not mem_freq in [533, 667, 800]:
           self._out.Warning("Unexpected memory speed '%s'" % mem_freq)
         value = mem_freq