summaryrefslogtreecommitdiffstats
path: root/drivers
Commit message (Collapse)AuthorAgeFilesLines
...
| * | usb: gadget: fastboot: use correct max packet sizeLi Jun2021-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Change to use wMaxPacketSize of current speed EP desc for request length wrap up. Reviewed-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: udc: ci: update speed handlingLi Jun2021-01-311-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the gadget driver speed check, and set its max_speed to be USB_SPEED_HIGH. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: composite: force gadget to be USB2 for HS only functionLi Jun2021-01-311-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If one of functions is not super speed capable, we need force the udc to be high speed, this is an equivalent implementation of usb_gadget_udc_set_speed() in kernel but simple, which set the gadget max_speed to be high speed, so afterwards when start gadget duc can set the HW to be USB 2.0 mode. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: dnl: set dnl to be super speedLi Jun2021-01-311-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set its max_speed to be super speed. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: fastboot: add super speed supportLi Jun2021-01-311-3/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add super speed EP config. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: add super speed supportLi Jun2021-01-311-25/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is to add usb gadget super speed support in common driver, including BOS descriptor and select the super speed descriptor from function driver. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: update os_desc_config when add configJun Li2021-01-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Always use the new added config for os_desc_config to fix cdev-> os_desc_config may miss set in case we restart usb gadget driver. Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: set correct usb_configuration for os_desc_configJun Li2021-01-311-7/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current way to set cdev->os_desc_config is wrong if user restart fastboot, as the old config is not used anymore and new allocated usb_configuration will be used, so set the os_desc_config while usb_add_config. Reviewed-by: Ye Li <ye.li@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: fastboot: add ext properties for WCIDLi Jun2021-01-311-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | Add device interface GUID for Microsoft Extended Properties Feature Descriptor. Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: add WCID support for mfgtoolLi Jun2021-01-311-0/+20
| | | | | | | | | | | | | | | | | | | | | Enable WCID(Microsoft Compatible ID Feature Descriptor) for mfgtool. Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: OS Feature Descriptors supportLi Jun2021-01-312-1/+374
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a proting patch from linux kernel: 37a3a533429e ("usb: gadget: OS Feature Descriptors support"), the original commit log see below: There is a custom (non-USB IF) extension to the USB standard: http://msdn.microsoft.com/library/windows/hardware/gg463182 They grant permission to use the specification - there is "Microsoft OS Descriptor Specification License Agreement" under the link mentioned above, and its Section 2 "Grant of License", letter (b) reads: "Patent license. Microsoft hereby grants to You a nonexclusive, royalty-free, nontransferable, worldwide license under Microsoft鈥檚 patents embodied solely within the Specification and that are owned or licensable by Microsoft to make, use, import, offer to sell, sell and distribute directly or indirectly to Your Licensees Your Implementation. You may sublicense this patent license to Your Licensees under the same terms and conditions." The said extension is maintained by Microsoft for Microsoft. Yet it is fairly common for various devices to use it, and a popular proprietary operating system expects devices to provide "OS descriptors", so Linux-based USB gadgets whishing to be able to talk to a variety of operating systems should be able to provide the "OS descriptors". This patch adds optional support for gadgets whishing to expose the so called "OS Feature Descriptors", that is "Extended Compatibility ID" and "Extended Properties". Hosts which do request "OS descriptors" from gadgets do so during the enumeration phase and before the configuration is set with SET_CONFIGURATION. What is more, those hosts never ask for configurations at indices other than 0. Therefore, gadgets whishing to provide "OS descriptors" must designate one configuration to be used with this kind of hosts - this is what os_desc_config is added for in struct usb_composite_dev. There is an additional advantage to it: if a gadget provides "OS descriptors" and designates one configuration to be used with such non-USB-compliant hosts it can invoke "usb_add_config" in any order because the designated configuration will be reported to be at index 0 anyway. This patch also adds handling vendor-specific requests addressed at device or interface and related to handling "OS descriptors"." Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: add Kconfig for OS descriptorsPeng Fan2021-01-311-0/+9
| | | | | | | | | | | | | | | | | | Add Kconfig for OS descriptors Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: move utf8_to_utf16le to header fileLi Jun2021-01-311-73/+1
| | | | | | | | | | | | | | | | | | | | | | | | As other users may use utf8_to_utf16le() to convert the utf8 to utf16 for usb, so move it to head file. Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: OS String supportLi Jun2021-01-311-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a porting patch from linux kernel: 19824d5eeece ("usb: gadget: OS String support"), original commit log see below: "There is a custom (non-USB IF) extension to the USB standard: http://msdn.microsoft.com/library/windows/hardware/gg463182 They grant permission to use the specification - there is "Microsoft OS Descriptor Specification License Agreement" under the link mentioned above, and its Section 2 "Grant of License", letter (b) reads: "Patent license. Microsoft hereby grants to You a nonexclusive, royalty-free, nontransferable, worldwide license under Microsoft鈥檚 patents embodied solely within the Specification and that are owned or licensable by Microsoft to make, use, import, offer to sell, sell and distribute directly or indirectly to Your Licensees Your Implementation. You may sublicense this patent license to Your Licensees under the same terms and conditions." The said extension is maintained by Microsoft for Microsoft. Yet it is fairly common for various devices to use it, and a popular proprietary operating system expects devices to provide "OS descriptors", so Linux-based USB gadgets whishing to be able to talk to a variety of operating systems should be able to provide the "OS descriptors". This patch adds optional support for gadgets whishing to expose the so called "OS String" under index 0xEE of language 0. The contents of the string is generated based on the qw_sign array and b_vendor_code. Interested gadgets need to set the cdev->use_os_string flag, fill cdev->qw_sign with appropriate values and fill cdev->b_vendor_code with a value of their choice. This patch does not however implement responding to any vendor-specific USB requests." Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: don't change ep name for dwc3 while ep autoconfigLi Jun2021-01-311-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | As the SDP protocol use the predefined ep num for communication, we can't change its name hence reset its ep num while do ep autoconfig, this is only apply for SPL. Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: Add ep_config call back to usb_gadget_opsYe Li2021-01-311-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since some new fields in usb_ep structure been moved to usb_ss_ep. The CDNS3 gadget driver should replies on this operation to bind the usb_ss_ep with the endpoint descriptor when function layer uses usb_ep_autoconfig to add endpoint descriptors to gadget. So that CDNS3 driver can know the EP information and configure the EP once the set configuration request is received. Signed-off-by: Sherry Sun <sherry.sun@nxp.com> Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
| * | usb: gadget: Do not export usbd_device_* arraysPali Rohár2021-01-312-41/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each array is used only in one file (core.c or ep0.c). Move their content to correct file, mark them as static and do not export out of current file. This change allows to decrease size of u-boot.bin as more of those strings are not used. Signed-off-by: Pali Rohár <pali@kernel.org>
| * | thor: add support for the dfu_alt_info reintialization from the flashed scriptMarek Szyprowski2021-01-311-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Reinitialize dfu_env_entities after flashing the 'SCRIPT' entity to ensure that the potential changes to the 'dfu_alt_info' environment variable are applied. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
| * | dfu: add 'SCRIPT' entityMarek Szyprowski2021-01-312-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Define a new 'SCRIPT' type for DFU entities. The downloaded data are treated as simple u-boot's scripts and executed with run_command_list() function. Flashing the 'SCRIPT' entity might result in changing the 'dfu_alt_info' environment variable from the flashed script, so add a global variable for tracking the potential need to reinitialize the dfu_alt_info related structures. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
| * | dfu: add 'SKIP' entityJaehoon Chung2021-01-312-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Define a new 'SKIP' type for the DFU entities. The flashed data for that entity is simply ignored without returning any error values. This allows to have one flashing procedure and images for the different board types or variants, where each board uses only the images relevant to it and skips the rest. This is especially usefull for the THOR protocol, which usually transfers more than one file in a single session. Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> Reviewed-by: Minkyu Kang <mk7.kang@samsung.com> [mszyprow: rephrased commit message and docs for easier reading, changed subject to "dfu: add 'SKIP' entity"] Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
| * | dfu: mmc: use the default MMC device if entity specifies it as -1Marek Szyprowski2021-01-311-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use the default MMC device set in the command line if entity specifies it as -1. This allows to use the same dfu_alt_info string for different MMC devices (like embedded eMMC and external SD card if data layout is the same on both devices). Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
| * | f_fastboot: Avoid use-after-free in the global pointer variableAndy Shevchenko2021-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | In case of usb_add_function() failure the error path has an issue, i.e the global pointer variable is assigned to garbage Fix the above mentioned issue by assigning pointer to NULL. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
| * | f_rockusb: Avoid use-after-free in the global pointer variableAndy Shevchenko2021-01-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case of usb_add_function() failure the error path has two issues: - the potentially allocated structure isn't getting freed - the global pointer variable is assigned to garbage Fix the above mentioned issues by freeing memory and assigning NULL. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
| * | f_rockusb: Use NULL instead of 0 for pointersAndy Shevchenko2021-01-311-2/+2
| | | | | | | | | | | | | | | | | | | | | get_rkusb() mistakenly uses integers without cast. Convert them to proper type. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
| * | gadget: f_thor: fix wrong file size castSeung-Woo Kim2021-01-311-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Casting 32bit int value directly into 64bit unsigned type causes wrong value for file size equal or larger than 2GB. Fix the wrong file size by casting uint32_t first. Fixes: commit 1fe9ae76b113 ("gadget: f_thor: update to support more than 4GB file as thor 5.0") Reported-by: Junghoon Kim <jhoon20.kim@samsung.com> Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
| * | dfu: Fix handling of UBI partitions in MTD backendGuillermo Rodriguez2021-01-311-2/+2
| |/ | | | | | | | | | | | | | | | | | | For UBI partitions ("partubi" in dfu_alt_info), dfu_fill_entity_mtd sets the mtd.ubi flag; however other functions incorrectly check for nand.ubi instead. Fix this by checking for the correct flag. Signed-off-by: Guillermo Rodriguez <guille.rodriguez@gmail.com> Cc: Lukasz Majewski <lukma@denx.de> Reviewed-by: Patrick Delaunay <patrick.delaunay@st.com>
* | Merge https://gitlab.denx.de/u-boot/custodians/u-boot-shTom Rini2021-01-313-0/+8
|\ \ | | | | | | | | | - Sync r8a774a1 DT files, tmio sdhi DMA fix
| * | mmc: tmio: sdhi: Configure internal DMA bus widthMarek Vasut2021-01-313-0/+8
| |/ | | | | | | | | | | | | | | | | The R-Car3 SDHI should set these two bits in DMA_MODE register according to the specification, to indicate 64bit bus width. No other bus width options are permitted and the default value is 0, which is incorrect. Set the bits accordingly. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
* | sandbox: fill block device meta informationHeinrich Schuchardt2021-01-301-0/+11
| | | | | | | | | | | | | | | | Provide information about host backed block device. Mark the device created by 'host bind' as removable. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
* | sandbox: keep time offset when resettingHeinrich Schuchardt2021-01-301-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The UEFI Self Certification Test (SCT) checks the SetTime() service with the following steps: * set date * reset * check date matches To be compliant the sandbox should keep the offset to the host RTC during resets. The implementation uses the environment variable UBOOT_SB_TIME_OFFSET to persist the offset. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
* | dm: core: Update ofnode_read_fmap_entry() to read hashesSimon Glass2021-01-301-9/+12
| | | | | | | | | | | | | | | | | | At present this function uses the old format for reading hashes. Add support for the current format. Add a test while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
* | dm: core: Add a comment about pinctrl_select_state()Simon Glass2021-01-301-0/+9
| | | | | | | | | | | | | | The use of pinctrl in the core of driver model is useful but can provoke some strange behaviour. Add a comment to aid debugging. Signed-off-by: Simon Glass <sjg@chromium.org>
* | clk: x86: Correct the driver nameSimon Glass2021-01-301-2/+2
| | | | | | | | | | | | | | The current driver name does not match its compatible string, so of-platdata does not work correctly. Fix it. Signed-off-by: Simon Glass <sjg@chromium.org>
* | clk: Add debugging for return valuesSimon Glass2021-01-301-5/+11
| | | | | | | | | | | | | | Use the log_msg_ret() mechanism to get error-return information when clocks fail to probe, etc. Signed-off-by: Simon Glass <sjg@chromium.org>
* | sandbox: Disable I2C emulators in SPLSimon Glass2021-01-301-0/+2
| | | | | | | | | | | | | | | | | | | | | | These cannot work with of-platdata since they currently need the devicetree at runtime. Disable the emulators and the sandbox I2C driver that needs them. We can enable these later, if needed for testing. Switch the of_plat_parent test over to use a simple bus instead. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heiko Schocher <hs@denx.de>
* | i2c: desigware: Add an alias for Intel Apollo LakeSimon Glass2021-01-301-0/+2
| | | | | | | | | | | | | | Add an alias so that this driver can be used in TPL on coral. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heiko Schocher <hs@denx.de>
* | cros_ec: Add vstore supportSimon Glass2021-01-302-2/+121
| | | | | | | | | | | | | | | | | | | | The EC can store small amounts of data for the benefit of the verified boot process. Since the EC is seldom reset, this can allow the AP to store data that survives a reboot or a suspend/resume cycle. Add support for this. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Allow use with of-platdataSimon Glass2021-01-301-0/+2
| | | | | | | | | | | | Avoid reading the device tree when of-platdata is in use. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Show events in human-readable formSimon Glass2021-01-301-1/+11
| | | | | | | | | | | | | | Add a command to show the current events as a list of names. This is easier to decipher than a bit mask. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Add support for switchesSimon Glass2021-01-303-0/+33
| | | | | | | | | | | | | | | | | | On x86 platforms the EC provides a way to read 'switches', which are on/off values determined by the EC. Add a new driver method for this and implement it for LPC. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Support reading EC featuresSimon Glass2021-01-302-6/+31
| | | | | | | | | | | | | | | | | | | | | | | | The EC can support a variety of features and provides a way to find out what is available. Add support for this. Also update the feature list to the lastest available while we are here. This is at: https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/master/include/ec_commands.h Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Add support for reading the SKU IDSimon Glass2021-01-302-0/+20
| | | | | | | | | | | | | | This allows reading strapping pins attached to the EC. Add an implementation for this. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Add run-time check for input buffer overflowSimon Glass2021-01-301-0/+2
| | | | | | | | | | | | | | This should not happen in normal operation, but the EC might have a bug, so add a run-time check just in case. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Tidy up a few delaysSimon Glass2021-01-301-7/+17
| | | | | | | | | | | | | | Allow a longer time for the EC to reboot. Also use a constant for the hash delay time, so it is clear what it is for. Signed-off-by: Simon Glass <sjg@chromium.org>
* | cros_ec: Add a function for the hello messageSimon Glass2021-01-302-15/+43
| | | | | | | | | | | | | | | | | | | | This is used several times in this file. Put it in a function to avoid code duplication. Also add a test for this function. There are no cros_ec tests at present, so it is time to update the code. Signed-off-by: Simon Glass <sjg@chromium.org>
* | tpm: cr50: Rename driver to work with of-platdataSimon Glass2021-01-301-2/+2
| | | | | | | | | | | | | | Update the driver name to match the compatible string, so it can work with of-platdata. Signed-off-by: Simon Glass <sjg@chromium.org>
* | tpm: cr50: Add a better description and more debugSimon Glass2021-01-301-4/+18
| | | | | | | | | | | | | | | | Update the TPM description to include the interrupt mechanicm since this is useful to know. Also add a warning if the TPM cannot be found and a debug line if it succeeds. Signed-off-by: Simon Glass <sjg@chromium.org>
* | tpm: cr50: Check for valid localitySimon Glass2021-01-301-4/+12
|/ | | | | | | | | | | | | | When the Cr50 starts up it doesn't have a valid locality. The driver sets it to -1 to indicate that. Tracking this allows cr50_i2c_cleanup() to avoid releasing a locality that was not claimed. However the helper functions that generate the flags use a u8 type which cannot support -1, so they return a locality of 0xff. Fix this by updating the type. With this, 'tpm startup TPM2_SU_CLEAR' works as expected. Signed-off-by: Simon Glass <sjg@chromium.org>
* spi: mtk_snor: add support for MTK SPI NOR controllerSkyLake.Huang2021-01-293-0/+571
| | | | | | | | | | | | | | This patch adds support for MTK SPI NOR controller, which you can see on mt7622 & mt7629. 1. This controller is designed only for SPI NOR. We can't adjust its bus clock dynamically. Set clock in dts instead. 2. This controller only supports 1-1-1 write mode. 3. Remove mtk_snor_match_read() since upper SPI-MEM layer already handles command. 4. sf read/write/update commands are tested with this driver. Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
* rtc: add rtc-abx80x, a driver for the Abracon AB x80x i2c rtcYing-Chun Liu (PaulLiu)2021-01-273-0/+563
| | | | | | | | | This is a basic driver for the ultra-low-power Abracon AB x80x series of RTC chips. It supports in particular, the supersets AB0805 and AB1805. It allows reading and writing the time, and enables the supercapacitor or battery charger. Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>