summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)AuthorFiles
2014-02-04wic: Hook up --debug optionTom Zanussi2
Hook up the existing --debug option to toggle the wic debug loglevel, which is indispensible when things go wrong, and make it easy to use from the command-line. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-04wic: Hook up BootimgEFIPlugin and BootimgPcbiosPlugin pluginsTom Zanussi6
Remove all the Wic_PartData and DirectImageCreator code now implemented by the BootimgEFIPlugin and BootimgPcbiosPlugin plugins, as well as all the special-cased boot_type code, significantly cleaning up the code. Replace the calling code with general-purpose plugin invocations, in essence calling the appropriate implementations at run-time based on the --source value in effect. Change the directdisk.wks and mkefidisk.wks scripts to make use of the new plugins. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-04wic: Add BootimgEFIPlugin and BootimgPcbiosPluginTom Zanussi2
Implement the BootimgPcbiosPlugin and BootimgEFIPlugin SourcePlugin classes. The configure/prepare_partition() methods are implemented using code derived from similar code in the Wic_PartData class. These classes have the corresponding names 'bootimg-pcbios' and 'bootimg-efi', which are the names that should be used in the --source parameters of the .wks partition commands. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-04wic: Add SourcePlugin classTom Zanussi2
Define the SourcePlugin class, which is the class that should be subclassed to create a 'source' plugin. 'Source' plugins provide a mechanism to customize various aspects of the image generation process in wic, mainly the contents of partitions. The initial version of wic defined a --source param for partitions, which was in the first revision hard-coded to two possible values: rootfs and bootimg. This patch essentially removes the hard-coded --bootimg param and replaces it with a plugin system that maps the value specified as --source to a particular 'source' plugin instead. A 'source' plugin is created as a subclass of SourcePlugin and the plugin file containing it is added to scriptsl/lib/mic/plugins/source/ to make the plugin implementation available to the wic implementation. When the wic implementation needs to invoke a partition-specific implementation, it looks for the plugin that has the same name as the --source param given to that partition. For example, if the partition is set up like this: part /boot --source bootimg-pcbios ... then the methods defined as class members of the plugin having the matching .name class member would be used. To be more concrete, here's the plugin definition that would match a '--source bootimg-pcbios' usage, along with an example method that would be called by the wic implementation when it needed to invoke an implementation-specific partition-preparation function: class BootimgPcbiosPlugin(SourcePlugin): name = 'bootimg-pcbios' @classmethod def do_prepare_partition(self, part, ...) If the subclass itself doesn't implement a function, a 'default' version in a superclass will be located and used, which is why all plugins must be derived from SourcePlugin. This scheme is extensible - adding more hooks is a simple matter of adding more plugin methods to SourcePlugin and derived classes. The code that then needs to call the plugin methods the uses plugin.get_source_plugin_methods() to find the method(s) needed by the call; this is done by filling up a dict with keys containing the methon names of interest - on success, these will be filled in with the actual methods. fPlease see the implementation for examples and details. Note that a source plugin need not restrict itself to methods that apply directly to partitions - methods can also be defined for higher level processing such as at the 'disk' level. The get_default_source_plugin() of DirectImageCreator allows the default source plugin to be retrieved; by default this is set to be the same plugin used for the /boot partition, but that can be overridden by specifying a different --source and therefore different plugin on the 'bootloader' line. This isn't ideal, but it avoids forcing a new high-level object to be defined for that purpose. Note that the '--source rootfs' param remains as its current hard-coded value, which is just the rootfs to be used to populate the partition - by default, that's just the value of the bitbake ROOTFS_DIR variable (or whatever was passed in using the -r param). Note that this also could also be overridden by creating a source plugin using a different name; at this point, unlike with bootimg, there's been no need to do so. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-04wic: Add wic-specific bootloader subclassTom Zanussi3
Add a new wic-specific bootloader subclass so we can add a --source param to hang non-partition plugin off of. By default, the bootloader gets the /boot partition source plugin, but this can be overridden by the --source bootloader param if needed. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-04wic: Create and use new functions for getting bitbake variablesTom Zanussi3
Add get_bitbake_var() and bitbake_env_lines() functions for use by plugins, which will need access to them for customization. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-04wic: Move some common items to oe.miscTom Zanussi3
Move a couple items into a more common location since they're going to need to be accessible from source plugins. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02generate-manifest-3.3.py: Add script to generate python 3.3 manifestsKhem Raj1
Bases on python 2.7.x generator Package collections/ in python-core Signed-off-by: Khem Raj <raj.khem@gmail.com>
2014-02-02sstate-cache-management.sh: don't remove all packagedata sstate archivesMartin Jansa1
* packagedata task was introduced in: commit 6107ee294afde395e39d084c33e8e94013c625a9 Author: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Wed Jan 23 14:27:33 2013 +0000 Subject: Split do_packagedata task from do_package * rm_by_stamps wasn't using do_packagedata or do_packagedata_setscene stamp files to find which sstate archives to keep, so it was removing all of them Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02sstate-cache-management.sh: Fix available architecturesMartin Jansa1
* grep for AVAILTUNES isn't enough in cases where AVAILTUNE doesn't match exactly with TUNE_PKGARCH, e.g. AVAILTUNE "cortexa8thf-neon" and TUNE_PKGARCH "cortexa8t2hf-vfp-neon", instead of trying to find dynamically every available TUNE_PKGARCH (we have _a lot_ of them even with oe-core only), add parameter --extra-archs where user can define extra architectures he supports in given build * Don't replace '-' with '_' for extra-archs, it does apply to MACHINE names and some AVAILTUNES, but e.g. cortexa8thf-neon shouldn't be converted to cortexa8thf_neon * Add empty architecture for populate_lic sstate archives * Add ${build_arch}_${arch} combinations for toolchain recipes (e.g. gcc-cross is using x86_64_i586 Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02sstate-cache-management.sh: Show total number of files when showing how many ↵Martin Jansa1
will be deleted * it's good to see some the ratio of delted files until now it was showing only when all or none files were to be removed Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02sstate-cache-management.sh: Fix rm_by_stamps() to work after SSTATE_SWSPEC ↵Martin Jansa1
change * format of filenames for sstate archives was changed in: commit 6f823a23c5f1d0ffa0a27db1c1bc1907de788505 Author: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Fri Dec 20 12:06:02 2013 +0000 Subject: sstate: Convert to use ':' as a filename sperator and use SSTATE_SWSPEC globally * this one doesn't need special care for old sstate- names they will be removed automatically as they don't match with any checksum in rigth format from stamps directory Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02sstate-cache-management.sh: Fix remove_duplicated() to work after ↵Martin Jansa1
SSTATE_SWSPEC change * format of filenames for sstate archives was changed in: commit 6f823a23c5f1d0ffa0a27db1c1bc1907de788505 Author: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Fri Dec 20 12:06:02 2013 +0000 Subject: sstate: Convert to use ':' as a filename sperator and use SSTATE_SWSPEC globally * remove_duplicated() wasn't able to find available architectures and duplicate files since this change * add extra step to remove old sstate archives starting with sstate- (instead of sstate:) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02scripts/cp-noerror: Avoid a raceRichard Purdie1
Its possible something can delete $1 (since it may be empty) whilst cp-noerror is starting. Add an exception to handle this issue since if this happens, we shouldn't return an error. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-28scripts/runqemu-internal: use -cpu core2duo for qemux86-64Stefan Stanacar1
Now that the tune for qemux86-64 changed to core2-64 we need to tell the emulator to use a proper CPU model. With the default setting of qemu64 we'll get things like: root@qemux86-64:~# smart --help traps: python[758] trap invalid opcode ip:7f2af01f6be7 sp:7fff49466ef0 error:0 in strop.so[7f2af01f5000+6000] Illegal instruction If the tune for qemux86 changes, that needs to be updated too. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-28combo-layer: Make directories only if they don't exisit yetSaul Wold1
Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-28runqemu, runqemu-internal: Allow slirp for NFS and KVM useJason Wessel2
The default slirp address for the NFS server is 10.0.2.2. If not using a tap interface this address must be used or the target system cannot connect properly. Also the ip=... kernel arguments need to be set to dhcp when using slirp or the root NFS will not get setup properly. The call to cleanup() results in a routine which is not defined when setting up the NFS because it is called before acquire() for the locking of the tap interfaces, the solution being to simply not call cleanup() that early. When using slirp, kvm should not execute the vhost net checks because the vhost net will not be configure or used. Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-28runqemu-export-rootfs: update for unfs3Jason Wessel1
The unfs3 no longer has an rpc.mountd component. There is just a single server for mountd and nfsd requests. This means changing the name of the server in the scripts that check for it. [YOCTO #5639] Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-28runqemu: Use the newer unfs3 for serving user space nfsSaul Wold2
This new version correctly handles the 64bit ext3 / ext4 issues we were seeing with the older unfs-server which did not handle 64bit file systems correctly, producing the duplicate cookies. [YOCTO #5639] Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-22pybootchartgui: Add option -T to allways use the full timePeter Kjellerstedt3
When --full-time (or -T) is used, the graph allways shows the full time regardless of which processes are currently shown. This is especially useful in combinationm with the -s flag when outputting to multiple files. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-22pybootchartgui: Adopt the width of the index in split output filesPeter Kjellerstedt1
Add minimum width zero-padding to the index used in split output files with -s and -o. I.e., if -s 200 is used, then the index will be zero-padded to three digits width. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-22pybootchartgui: Simplify adding processes to the tracePeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-22pybootchartgui: Correct the legendPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-22pybootchartgui: Make the -s option work againPeter Kjellerstedt1
[YOCTO #5588] Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-02wipe-sysroot: explain what is being deleted, and check for argumentsRoss Burton1
Print the directories that will be deleted, and add a rudimentary check for arguments and display a message if arguments were passed. [ YOCTO #5423 ] Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-02test-dependencies.sh: avoid showing misleading error messagesJackie Huang1
This avoids the following error messages when no dependency issue detected: find: `/build/r_cgp-dep_1225/p_x86_1225/bitbake_build/tmp/work/': No such file or directory grep: test-dependencies/1388042399/3_min/failed/*: No such file or directory ls: cannot access test-dependencies/1388042399/3_min/failed/*: No such file or directory Signed-off-by: Jackie Huang <jackie.huang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-20runqemu: Allow user to set -vga option with qemuparamsValentin Popa2
At the moment, the user cannot to set -vga other then vmware (because "vmware" is set by default); and the first argument in qemuparams has higher precedence. Signed-off-by: Valentin Popa <valentin.popa@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-12-18scripts/contrib: Add graph-toolPaul Eggleton1
A simple script I put together for getting the paths from one node to another in a dot graph. This is useful for example in working out why a particular recipe is getting built in conjunction with dot graph files produced by bitbake -g. For example: $ bitbake -g core-image-minimal ... $ graph-tool find-paths pn-depends.dot core-image-minimal util-linux core-image-minimal -> packagegroup-core-boot -> udev -> glib-2.0 -> python-dbus -> dbus-glib -> dbus -> libsm -> e2fsprogs -> util-linux core-image-minimal -> packagegroup-core-boot -> udev -> glib-2.0 -> python-dbus -> dbus -> libsm -> e2fsprogs -> util-linux core-image-minimal -> packagegroup-core-boot -> udev -> util-linux Partially addresses [YOCTO #3362]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-12-09runqemu: remove core-image-* whitelistScott Garman1
Using a whitelist for image names to default to when none are specified on the command line is no longer desired. Instead, choose the most recently created image filename that conforms to typical image naming conventions. Fixes [YOCTO #5617]. Signed-off-by: Scott Garman <scott.a.garman@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-12-06python: Add missing RDEPENDS for python-unittestMike Looijmans1
After installing python-unittest, the following errors occur when executing "import unittest" from a python commandline: ImportError: No module named StringIO ImportError: No module named pprint ImportError: No module named difflib ImportError: No module named pprint ImportError: No module named fnmatch Fix this by adding the missing dependencies to the generator script and run the generator. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-04lib/oeqa/selftest/base, scripts/oe-selftest: fix wrong remove path and do a ↵Stefan Stanacar1
complete cleanup at the end The script should clean-up all the .inc files that might have been created by tests regardless of the outcome or if the script is interrupted. (currently the last test will leave a conf/selftest.inc around, even if it's not included anywhere) Also fix delete_recipeinc to actually delete what's supposed to. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-03scripts/oe-selftest: script to run builds as unittest against bitbake or ↵Stefan Stanacar1
various scripts The purpose of oe-selftest is to run unittest modules added from meta/lib/oeqa/selftest, which are tests against bitbake tools. Right now the script it's useful for simple tests like: - "bitbake --someoption, change some metadata, bitbake X, check something" type scenarios (PR service, error output, etc) - or "bitbake-layers <...>" type scripts and yocto-bsp tools. This commit also adds some helper modules that the tests will use and a base class. Also, most of the tests will have a dependency on a meta-selftest layer which contains specially modified recipes/bbappends/include files for the purpose of the tests. The tests themselves will usually write to ".inc" files from the layer or in conf/selftest.inc (which is added as an include in local.conf at the start and removed at the end) It's a simple matter or sourcing the enviroment, adding the meta-selftest layer to bblayers.conf and running: oe-selftest to get some results. It would finish faster if at least a core-image-minimal was built before. [ YOCTO #4740 ] Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-03classes/package: record PKGSIZE as total file size in pkgdataPaul Eggleton1
We were using "du -sk" to collect the total size of all files in each package for writing out to PKGSIZE in each pkgdata file; however this reports the total space used on disk not the total size of all files, which means it is dependent on the block size and filesystem being used for TMPDIR on the build host. Instead, take the total of the size reported by lstat() for each packaged file, which we are already collecting for FILES_INFO in any case. Note: this changes PKGSIZE to be reported in bytes instead of kilobytes since this is what lstat reports, but this is really what we should be storing anyway so that we have the precision if we need it. Fixes [YOCTO #5334] Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-03classes/package: fix FILES_INFO serialisation in pkgdataPaul Eggleton1
The FILES_INFO entry in each pkgdata file stores the list of files for each package. Make the following improvements to how this is stored: * Store paths as they would be seen on the target rather than erroneously including the full path to PKGDEST (which is specific to the build host the package was built on) * For simplicity when loading the data, store complete paths for each entry instead of trying to break off the first part and use it as the dict key * Record sizes for each file (as needed by Toaster) * Serialise the value explicitly using json rather than just passing it through str(). Fixes [YOCTO #5443]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-26classes/image: write image manifestPaul Eggleton1
Write a list of installed packages to a .manifest file next to the image, so we can find out what went into the image after it has been constructed without necessarily having to have buildhistory enabled (although that will provide more detail.) We can make use of this for example in the testimage class associated code that checks for installed packages for determining whether or not to run specific tests. Note: this replaces the previous ipk-specific manifest code with something that works for ipk, rpm and deb, and instead of a pruned status file, packages are listed one per line, in the following format: <packagename> <packagearch> <version> Tests for all three backends have shown that the performance impact of this change is negligible (about 1.5s max). Implements [YOCTO #5410] Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Add option --minutes to show time in minutesPeter Kjellerstedt2
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Add a color for the package_write_* tasksPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Reorder the legend to match the task execution orderPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Make bars without a specified color whitePeter Kjellerstedt1
Previously they were transparent. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Make "Show more" show all processesPeter Kjellerstedt4
While "Show more" is enabled, all processes are shown, regardless of --mintime. This also has the added benefit of making the first shown bar start at its correct offset from the start time, rather than always starting at 0. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Draw a lot less ticksPeter Kjellerstedt1
With this, one second ticks are only enabled if the width of a second is five pixels or more. It is also possible to distinguish 1, 5 and 30 second ticks. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Disable options that do not make sensePeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: No need to do a double list comprehension over filesPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Avoid having overlapping process barsPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Use correct header heightPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Correct the X offset for the chartPeter Kjellerstedt1
This will make the first bar actually start within the graph. It will also move the graph to the right so the names of the first tasks are more likely to be visible. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Set the initial state of "Show more" correctlyPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Make the horizontal scaling stay within boundsPeter Kjellerstedt1
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-18pybootchartgui: Import pybootchartgui 0.14.5Peter Kjellerstedt16
This update the pybootchartgui code to the latest release from its new location at "https://github.com/mmeeks/bootchart". This only imports the relevant parts, and not all of bootchart2. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-11-14scripts/create-recipe: fix handling of --helpPaul Eggleton1
If --help is specified as the first argument, show the standard help text instead of trying to process it as a URL. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>