From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 368CBC25B0E for ; Fri, 5 Aug 2022 07:06:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240190AbiHEHGl (ORCPT ); Fri, 5 Aug 2022 03:06:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236103AbiHEHG3 (ORCPT ); Fri, 5 Aug 2022 03:06:29 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4520129C91; Fri, 5 Aug 2022 00:06:27 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id u133so1495753pfc.10; Fri, 05 Aug 2022 00:06:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=7tsFXU+s5bo2EYkFqWY6zQ+JUiztfwb6P63nZJlXLIE=; b=G3iKqSKrOIH8qHcC5faFSOBzjMxoXYPHd0UTzWpMKS5CVs3fXYbSOPAccciKINtQfD YWbAPaJ0fdyMZtea0E6JxrPfiLRO1KwJVTlq4x3g07BsMYbk5B+B2KnkhK8H3yJrYjNf FqcZNSrbS7vbRdfLOOwcSGr2B37YRpPwhv6yVjViMCQnhK8j9RrYGXSGg8R+vdCArQ1Y hSVRSe43Ll1V28Sxp1U7TDCZi4vkUePK6iyDm6r1w4IpKR9oHP1+ta2ooPLB0RMCg2L9 GYmw9AWiDoOI+lAFGmX64EpVVyoLTlEY4I7P8pRSsDs7veDzkoYGkFUu1uqIo6UyPDRF 4xHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=7tsFXU+s5bo2EYkFqWY6zQ+JUiztfwb6P63nZJlXLIE=; b=eBU8XnVf+Viw9Bz1Z2RQDxil3qS5sgbDevMMjNZz189xbygCOI+qyB708tKpu997EZ J0Q1tkMJOVVbmQ4NvmxaAN7DiYcedx1PBvENk79b83NI0E/0JCzcnRCA/p3WXmyclVT2 u8cNLBcqJjTHEcQBe4lprgq7xZPNkXCpuF4GI4aw+yH2JdQZ+J47CrgIoWaHB+SmfcW5 0hMZ111MPHBEOLV8tE0kNJfjzgNGn86vND+fwq2hRI8SrOsG1YJ5pO/miSpT7RxmdN7R WH+OrGHYmLavNStPwZ0v30gC+1hj3nULWLKFtT4Wjrl8ePJTm5U9o4vVcZsAID4JxR9M UEfQ== X-Gm-Message-State: ACgBeo2Sg1X2zcD6fcteOHMk3dQme0rJ5EMMQjGm660hIEYuH/mzqqoQ EAcS0vGztY4Kaz5PtO29fHo= X-Google-Smtp-Source: AA6agR7NpbFgICTNOffVu7791eKEeoPBic2ASoOwQysnlvex+ZuKZ+D6WEsGS09gWSLuzM3KOQII4A== X-Received: by 2002:a62:6206:0:b0:52d:39c5:298 with SMTP id w6-20020a626206000000b0052d39c50298mr5365342pfb.30.1659683186516; Fri, 05 Aug 2022 00:06:26 -0700 (PDT) Received: from RD-3580-24288.rt.l (42-72-229-62.emome-ip.hinet.net. [42.72.229.62]) by smtp.gmail.com with ESMTPSA id i5-20020a056a00224500b00525343b5047sm2191616pfu.76.2022.08.05.00.06.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Aug 2022 00:06:26 -0700 (PDT) From: ChiaEn Wu To: lee.jones@linaro.org, daniel.thompson@linaro.org, jingoohan1@gmail.com, pavel@ucw.cz, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, matthias.bgg@gmail.com, sre@kernel.org, chunfeng.yun@mediatek.com, gregkh@linuxfoundation.org, jic23@kernel.org, lars@metafoo.de, lgirdwood@gmail.com, broonie@kernel.org, linux@roeck-us.net, heikki.krogerus@linux.intel.com, deller@gmx.de, andy.shevchenko@gmail.com Cc: chiaen_wu@richtek.com, alice_chen@richtek.com, cy_huang@richtek.com, dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-usb@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org, szunichen@gmail.com Subject: [PATCH v7 00/13] Add MediaTek MT6370 PMIC support Date: Fri, 5 Aug 2022 15:05:57 +0800 Message-Id: <20220805070610.3516-1-peterwu.pub@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org From: ChiaEn Wu This patch series add MediaTek MT6370 PMIC support. The MT6370 is a highly-integrated smart power management IC, which includes a single cell Li-Ion/Li-Polymer switching battery charger, a USB Type-C & Power Delivery (PD) controller, dual Flash LED current sources, a RGB LED driver, a backlight WLED driver, a display bias driver and a general LDO for portable devices. In this series of patches, we based on Andy Shevchenko's mfd patch which is used to adjust the Makefile order. (https://lore.kernel.org/all/20220801114211.36267-3-andriy.shevchenko@linux.intel.com/) Among this, we also took some changes for MT6370 drivers, revised the MT6370 device tree files to comply with DT specifications, and revised the wrong SoB chain in entire patches. PS. "[PATCH v7 06/13] dt-bindings: mfd: Add MediaTek MT6370" depends on previous DT binding patches, so before applying this patch, please apply other DT patches first. Thanks! PS2. Our MFD DT-binding depends on LED flash and LED RGB DT-bindings, but the Kconfigs of LED flash and LED RGB depend on MFD. Due to dependency consideration, we also submit LED flash and LED RGB with other patches at this time. Thank you, ChiaEn Wu --- Changes in v7: - In Patch 05/13: - Add the second compatible string for 'mt6372' - Add 'mediatek,bled-exponential-mode-enable' property for enable the exponential mode of backlight brightness - Add validation for the maximum value of 'default-brightness' and 'max-brightness' - In Patch 07/13: - Move '#define MT6370_REG_MAXADDR' to the next line of '#define MT6370_REG_CHG_MASK1' - Rename 'MT6370_REG_ADDRLEN' to 'MT6370_MAX_ADDRLEN' - In Patch 08/13: - Revise 'devm_add_action_or_reset(dev, ...)' to one line - Revise 'return regmap_update_bits(...)' with using positive conditional - In Patch 09/13: - Add AICR(100mA ~ 350mA), ICHG(100mA ~ 800mA) macros - Remove 400mA AICR and 900mA ICHG macros - Revise using 'if-else' to 'switch-case' in mt6370_adc_read_scale() where the adc channel is ibus or ibat - In Patch 10/13: - Revise the method to enable/disable irq - Revise all 'if (ret < 0)' to 'if (ret)' after using mt6370_chg_field_set/get() - Revise all 'OTG' text - In Patch 11/13: - Add the comment for the union of 'struct mt6370_led' - Revise the wrong description of 'Authors' - Revise some typos (e.g. led --> LED) - Revise 'if (!fwnode_property_read_string())' to 'ret = fwnode_property_read_string()' - Replace 'memcpy(...)' with 'put_unaligned_be24()' in mt6370_gen_breath_pattern() - Replace all 'LED_OFF' with 0 - Remove the redundant assignment in mt6370_mc_pattern_clear() - In Patch 12/13: - Fix the indentation. - For the well defined macro, the parenthesis is needed for input parameters. - Replace some dev_warn to dev_info in 'init_flash_properties'. - Add sentinel comment for the terminator entry of of_device_id. - Use priv->fled_torch_used directly. - Delete 0 in {}. - Use _uA instead of _UA in definition. - Refine the description. - Use usleep_range instead of udelay. - Rename config to LEDS_MT6370_FLASH. - Add missing ">" in copyright. - Change the Kconfig order - In Patch 13/13: - Add support 'exponential mode' property parsing - Add 'return dev_err_probe()' after 'if (IS_ERR(priv->enable_gpio))' - Add 'mt6372' compatible string - Revise Kconfig help text - Revise update()/get() for supporting 16384 steps (MT6372) - Revise all shift usages form using 'ffs() and fls()' to defining the _SHIFT macros. - Revise 'brightness ? 1 : 0' to '!!brightness' in gpiod_set_value() Changes in v6: - In Patch 03/13: - Add 'reg' property of led of multi-led to prevent checking error. - In Patch 08/13: - Convert tcpci as device resource managed with 'devm_add_action_or_reset' api. - Refine remvoe callback. - Refine the commit text from 'this commit add' to 'add'. - In Patch 09/13: - Using 'struct device *dev = &pdev->dev' in probe() - Revise the sixth parameter of regmap_read_poll_timeout() by Replacing '1000' with 'MILLI' - Revise the units of three macros - MT6370_AICR_400MA --> MT6370_AICR_400_mA - MT6370_ICHG_500MA --> MT6370_ICHG_500_mA - MT6370_ICHG_900MA --> MT6370_ICHG_900_mA - In patch 10/13: - Remove the varable (*psy_desc) of struct mt6370_priv - Remove the deprecated usb type (POWER_SUPPLY_TYPE_USB_CDP and POWER_SUPPLY_TYPE_USB_DCP) - Remove useless remove() - Revise all units from mini- to micro- - Revise get/set power_supply_prop (change to directly return get/set regmap_field) - Revise probe() and use devm_add_action_or_reset() for handling of the workqueue/delayed_work/mutex - Revise mt6370_chg_psy_desc - Add '.name = "mt6370-charger"' - Use 'static const' - In patch 11/13: - Remove the 'ko' from mt6370 led Kconfig description. - Add both authors for Alice and ChiYuan. - Use pdata to distinguish the code from mt6370/71 to mt6372. - Instead of 'state' define, use the 'state' enum. - Fix the typo for 'MT6372_PMW_DUTY'. - For pwm_duty define, replace with bit macro - 1. - Refine all the labels from 'out' to 'out_unlock'. - Use struct 'dev' variable and 'dev_err_probe' to optimize the LOC. - Revise for the array initialization from {0} to {}. - Move into rgb folder and rename file name to 'leds-mt6370-rgb'. - Refine the 'comma' usage in struct/enum. - In patch 12/13: - Use 'GENMASK' instead of 'BIT'. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine the return of _mt6370_flash_brightness_set function. - Refine the descriptions. - Use mt6370_clamp() instead of clamp_align(). - Use device resource managed API for v4l2 flash_release. Changes in v5: - In patch 07/13: - Add the comma in the last REGMAP_IRQ_REG_LINE(), DEFINE_RES_IRQ_NAMED() and MFD_CELL_RES() - Add the prefix in the first parameter of all mfd_cell - Move enum and struct mt6370_info to mt6370.h - Remove struct device *dev in struct mt6370_info - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 08/13: - Add comma for the last index of mt6370_reg_init. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine kconfig text. - Remove both 'else' in set_vbus callback. - Remove comma for of_device_id if the assigned member is only one. - In patch 09/13: - Replace using snprintf() with sysfs_emit() in mt6370_adc_read_label() - Remove macro ADC_CONV_TIME_US - Revise all variable ordering - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 10/13: - Replace unsigned int type of pwr_rdy with bool in mt6370_chg_set_online() - Remove redundant 'else' in mt6370_chg_field_get() - Revise 'if-else' in mt6370_chg_field_set() - Revise 'if' condition in mt6370_chg_enable_irq() - Revise all text 'otg' --> 'OTG' - Revise MT6370_MIVR_IBUS_TH_100_MA --> MT6370_MIVR_IBUS_TH_100_mA - Revise the description of Kconfig help text - In patch 12/13: - Refine the coding style. - Use "dev" instead of "&pdev->dev". - In patch 13/13: - Add missed - Add struct device *dev in probe() to make code cleaning - Remove useless including header file , - Remove useless variable uasage in mt6370_init_backlight_properties() - Remove redundant checking enable_gpio in mt6370_bl_update_status() - Remove redundant parentheses in mt6370_bl_get_brightness() - Revise the description of Kconfig help text - Revise the calculation of hys_th_steps Changes in v4: - In patch 02/13: - Add minItems of "io-channel-names" - Replace text "Mediatek" with "MediaTek" - In patch 06/13: - Roll back all "$ref: " to v2 patch style (using "/schemas/...") - In patch 07/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first break and then return" with "return directly" in "mt6370_check_vendor_info()" - Add module name related description in Kconfig helptext - Add Copyright in the source code - Add header file "mt6370.h" for all "#define IRQ" - Adjust Makefile order of MT6370 - Refine "bank_idx" and "bank_addr" in "mt6375_regmap_read()" / "mt6375_regmap_write()" - Refine redundant "else if" in "mt6370_regmap_read()" - In patch 08/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first ret=regulator_(dis/en)able and then return" with "return directly" in "mt6370_tcpc_set_vbus()" - Replace header file with - Add Copyright in the source code - Add module name related description in Kconfig helptext - Remove header file - Refine all probe error by using dev_err_probe() - In patch 09/13: - Replace text "Mediatek" with "MediaTek" - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Add Copyright in the source code - Add module name related description in Kconfig - Add unit suffix of macro "ADC_CONV_POLLING_TIME" - Add new macro "ADC_CONV_TIME_MS" - Adjust the position of include file - Adjust the postions between and - Fix some incorrect characters - In patch 10/13: - Replace text "Mediatek" with "MediaTek" in Kconfig and MODULE_DESCRIPTION() - Replace "mt6370_chg_val_to_reg" and "mt6370_chg_reg_to_val" with "linear_range" API - Replace "first break and then return" with "return directly" in all cases of get/set power_supply_property - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Replace all "return IS_ERR(priv->rdev) ? PTR_ERR(priv->rdev) : 0" with "PTR_ERR_OR_ZERO()" - Replace "priv->dev->of_node" with "dev_of_node()" - Add Copyright in the source code - Add module name related description in Kconfig helptext - Add proper unit of "MT6370_MIVR_IBUS_TH" - Add error check in "mt6370_chg_get_status" - Remove including header file - Remove redundant comma of every enum terminator line - Remove unwanted blank lines - Remove the useless label (toggle_cfo_exit:) - Remove using atomic - Remove using of_match_ptr() - Fix some incorrect characters - Fix updating wrong bits when using ena_gpiod of OTG regulator - Adjust the probe order in probe() - In patch 11/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace text "const" with "constant" in Kconfig - Add Copyright in the source code - In patch 12/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - In patch 13/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - Revise the comment of "PWM HYS STEPS" Changes in v3: - Remove ADC ABI file, which is added in v2 Patch 7 - In patch 02/14: - Add items and remove maxItems of io-channels - Add io-channel-names and describe each item - Add "unevaluatedProperties: false" in "usb-otg-vbus-regulator" - Rename "enable-gpio" to "enable-gpios" in "usb-otg-vbus-regulator" - In patch 03/14: - Use leds-class-multicolor.yaml instead of common.yaml. - Split multi-led and led node. - Add subdevice "led" in "multi-led". - In patch 04/14: - Remove the description of enum. - In patch 05/14: - Rename "mediatek,bled-pwm-hys-input-threshold-steps" to "mediatek,bled-pwm-hys-input-th-steps" - Refine "bled-pwm-hys-input-th-steps", "bled-ovp-microvolt", "bled-ocp-microamp" enum values - In patch 06/14: - Use " in entire patchset - Refine ADC description - Rename "enable-gpio" to "enable-gpios" in "regualtor" - In patch 07/14: - Refine Kconfig help text - Refine error message of unknown vendor ID in mt6370_check_vendor_info() - Refine return value handling of mt6370_regmap_read() - Refine all probe error by using dev_err_probe() - Refine "bank_idx" and "bank_addr" in mt6370_regmap_read() and mt6370_regmap_write() - Add "#define VENID*" and drop the comments in mt6370_check_vendor_info() - Drop "MFD" in MODULE_DESCRIPTION() - In patch 09/14: - Refine Kconfig help text - In patch 10/14: - Refine Kconfig help text - Refine all channel value in read_scale() a. current: uA --> mA b. voltage: uV --> mV c. temperature: degrees Celsius --> milli degrees Celsius - Add "default:" condition of switch statement in read_scale() and read_raw() - Add error message for reading ADC register failed - Add the comment for adc_lock - Add header file for struct of_device_id - Replace "adc" text with "ADC" in all of the error messages - In patch 12/14: - Refine the grammer of the Kconfig. - Change reg mode to the const current mode. - In patch 14/14: - Refine bool properties parsing (pwm-enable, ovp-shutdown, ocp-shutdown) in DT parsing function - Refine u32 and u8 properties parsing (pwm-hys-input-th-steps, ovp-microvolt, ocp-microamp), from using register value to using actual value - Refine error string of "channle-use" parsing failed - Refine Kconfig help text Changes in v2: - In patch 01/15: - Add "unevaluatedProperties: false". - Delete "DT bindings". - Refine the description to fit in 80 columns. - Skip the connector description. - In patch 02/15: - Refine items description of interrupt-name - Rename "usb-otg-vbus" to "usb-otg-vbus-regulator" - Add constraint properties for ADC - In patch 03/15: - Skip not useful description of "^(multi-)?led@[0-3]$" and reg. - Due to the dependency, remove the mention of mfd document directory. - Delete Soft-start property. In design aspect, we think soft-restart should always be enabled, our new chip has deleted the related setting register , also, we don’t allow user adjust this parameter in this chip. - Refine the commit message. - In patch 04/15: - Skip not useful description of "^led@[0-1]$" and reg. - Add apace after '#'. - Refine the commit message. - In patch 05/15: - Remove "binding documentation" in subject title - Refine description of mt6370 backlight binding document - Refine properties name(bled-pwm-hys-input-bit, bled-ovp-microvolt, bled-ocp-microamp) and their description - In patch 06/15: - Refine ADC and Regulator descriptions - Refine include header usage in example - Refine node name to generic node name("pmic@34") - Refine led example indentation - Refine license of mediatek,mt6370_adc.h - Rename the dts example from IRQ define to number. - Remove mediatek,mt6370.h - In patch 07/15: - Add ABI documentation for mt6370 non-standard ADC sysfs interfaces. - In patch 08/15: - Add all IRQ define into mt6370.c. - Refine include header usage - In patch 09/15: - No changes. - In patch 10/15: - Use 'gpiod_get_from_of_node' to replace 'fwnode_gpiod_get_index'. - In patch 11/15: - Refine Kconfig mt6370 help text - Refine mask&shift to FIELD_PREP() - Refine mutex lock name ("lock" -> "adc_lock") - Refine mt6370_adc_read_scale() - Refine mt6370_adc_read_offset() - Refine mt6370_channel_labels[] by using enum to index chan spec - Refine MT6370_ADC_CHAN() - Refine indio_dev->name - Remove useless include header files - In patch 12/15: - Refine mt6370_chg_otg_rdesc.of_match ("mt6370,otg-vbus" -> "usb-otg-vbus-regulator") to match DT binding - In patch 13/15: - Refine Kconfig description. - Remove include "linux/of.h" and use "linux/mod_devicetable.h". - Place a comma for the last element of the const unsigned int array. - Add a comment line for the mutex 'lock'. - In probe function, use 'dev_err_probe' in some judgement to reduce the LOC. - Refine include header usage. BIT/GENMASK -> linux/bits.h FIELD_GET -> linux/bitfield.h - In patch 14/15: - Add blank line. - Replace container_of() with to_mt6370_led() . - Refine description of ramping. - Refine the mt6370_init_common_properties function. - Refine the probe return. - In patch 15/15: - Refine MT6370 help text in Kconfig - Refine DT Parse function - Remove useless enum - Add comment for 6372 backward compatible in bl_update_status() and check_vendor_info() - Using dev_err_probe(); insteads dev_err()&return; in the probe() Alice Chen (2): dt-bindings: leds: Add MediaTek MT6370 flashlight leds: flash: mt6370: Add MediaTek MT6370 flashlight support ChiYuan Huang (7): dt-bindings: usb: Add MediaTek MT6370 TCPC dt-bindings: leds: mt6370: Add MediaTek MT6370 current sink type LED indicator dt-bindings: backlight: Add MediaTek MT6370 backlight dt-bindings: mfd: Add MediaTek MT6370 mfd: mt6370: Add MediaTek MT6370 support usb: typec: tcpci_mt6370: Add MediaTek MT6370 tcpci driver leds: rgb: mt6370: Add MediaTek MT6370 current sink type LED Indicator support ChiaEn Wu (4): dt-bindings: power: supply: Add MediaTek MT6370 Charger iio: adc: mt6370: Add MediaTek MT6370 support power: supply: mt6370: Add MediaTek MT6370 charger driver video: backlight: mt6370: Add MediaTek MT6370 support .../leds/backlight/mediatek,mt6370-backlight.yaml | 121 +++ .../bindings/leds/mediatek,mt6370-flashlight.yaml | 41 + .../bindings/leds/mediatek,mt6370-indicator.yaml | 81 ++ .../devicetree/bindings/mfd/mediatek,mt6370.yaml | 280 ++++++ .../power/supply/mediatek,mt6370-charger.yaml | 88 ++ .../bindings/usb/mediatek,mt6370-tcpc.yaml | 36 + drivers/iio/adc/Kconfig | 12 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/mt6370-adc.c | 305 ++++++ drivers/leds/flash/Kconfig | 12 + drivers/leds/flash/Makefile | 1 + drivers/leds/flash/leds-mt6370-flash.c | 632 ++++++++++++ drivers/leds/rgb/Kconfig | 13 + drivers/leds/rgb/Makefile | 1 + drivers/leds/rgb/leds-mt6370-rgb.c | 1022 ++++++++++++++++++++ drivers/mfd/Kconfig | 16 + drivers/mfd/Makefile | 1 + drivers/mfd/mt6370.c | 312 ++++++ drivers/mfd/mt6370.h | 99 ++ drivers/power/supply/Kconfig | 14 + drivers/power/supply/Makefile | 1 + drivers/power/supply/mt6370-charger.c | 965 ++++++++++++++++++ drivers/usb/typec/tcpm/Kconfig | 11 + drivers/usb/typec/tcpm/Makefile | 1 + drivers/usb/typec/tcpm/tcpci_mt6370.c | 207 ++++ drivers/video/backlight/Kconfig | 13 + drivers/video/backlight/Makefile | 1 + drivers/video/backlight/mt6370-backlight.c | 351 +++++++ include/dt-bindings/iio/adc/mediatek,mt6370_adc.h | 18 + 29 files changed, 4656 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/backlight/mediatek,mt6370-backlight.yaml create mode 100644 Documentation/devicetree/bindings/leds/mediatek,mt6370-flashlight.yaml create mode 100644 Documentation/devicetree/bindings/leds/mediatek,mt6370-indicator.yaml create mode 100644 Documentation/devicetree/bindings/mfd/mediatek,mt6370.yaml create mode 100644 Documentation/devicetree/bindings/power/supply/mediatek,mt6370-charger.yaml create mode 100644 Documentation/devicetree/bindings/usb/mediatek,mt6370-tcpc.yaml create mode 100644 drivers/iio/adc/mt6370-adc.c create mode 100644 drivers/leds/flash/leds-mt6370-flash.c create mode 100644 drivers/leds/rgb/leds-mt6370-rgb.c create mode 100644 drivers/mfd/mt6370.c create mode 100644 drivers/mfd/mt6370.h create mode 100644 drivers/power/supply/mt6370-charger.c create mode 100644 drivers/usb/typec/tcpm/tcpci_mt6370.c create mode 100644 drivers/video/backlight/mt6370-backlight.c create mode 100644 include/dt-bindings/iio/adc/mediatek,mt6370_adc.h -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 75F8FC25B0C for ; Fri, 5 Aug 2022 07:08:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=vkW5ZEkpiyuEtdy7m53SvjM/xZEHt+dDN2JaMEt305w=; b=UmUbpn1oo/fJu4 hdNT6p2z0x3gPHTy14QGlBjHckUJrkb5jccMpS/csb6yJP7+B5gH0ApM+aEX1xAAKlIb9f9mLZI5T N+nSAaA38jsFRkbKXkNe7e6JaxM0LIYubgCFbbQS2blXTmewgSAgwrGjjJOwUTfRW3UkYM/y5v+y1 2Y3uGiUtkaD/ej0vlbrNHE1KonzfgOmmrLFVuW9pGu4ia6JWoFleAe8HZFhl65rtosPto2E2GhrRw GdU02ARts/4MsfGEqOYSH/fTXCoZpG7qdJBzwZGPTeyxVdT3MjkufJeQ/+N2EtxP7zYDYm4+hL2MP uKrWc3RLsILcot8XakQA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oJrPr-00CgvJ-7B; Fri, 05 Aug 2022 07:06:39 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oJrPi-00Cgo5-9J; Fri, 05 Aug 2022 07:06:33 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d20so1516477pfq.5; Fri, 05 Aug 2022 00:06:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=7tsFXU+s5bo2EYkFqWY6zQ+JUiztfwb6P63nZJlXLIE=; b=G3iKqSKrOIH8qHcC5faFSOBzjMxoXYPHd0UTzWpMKS5CVs3fXYbSOPAccciKINtQfD YWbAPaJ0fdyMZtea0E6JxrPfiLRO1KwJVTlq4x3g07BsMYbk5B+B2KnkhK8H3yJrYjNf FqcZNSrbS7vbRdfLOOwcSGr2B37YRpPwhv6yVjViMCQnhK8j9RrYGXSGg8R+vdCArQ1Y hSVRSe43Ll1V28Sxp1U7TDCZi4vkUePK6iyDm6r1w4IpKR9oHP1+ta2ooPLB0RMCg2L9 GYmw9AWiDoOI+lAFGmX64EpVVyoLTlEY4I7P8pRSsDs7veDzkoYGkFUu1uqIo6UyPDRF 4xHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=7tsFXU+s5bo2EYkFqWY6zQ+JUiztfwb6P63nZJlXLIE=; b=rlKM7u+iqOgUdI9rK3hK+SV9beOmyoIP6EttJXMuAEfUcdwNDty5MEU7TT5fGVEU0Q eI4hRz93B3LXpQXnkjrvMwcx34e+cNFcDJ/CHAwQO6PwspMu1IWyzpvGrRM7WZ54bLYg QeSnVMy4cV6LclgyJfNXgW1/DnSIYR+q617EFvD6FZo22Fm/cfSXQa4ynMIzGMlxOy2k VpbxgA1BXIo838Js8jroRKffXdB/cBSZXx0uiIe3scseQZXNVi4fhb0jiovcv6lnrDYp I8mGWRLcTpbyo2nUYCfBVn2HB6lev4Z2SPcYcn9Ot3rvb1NPDqCSLXGLpbXhOxKcNZbo E3Ow== X-Gm-Message-State: ACgBeo2k9D2CiqwjKjP+k/F04HaAEe6hYDR5Wmk4RGMqewXrxiPW97GO aXU9c2DBqKSVgSyD3qoFvmE= X-Google-Smtp-Source: AA6agR7NpbFgICTNOffVu7791eKEeoPBic2ASoOwQysnlvex+ZuKZ+D6WEsGS09gWSLuzM3KOQII4A== X-Received: by 2002:a62:6206:0:b0:52d:39c5:298 with SMTP id w6-20020a626206000000b0052d39c50298mr5365342pfb.30.1659683186516; Fri, 05 Aug 2022 00:06:26 -0700 (PDT) Received: from RD-3580-24288.rt.l (42-72-229-62.emome-ip.hinet.net. [42.72.229.62]) by smtp.gmail.com with ESMTPSA id i5-20020a056a00224500b00525343b5047sm2191616pfu.76.2022.08.05.00.06.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Aug 2022 00:06:26 -0700 (PDT) From: ChiaEn Wu To: lee.jones@linaro.org, daniel.thompson@linaro.org, jingoohan1@gmail.com, pavel@ucw.cz, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, matthias.bgg@gmail.com, sre@kernel.org, chunfeng.yun@mediatek.com, gregkh@linuxfoundation.org, jic23@kernel.org, lars@metafoo.de, lgirdwood@gmail.com, broonie@kernel.org, linux@roeck-us.net, heikki.krogerus@linux.intel.com, deller@gmx.de, andy.shevchenko@gmail.com Cc: chiaen_wu@richtek.com, alice_chen@richtek.com, cy_huang@richtek.com, dri-devel@lists.freedesktop.org, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-usb@vger.kernel.org, linux-iio@vger.kernel.org, linux-fbdev@vger.kernel.org, szunichen@gmail.com Subject: [PATCH v7 00/13] Add MediaTek MT6370 PMIC support Date: Fri, 5 Aug 2022 15:05:57 +0800 Message-Id: <20220805070610.3516-1-peterwu.pub@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220805_000630_435483_552E472E X-CRM114-Status: GOOD ( 22.96 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogQ2hpYUVuIFd1IDxjaGlhZW5fd3VAcmljaHRlay5jb20+CgpUaGlzIHBhdGNoIHNlcmll cyBhZGQgTWVkaWFUZWsgTVQ2MzcwIFBNSUMgc3VwcG9ydC4gVGhlIE1UNjM3MCBpcyBhCmhpZ2hs eS1pbnRlZ3JhdGVkIHNtYXJ0IHBvd2VyIG1hbmFnZW1lbnQgSUMsIHdoaWNoIGluY2x1ZGVzIGEg c2luZ2xlCmNlbGwgTGktSW9uL0xpLVBvbHltZXIgc3dpdGNoaW5nIGJhdHRlcnkgY2hhcmdlciwg YSBVU0IKVHlwZS1DICYgUG93ZXIgRGVsaXZlcnkgKFBEKSBjb250cm9sbGVyLCBkdWFsIEZsYXNo IExFRCBjdXJyZW50IHNvdXJjZXMsCmEgUkdCIExFRCBkcml2ZXIsIGEgYmFja2xpZ2h0IFdMRUQg ZHJpdmVyLCBhIGRpc3BsYXkgYmlhcyBkcml2ZXIgYW5kIGEKZ2VuZXJhbCBMRE8gZm9yIHBvcnRh YmxlIGRldmljZXMuCgpJbiB0aGlzIHNlcmllcyBvZiBwYXRjaGVzLCB3ZSBiYXNlZCBvbiBBbmR5 IFNoZXZjaGVua28ncyBtZmQgcGF0Y2ggd2hpY2gKaXMgdXNlZCB0byBhZGp1c3QgdGhlIE1ha2Vm aWxlIG9yZGVyLgooaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjIwODAxMTE0MjExLjM2 MjY3LTMtYW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tLykKQW1vbmcgdGhpcywgd2Ug YWxzbyB0b29rIHNvbWUgY2hhbmdlcyBmb3IgTVQ2MzcwIGRyaXZlcnMsIHJldmlzZWQgdGhlCk1U NjM3MCBkZXZpY2UgdHJlZSBmaWxlcyB0byBjb21wbHkgd2l0aCBEVCBzcGVjaWZpY2F0aW9ucywg YW5kIHJldmlzZWQKdGhlIHdyb25nIFNvQiBjaGFpbiBpbiBlbnRpcmUgcGF0Y2hlcy4KClBTLgoi W1BBVENIIHY3IDA2LzEzXSBkdC1iaW5kaW5nczogbWZkOiBBZGQgTWVkaWFUZWsgTVQ2MzcwIiBk ZXBlbmRzIG9uIHByZXZpb3VzCkRUIGJpbmRpbmcgcGF0Y2hlcywgc28gYmVmb3JlIGFwcGx5aW5n IHRoaXMgcGF0Y2gsIHBsZWFzZSBhcHBseSBvdGhlciBEVApwYXRjaGVzIGZpcnN0LiBUaGFua3Mh CgpQUzIuCk91ciBNRkQgRFQtYmluZGluZyBkZXBlbmRzIG9uIExFRCBmbGFzaCBhbmQgTEVEIFJH QiBEVC1iaW5kaW5ncywgYnV0IHRoZQpLY29uZmlncyBvZiBMRUQgZmxhc2ggYW5kIExFRCBSR0Ig ZGVwZW5kIG9uIE1GRC4gRHVlIHRvIGRlcGVuZGVuY3kKY29uc2lkZXJhdGlvbiwgd2UgYWxzbyBz dWJtaXQgTEVEIGZsYXNoIGFuZCBMRUQgUkdCIHdpdGggb3RoZXIgcGF0Y2hlcwphdCB0aGlzIHRp bWUuCgoKVGhhbmsgeW91LApDaGlhRW4gV3UKLS0tCkNoYW5nZXMgaW4gdjc6Ci0gSW4gUGF0Y2gg MDUvMTM6CgktIEFkZCB0aGUgc2Vjb25kIGNvbXBhdGlibGUgc3RyaW5nIGZvciAnbXQ2MzcyJwoJ LSBBZGQgJ21lZGlhdGVrLGJsZWQtZXhwb25lbnRpYWwtbW9kZS1lbmFibGUnIHByb3BlcnR5IGZv ciBlbmFibGUgdGhlCgkgIGV4cG9uZW50aWFsIG1vZGUgb2YgYmFja2xpZ2h0IGJyaWdodG5lc3MK CS0gQWRkIHZhbGlkYXRpb24gZm9yIHRoZSBtYXhpbXVtIHZhbHVlIG9mICdkZWZhdWx0LWJyaWdo dG5lc3MnIGFuZAoJICAnbWF4LWJyaWdodG5lc3MnCgotIEluIFBhdGNoIDA3LzEzOgoJLSBNb3Zl ICcjZGVmaW5lIE1UNjM3MF9SRUdfTUFYQUREUicgdG8gdGhlIG5leHQgbGluZSBvZgoJICAnI2Rl ZmluZSBNVDYzNzBfUkVHX0NIR19NQVNLMScKCS0gUmVuYW1lICdNVDYzNzBfUkVHX0FERFJMRU4n IHRvICdNVDYzNzBfTUFYX0FERFJMRU4nCgotIEluIFBhdGNoIDA4LzEzOgoJLSBSZXZpc2UgJ2Rl dm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIC4uLiknIHRvIG9uZSBsaW5lCgktIFJldmlzZSAn cmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyguLi4pJyB3aXRoIHVzaW5nIHBvc2l0aXZlCgkgIGNv bmRpdGlvbmFsCgotIEluIFBhdGNoIDA5LzEzOgoJLSBBZGQgQUlDUigxMDBtQSB+IDM1MG1BKSwg SUNIRygxMDBtQSB+IDgwMG1BKSBtYWNyb3MKCS0gUmVtb3ZlIDQwMG1BIEFJQ1IgYW5kIDkwMG1B IElDSEcgbWFjcm9zCgktIFJldmlzZSB1c2luZyAnaWYtZWxzZScgdG8gJ3N3aXRjaC1jYXNlJyBp biBtdDYzNzBfYWRjX3JlYWRfc2NhbGUoKQoJICB3aGVyZSB0aGUgYWRjIGNoYW5uZWwgaXMgaWJ1 cyBvciBpYmF0CgotIEluIFBhdGNoIDEwLzEzOgoJLSBSZXZpc2UgdGhlIG1ldGhvZCB0byBlbmFi bGUvZGlzYWJsZSBpcnEKCS0gUmV2aXNlIGFsbCAnaWYgKHJldCA8IDApJyB0byAnaWYgKHJldCkn IGFmdGVyIHVzaW5nCgkgIG10NjM3MF9jaGdfZmllbGRfc2V0L2dldCgpCgktIFJldmlzZSBhbGwg J09URycgdGV4dAoKLSBJbiBQYXRjaCAxMS8xMzoKCS0gQWRkIHRoZSBjb21tZW50IGZvciB0aGUg dW5pb24gb2YgJ3N0cnVjdCBtdDYzNzBfbGVkJwoJLSBSZXZpc2UgdGhlIHdyb25nIGRlc2NyaXB0 aW9uIG9mICdBdXRob3JzJwoJLSBSZXZpc2Ugc29tZSB0eXBvcyAoZS5nLiBsZWQgLS0+IExFRCkK CS0gUmV2aXNlICdpZiAoIWZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZygpKScgdG8KCSAgJ3Jl dCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZygpJwoJLSBSZXBsYWNlICdtZW1jcHkoLi4u KScgd2l0aCAncHV0X3VuYWxpZ25lZF9iZTI0KCknIGluCgkgIG10NjM3MF9nZW5fYnJlYXRoX3Bh dHRlcm4oKQoJLSBSZXBsYWNlIGFsbCAnTEVEX09GRicgd2l0aCAwCgktIFJlbW92ZSB0aGUgcmVk dW5kYW50IGFzc2lnbm1lbnQgaW4gbXQ2MzcwX21jX3BhdHRlcm5fY2xlYXIoKQoKLSBJbiBQYXRj aCAxMi8xMzoKCS0gRml4IHRoZSBpbmRlbnRhdGlvbi4KCS0gRm9yIHRoZSB3ZWxsIGRlZmluZWQg bWFjcm8sIHRoZSBwYXJlbnRoZXNpcyBpcyBuZWVkZWQgZm9yIGlucHV0IHBhcmFtZXRlcnMuCgkt IFJlcGxhY2Ugc29tZSBkZXZfd2FybiB0byBkZXZfaW5mbyBpbiAnaW5pdF9mbGFzaF9wcm9wZXJ0 aWVzJy4KCS0gQWRkIHNlbnRpbmVsIGNvbW1lbnQgZm9yIHRoZSB0ZXJtaW5hdG9yIGVudHJ5IG9m IG9mX2RldmljZV9pZC4KCS0gVXNlIHByaXYtPmZsZWRfdG9yY2hfdXNlZCBkaXJlY3RseS4KCS0g RGVsZXRlIDAgaW4ge30uCgktIFVzZSBfdUEgaW5zdGVhZCBvZiBfVUEgaW4gZGVmaW5pdGlvbi4K CS0gUmVmaW5lIHRoZSBkZXNjcmlwdGlvbi4KCS0gVXNlIHVzbGVlcF9yYW5nZSBpbnN0ZWFkIG9m IHVkZWxheS4KCS0gUmVuYW1lIGNvbmZpZyB0byBMRURTX01UNjM3MF9GTEFTSC4KCS0gQWRkIG1p c3NpbmcgIj4iIGluIGNvcHlyaWdodC4KCS0gQ2hhbmdlIHRoZSBLY29uZmlnIG9yZGVyCgotIElu IFBhdGNoIDEzLzEzOgoJLSBBZGQgc3VwcG9ydCAnZXhwb25lbnRpYWwgbW9kZScgcHJvcGVydHkg cGFyc2luZwoJLSBBZGQgJ3JldHVybiBkZXZfZXJyX3Byb2JlKCknIGFmdGVyICdpZiAoSVNfRVJS KHByaXYtPmVuYWJsZV9ncGlvKSknCgktIEFkZCAnbXQ2MzcyJyBjb21wYXRpYmxlIHN0cmluZwoJ LSBSZXZpc2UgS2NvbmZpZyBoZWxwIHRleHQKCS0gUmV2aXNlIHVwZGF0ZSgpL2dldCgpIGZvciBz dXBwb3J0aW5nIDE2Mzg0IHN0ZXBzIChNVDYzNzIpCgktIFJldmlzZSBhbGwgc2hpZnQgdXNhZ2Vz IGZvcm0gdXNpbmcgJ2ZmcygpIGFuZCBmbHMoKScgdG8gZGVmaW5pbmcgdGhlCgkgIF9TSElGVCBt YWNyb3MuCgktIFJldmlzZSAnYnJpZ2h0bmVzcyA/IDEgOiAwJyB0byAnISFicmlnaHRuZXNzJyBp biBncGlvZF9zZXRfdmFsdWUoKQoKCkNoYW5nZXMgaW4gdjY6Ci0gSW4gUGF0Y2ggMDMvMTM6Cgkt IEFkZCAncmVnJyBwcm9wZXJ0eSBvZiBsZWQgb2YgbXVsdGktbGVkIHRvIHByZXZlbnQgY2hlY2tp bmcKCSAgZXJyb3IuCgotIEluIFBhdGNoIDA4LzEzOgoJLSBDb252ZXJ0IHRjcGNpIGFzIGRldmlj ZSByZXNvdXJjZSBtYW5hZ2VkIHdpdGgKCSAgJ2Rldm1fYWRkX2FjdGlvbl9vcl9yZXNldCcgYXBp LgoJLSBSZWZpbmUgcmVtdm9lIGNhbGxiYWNrLgoJLSBSZWZpbmUgdGhlIGNvbW1pdCB0ZXh0IGZy b20gJ3RoaXMgY29tbWl0IGFkZCcgdG8gJ2FkZCcuCgotIEluIFBhdGNoIDA5LzEzOgoJLSBVc2lu ZyAnc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldicgaW4gcHJvYmUoKQoJLSBSZXZpc2Ug dGhlIHNpeHRoIHBhcmFtZXRlciBvZiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoKSBieQoJICBS ZXBsYWNpbmcgJzEwMDAnIHdpdGggJ01JTExJJwoJLSBSZXZpc2UgdGhlIHVuaXRzIG9mIHRocmVl IG1hY3JvcwoJLSBNVDYzNzBfQUlDUl80MDBNQSAtLT4gTVQ2MzcwX0FJQ1JfNDAwX21BCgktIE1U NjM3MF9JQ0hHXzUwME1BIC0tPiBNVDYzNzBfSUNIR181MDBfbUEKCS0gTVQ2MzcwX0lDSEdfOTAw TUEgLS0+IE1UNjM3MF9JQ0hHXzkwMF9tQQoKLSBJbiBwYXRjaCAxMC8xMzoKCS0gUmVtb3ZlIHRo ZSB2YXJhYmxlICgqcHN5X2Rlc2MpIG9mIHN0cnVjdCBtdDYzNzBfcHJpdgoJLSBSZW1vdmUgdGhl IGRlcHJlY2F0ZWQgdXNiIHR5cGUgKFBPV0VSX1NVUFBMWV9UWVBFX1VTQl9DRFAgYW5kCgkgIFBP V0VSX1NVUFBMWV9UWVBFX1VTQl9EQ1ApCgktIFJlbW92ZSB1c2VsZXNzIHJlbW92ZSgpCgktIFJl dmlzZSBhbGwgdW5pdHMgZnJvbSBtaW5pLSB0byBtaWNyby0KCS0gUmV2aXNlIGdldC9zZXQgcG93 ZXJfc3VwcGx5X3Byb3AgKGNoYW5nZSB0byBkaXJlY3RseSByZXR1cm4gZ2V0L3NldAoJICByZWdt YXBfZmllbGQpCgktIFJldmlzZSBwcm9iZSgpIGFuZCB1c2UgZGV2bV9hZGRfYWN0aW9uX29yX3Jl c2V0KCkgZm9yIGhhbmRsaW5nIG9mIHRoZQoJICB3b3JrcXVldWUvZGVsYXllZF93b3JrL211dGV4 CgktIFJldmlzZSBtdDYzNzBfY2hnX3BzeV9kZXNjCgkJLSBBZGQgJy5uYW1lID0gIm10NjM3MC1j aGFyZ2VyIicKCQktIFVzZSAnc3RhdGljIGNvbnN0JwoKLSBJbiBwYXRjaCAxMS8xMzoKCS0gUmVt b3ZlIHRoZSAna28nIGZyb20gbXQ2MzcwIGxlZCBLY29uZmlnIGRlc2NyaXB0aW9uLgoJLSBBZGQg Ym90aCBhdXRob3JzIGZvciBBbGljZSBhbmQgQ2hpWXVhbi4KCS0gVXNlIHBkYXRhIHRvIGRpc3Rp bmd1aXNoIHRoZSBjb2RlIGZyb20gbXQ2MzcwLzcxIHRvIG10NjM3Mi4KCS0gSW5zdGVhZCBvZiAn c3RhdGUnIGRlZmluZSwgdXNlIHRoZSAnc3RhdGUnIGVudW0uCgktIEZpeCB0aGUgdHlwbyBmb3Ig J01UNjM3Ml9QTVdfRFVUWScuCgktIEZvciBwd21fZHV0eSBkZWZpbmUsIHJlcGxhY2Ugd2l0aCBi aXQgbWFjcm8gLSAxLgoJLSBSZWZpbmUgYWxsIHRoZSBsYWJlbHMgZnJvbSAnb3V0JyB0byAnb3V0 X3VubG9jaycuCgktIFVzZSBzdHJ1Y3QgJ2RldicgdmFyaWFibGUgYW5kICdkZXZfZXJyX3Byb2Jl JyB0byBvcHRpbWl6ZSB0aGUgTE9DLgoJLSBSZXZpc2UgZm9yIHRoZSBhcnJheSBpbml0aWFsaXph dGlvbiBmcm9tIHswfSB0byB7fS4KCS0gTW92ZSBpbnRvIHJnYiBmb2xkZXIgYW5kIHJlbmFtZSBm aWxlIG5hbWUgdG8gJ2xlZHMtbXQ2MzcwLXJnYicuCgktIFJlZmluZSB0aGUgJ2NvbW1hJyB1c2Fn ZSBpbiBzdHJ1Y3QvZW51bS4KCi0gSW4gcGF0Y2ggMTIvMTM6CgktIFVzZSAnR0VOTUFTSycgaW5z dGVhZCBvZiAnQklUJy4KCS0gVXNlIGRldl9lcnJfcHJvYmUgdG8gZGVjcmVhc2UgTE9DLgoJLSBV c2UgJ2RldicgdmFyaWFibGUgdG8gbWFrZSBwcm9iZSBmdW5jdGlvbiBtb3JlIGNsZWFuLgoJLSBS ZWZpbmUgdGhlIHJldHVybiBvZiBfbXQ2MzcwX2ZsYXNoX2JyaWdodG5lc3Nfc2V0IGZ1bmN0aW9u LgoJLSBSZWZpbmUgdGhlIGRlc2NyaXB0aW9ucy4KCS0gVXNlIG10NjM3MF9jbGFtcCgpIGluc3Rl YWQgb2YgY2xhbXBfYWxpZ24oKS4KCS0gVXNlIGRldmljZSByZXNvdXJjZSBtYW5hZ2VkIEFQSSBm b3IgdjRsMiBmbGFzaF9yZWxlYXNlLgoKCkNoYW5nZXMgaW4gdjU6Ci0gSW4gcGF0Y2ggMDcvMTM6 CgktIEFkZCB0aGUgY29tbWEgaW4gdGhlIGxhc3QgUkVHTUFQX0lSUV9SRUdfTElORSgpLAoJICBE RUZJTkVfUkVTX0lSUV9OQU1FRCgpIGFuZCBNRkRfQ0VMTF9SRVMoKQoJLSBBZGQgdGhlIHByZWZp eCBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGFsbCBtZmRfY2VsbAoJLSBNb3ZlIGVudW0gYW5k IHN0cnVjdCBtdDYzNzBfaW5mbyB0byBtdDYzNzAuaAoJLSBSZW1vdmUgc3RydWN0IGRldmljZSAq ZGV2IGluIHN0cnVjdCBtdDYzNzBfaW5mbwoJLSBSZXZpc2UgdGhlIGRlc2NyaXB0aW9uIG9mIEtj b25maWcgaGVscCB0ZXh0CgktIFJldmlzZSBNT0RVTEVfREVTQ1JJUFRJT04oKQoKLSBJbiBwYXRj aCAwOC8xMzoKCS0gQWRkIGNvbW1hIGZvciB0aGUgbGFzdCBpbmRleCBvZiBtdDYzNzBfcmVnX2lu aXQuCgktIFVzZSBkZXZfZXJyX3Byb2JlIHRvIGRlY3JlYXNlIExPQy4KCS0gVXNlICdkZXYnIHZh cmlhYmxlIHRvIG1ha2UgcHJvYmUgZnVuY3Rpb24gbW9yZSBjbGVhbi4KCS0gUmVmaW5lIGtjb25m aWcgdGV4dC4KCS0gUmVtb3ZlIGJvdGggJ2Vsc2UnIGluIHNldF92YnVzIGNhbGxiYWNrLgoJLSBS ZW1vdmUgY29tbWEgZm9yIG9mX2RldmljZV9pZCBpZiB0aGUgYXNzaWduZWQgbWVtYmVyIGlzIG9u bHkgb25lLgoKLSBJbiBwYXRjaCAwOS8xMzoKCS0gUmVwbGFjZSB1c2luZyBzbnByaW50ZigpIHdp dGggc3lzZnNfZW1pdCgpIGluIG10NjM3MF9hZGNfcmVhZF9sYWJlbCgpCgktIFJlbW92ZSBtYWNy byBBRENfQ09OVl9USU1FX1VTCgktIFJldmlzZSBhbGwgdmFyaWFibGUgb3JkZXJpbmcKCS0gUmV2 aXNlIHRoZSBkZXNjcmlwdGlvbiBvZiBLY29uZmlnIGhlbHAgdGV4dAoJLSBSZXZpc2UgTU9EVUxF X0RFU0NSSVBUSU9OKCkKCi0gSW4gcGF0Y2ggMTAvMTM6CgktIFJlcGxhY2UgdW5zaWduZWQgaW50 IHR5cGUgb2YgcHdyX3JkeSB3aXRoIGJvb2wgaW4KCSAgbXQ2MzcwX2NoZ19zZXRfb25saW5lKCkK CS0gUmVtb3ZlIHJlZHVuZGFudCAnZWxzZScgaW4gbXQ2MzcwX2NoZ19maWVsZF9nZXQoKQoJLSBS ZXZpc2UgJ2lmLWVsc2UnIGluIG10NjM3MF9jaGdfZmllbGRfc2V0KCkKCS0gUmV2aXNlICdpZicg Y29uZGl0aW9uIGluIG10NjM3MF9jaGdfZW5hYmxlX2lycSgpCgktIFJldmlzZSBhbGwgdGV4dCAn b3RnJyAtLT4gJ09URycKCS0gUmV2aXNlIE1UNjM3MF9NSVZSX0lCVVNfVEhfMTAwX01BIC0tPiBN VDYzNzBfTUlWUl9JQlVTX1RIXzEwMF9tQQoJLSBSZXZpc2UgdGhlIGRlc2NyaXB0aW9uIG9mIEtj b25maWcgaGVscCB0ZXh0CgotIEluIHBhdGNoIDEyLzEzOgoJLSBSZWZpbmUgdGhlIGNvZGluZyBz dHlsZS4KCS0gVXNlICJkZXYiIGluc3RlYWQgb2YgIiZwZGV2LT5kZXYiLgoKLSBJbiBwYXRjaCAx My8xMzoKCS0gQWRkIG1pc3NlZCA8bW9kX2RldmljZXRhYmxlLmg+CgktIEFkZCBzdHJ1Y3QgZGV2 aWNlICpkZXYgaW4gcHJvYmUoKSB0byBtYWtlIGNvZGUgY2xlYW5pbmcKCS0gUmVtb3ZlIHVzZWxl c3MgaW5jbHVkaW5nIGhlYWRlciBmaWxlIDxncGlvL2RyaXZlci5oPiwgPG9mLmg+CgktIFJlbW92 ZSB1c2VsZXNzIHZhcmlhYmxlIHVhc2FnZSBpbiBtdDYzNzBfaW5pdF9iYWNrbGlnaHRfcHJvcGVy dGllcygpCgktIFJlbW92ZSByZWR1bmRhbnQgY2hlY2tpbmcgZW5hYmxlX2dwaW8gaW4gbXQ2Mzcw X2JsX3VwZGF0ZV9zdGF0dXMoKQoJLSBSZW1vdmUgcmVkdW5kYW50IHBhcmVudGhlc2VzIGluIG10 NjM3MF9ibF9nZXRfYnJpZ2h0bmVzcygpCgktIFJldmlzZSB0aGUgZGVzY3JpcHRpb24gb2YgS2Nv bmZpZyBoZWxwIHRleHQKCS0gUmV2aXNlIHRoZSBjYWxjdWxhdGlvbiBvZiBoeXNfdGhfc3RlcHMK CgpDaGFuZ2VzIGluIHY0OgotIEluIHBhdGNoIDAyLzEzOgoJLSBBZGQgbWluSXRlbXMgb2YgImlv LWNoYW5uZWwtbmFtZXMiCgktIFJlcGxhY2UgdGV4dCAiTWVkaWF0ZWsiIHdpdGggIk1lZGlhVGVr IgoKLSBJbiBwYXRjaCAwNi8xMzoKCS0gUm9sbCBiYWNrIGFsbCAiJHJlZjogIiB0byB2MiBwYXRj aCBzdHlsZSAodXNpbmcgIi9zY2hlbWFzLy4uLiIpCgotIEluIHBhdGNoIDA3LzEzOgoJLSBSZXBs YWNlIHRleHQgIk1lZGlhdGVrIiB3aXRoICJNZWRpYVRlayIgaW4gS2NvbmZpZwoJLSBSZXBsYWNl ICJmaXJzdCBicmVhayBhbmQgdGhlbiByZXR1cm4iIHdpdGggInJldHVybiBkaXJlY3RseSIKCSAg aW4gIm10NjM3MF9jaGVja192ZW5kb3JfaW5mbygpIgoJLSBBZGQgbW9kdWxlIG5hbWUgcmVsYXRl ZCBkZXNjcmlwdGlvbiBpbiBLY29uZmlnIGhlbHB0ZXh0CgktIEFkZCBDb3B5cmlnaHQgaW4gdGhl IHNvdXJjZSBjb2RlCgktIEFkZCBoZWFkZXIgZmlsZSAibXQ2MzcwLmgiIGZvciBhbGwgIiNkZWZp bmUgSVJRIgoJLSBBZGp1c3QgTWFrZWZpbGUgb3JkZXIgb2YgTVQ2MzcwCgktIFJlZmluZSAiYmFu a19pZHgiIGFuZCAiYmFua19hZGRyIiBpbgoJICAibXQ2Mzc1X3JlZ21hcF9yZWFkKCkiIC8gIm10 NjM3NV9yZWdtYXBfd3JpdGUoKSIKCS0gUmVmaW5lIHJlZHVuZGFudCAiZWxzZSBpZiIgaW4gIm10 NjM3MF9yZWdtYXBfcmVhZCgpIgoKLSBJbiBwYXRjaCAwOC8xMzoKCS0gUmVwbGFjZSB0ZXh0ICJN ZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25maWcKCS0gUmVwbGFjZSAiZmlyc3QgcmV0 PXJlZ3VsYXRvcl8oZGlzL2VuKWFibGUgYW5kIHRoZW4gcmV0dXJuIgoJICB3aXRoICJyZXR1cm4g ZGlyZWN0bHkiIGluICJtdDYzNzBfdGNwY19zZXRfdmJ1cygpIgoJLSBSZXBsYWNlIGhlYWRlciBm aWxlIDxsaW51eC9vZi5oPiB3aXRoIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4KCS0gQWRkIENv cHlyaWdodCBpbiB0aGUgc291cmNlIGNvZGUKCS0gQWRkIG1vZHVsZSBuYW1lIHJlbGF0ZWQgZGVz Y3JpcHRpb24gaW4gS2NvbmZpZyBoZWxwdGV4dAoJLSBSZW1vdmUgaGVhZGVyIGZpbGUgPGxpbnV4 L29mLmg+CgktIFJlZmluZSBhbGwgcHJvYmUgZXJyb3IgYnkgdXNpbmcgZGV2X2Vycl9wcm9iZSgp CgotIEluIHBhdGNoIDA5LzEzOgoJLSBSZXBsYWNlIHRleHQgIk1lZGlhdGVrIiB3aXRoICJNZWRp YVRlayIKCS0gUmVwbGFjZSBhbGwgImZpcnN0IGRldl9lcnIoKSBhbmQgdGhlbiByZXR1cm4iIHdp dGgKCSAgInJldHVybiBkZXZfZXJyX3Byb2JlKCkiCgktIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNv dXJjZSBjb2RlCgktIEFkZCBtb2R1bGUgbmFtZSByZWxhdGVkIGRlc2NyaXB0aW9uIGluIEtjb25m aWcKCS0gQWRkIHVuaXQgc3VmZml4IG9mIG1hY3JvICJBRENfQ09OVl9QT0xMSU5HX1RJTUUiCgkt IEFkZCBuZXcgbWFjcm8gIkFEQ19DT05WX1RJTUVfTVMiCgktIEFkanVzdCB0aGUgcG9zaXRpb24g b2YgaW5jbHVkZSBmaWxlIDxtZWRpYXRlayxtdDYzNzBfYWRjLmg+CgktIEFkanVzdCB0aGUgcG9z dGlvbnMgYmV0d2VlbiA8bGludXgvbW9kdWxlLmg+IGFuZAoJICAgPGxpbnV4L21vZF9kZXZpY2V0 YWJsZS5oPgoJLSBGaXggc29tZSBpbmNvcnJlY3QgY2hhcmFjdGVycwoKLSBJbiBwYXRjaCAxMC8x MzoKCS0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25maWcg YW5kCgkgIE1PRFVMRV9ERVNDUklQVElPTigpCgktIFJlcGxhY2UgIm10NjM3MF9jaGdfdmFsX3Rv X3JlZyIgYW5kICJtdDYzNzBfY2hnX3JlZ190b192YWwiCgkgIHdpdGggImxpbmVhcl9yYW5nZSIg QVBJCgktIFJlcGxhY2UgImZpcnN0IGJyZWFrIGFuZCB0aGVuIHJldHVybiIgd2l0aCAicmV0dXJu IGRpcmVjdGx5IgoJICBpbiBhbGwgY2FzZXMgb2YgZ2V0L3NldCBwb3dlcl9zdXBwbHlfcHJvcGVy dHkKCS0gUmVwbGFjZSBhbGwgImZpcnN0IGRldl9lcnIoKSBhbmQgdGhlbiByZXR1cm4iIHdpdGgg InJldHVybgoJICBkZXZfZXJyX3Byb2JlKCkiCgktIFJlcGxhY2UgYWxsICJyZXR1cm4gSVNfRVJS KHByaXYtPnJkZXYpID8gUFRSX0VSUihwcml2LT5yZGV2KSA6IDAiCgkgIHdpdGggIlBUUl9FUlJf T1JfWkVSTygpIgoJLSBSZXBsYWNlICJwcml2LT5kZXYtPm9mX25vZGUiIHdpdGggImRldl9vZl9u b2RlKCkiCgktIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCgktIEFkZCBtb2R1bGUg bmFtZSByZWxhdGVkIGRlc2NyaXB0aW9uIGluIEtjb25maWcgaGVscHRleHQKCS0gQWRkIHByb3Bl ciB1bml0IG9mICJNVDYzNzBfTUlWUl9JQlVTX1RIIgoJLSBBZGQgZXJyb3IgY2hlY2sgaW4gIm10 NjM3MF9jaGdfZ2V0X3N0YXR1cyIKCS0gUmVtb3ZlIGluY2x1ZGluZyA8bWVkaWF0ZWssbXQ2Mzcw X2FkYy5oPiBoZWFkZXIgZmlsZQoJLSBSZW1vdmUgcmVkdW5kYW50IGNvbW1hIG9mIGV2ZXJ5IGVu dW0gdGVybWluYXRvciBsaW5lCgktIFJlbW92ZSB1bndhbnRlZCBibGFuayBsaW5lcwoJLSBSZW1v dmUgdGhlIHVzZWxlc3MgbGFiZWwgKHRvZ2dsZV9jZm9fZXhpdDopCgktIFJlbW92ZSB1c2luZyBh dG9taWMKCS0gUmVtb3ZlIHVzaW5nIG9mX21hdGNoX3B0cigpCgktIEZpeCBzb21lIGluY29ycmVj dCBjaGFyYWN0ZXJzCgktIEZpeCB1cGRhdGluZyB3cm9uZyBiaXRzIHdoZW4gdXNpbmcgZW5hX2dw aW9kIG9mIE9URyByZWd1bGF0b3IKCS0gQWRqdXN0IHRoZSBwcm9iZSBvcmRlciBpbiBwcm9iZSgp CgotIEluIHBhdGNoIDExLzEzOgoJLSBSZXBsYWNlIHRleHQgIk1lZGlhdGVrIiB3aXRoICJNZWRp YVRlayIgaW4gS2NvbmZpZwoJLSBSZXBsYWNlIHRleHQgImNvbnN0IiB3aXRoICJjb25zdGFudCIg aW4gS2NvbmZpZwoJLSBBZGQgQ29weXJpZ2h0IGluIHRoZSBzb3VyY2UgY29kZQoKLSBJbiBwYXRj aCAxMi8xMzoKCS0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtj b25maWcKCS0gQWRkIENvcHlyaWdodCBpbiB0aGUgc291cmNlIGNvZGUKCi0gSW4gcGF0Y2ggMTMv MTM6CgktIFJlcGxhY2UgdGV4dCAiTWVkaWF0ZWsiIHdpdGggIk1lZGlhVGVrIiBpbiBLY29uZmln CgktIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCgktIFJldmlzZSB0aGUgY29tbWVu dCBvZiAiUFdNIEhZUyBTVEVQUyIKCgpDaGFuZ2VzIGluIHYzOgotIFJlbW92ZSBBREMgQUJJIGZp bGUsIHdoaWNoIGlzIGFkZGVkIGluIHYyIFBhdGNoIDcKLSBJbiBwYXRjaCAwMi8xNDoKCS0gQWRk IGl0ZW1zIGFuZCByZW1vdmUgbWF4SXRlbXMgb2YgaW8tY2hhbm5lbHMKCS0gQWRkIGlvLWNoYW5u ZWwtbmFtZXMgYW5kIGRlc2NyaWJlIGVhY2ggaXRlbQoJLSBBZGQgInVuZXZhbHVhdGVkUHJvcGVy dGllczogZmFsc2UiIGluICJ1c2Itb3RnLXZidXMtcmVndWxhdG9yIgoJLSBSZW5hbWUgImVuYWJs ZS1ncGlvIiB0byAiZW5hYmxlLWdwaW9zIiBpbiAidXNiLW90Zy12YnVzLXJlZ3VsYXRvciIKCi0g SW4gcGF0Y2ggMDMvMTQ6CgktIFVzZSBsZWRzLWNsYXNzLW11bHRpY29sb3IueWFtbCBpbnN0ZWFk IG9mIGNvbW1vbi55YW1sLgoJLSBTcGxpdCBtdWx0aS1sZWQgYW5kIGxlZCBub2RlLgoJLSBBZGQg c3ViZGV2aWNlICJsZWQiIGluICJtdWx0aS1sZWQiLgoKLSBJbiBwYXRjaCAwNC8xNDoKCS0gUmVt b3ZlIHRoZSBkZXNjcmlwdGlvbiBvZiBlbnVtLgoKLSBJbiBwYXRjaCAwNS8xNDoKCS0gUmVuYW1l ICJtZWRpYXRlayxibGVkLXB3bS1oeXMtaW5wdXQtdGhyZXNob2xkLXN0ZXBzIiB0bwoJICAibWVk aWF0ZWssYmxlZC1wd20taHlzLWlucHV0LXRoLXN0ZXBzIgoJLSBSZWZpbmUgImJsZWQtcHdtLWh5 cy1pbnB1dC10aC1zdGVwcyIsICJibGVkLW92cC1taWNyb3ZvbHQiLAoJICAiYmxlZC1vY3AtbWlj cm9hbXAiIGVudW0gdmFsdWVzCgotIEluIHBhdGNoIDA2LzE0OgoJLSBVc2UgIiBpbiBlbnRpcmUg cGF0Y2hzZXQKCS0gUmVmaW5lIEFEQyBkZXNjcmlwdGlvbgoJLSBSZW5hbWUgImVuYWJsZS1ncGlv IiB0byAiZW5hYmxlLWdwaW9zIiBpbiAicmVndWFsdG9yIgoKLSBJbiBwYXRjaCAwNy8xNDoKCS0g UmVmaW5lIEtjb25maWcgaGVscCB0ZXh0CgktIFJlZmluZSBlcnJvciBtZXNzYWdlIG9mIHVua25v d24gdmVuZG9yIElEIGluCgkgIG10NjM3MF9jaGVja192ZW5kb3JfaW5mbygpCgktIFJlZmluZSBy ZXR1cm4gdmFsdWUgaGFuZGxpbmcgb2YgbXQ2MzcwX3JlZ21hcF9yZWFkKCkKCS0gUmVmaW5lIGFs bCBwcm9iZSBlcnJvciBieSB1c2luZyBkZXZfZXJyX3Byb2JlKCkKCS0gUmVmaW5lICJiYW5rX2lk eCIgYW5kICJiYW5rX2FkZHIiIGluIG10NjM3MF9yZWdtYXBfcmVhZCgpIGFuZAoJICBtdDYzNzBf cmVnbWFwX3dyaXRlKCkKCS0gQWRkICIjZGVmaW5lIFZFTklEKiIgYW5kIGRyb3AgdGhlIGNvbW1l bnRzIGluCgkgIG10NjM3MF9jaGVja192ZW5kb3JfaW5mbygpCgktIERyb3AgIk1GRCIgaW4gTU9E VUxFX0RFU0NSSVBUSU9OKCkKCi0gSW4gcGF0Y2ggMDkvMTQ6CgktIFJlZmluZSBLY29uZmlnIGhl bHAgdGV4dAoKLSBJbiBwYXRjaCAxMC8xNDoKCS0gUmVmaW5lIEtjb25maWcgaGVscCB0ZXh0Cgkt IFJlZmluZSBhbGwgY2hhbm5lbCB2YWx1ZSBpbiByZWFkX3NjYWxlKCkKCQlhLiBjdXJyZW50OiB1 QSAtLT4gbUEKCQliLiB2b2x0YWdlOiB1ViAtLT4gbVYKCQljLiB0ZW1wZXJhdHVyZTogZGVncmVl cyBDZWxzaXVzIC0tPiBtaWxsaSBkZWdyZWVzIENlbHNpdXMKCS0gQWRkICJkZWZhdWx0OiIgY29u ZGl0aW9uIG9mIHN3aXRjaCBzdGF0ZW1lbnQgaW4gcmVhZF9zY2FsZSgpIGFuZCByZWFkX3Jhdygp CgktIEFkZCBlcnJvciBtZXNzYWdlIGZvciByZWFkaW5nIEFEQyByZWdpc3RlciBmYWlsZWQKCS0g QWRkIHRoZSBjb21tZW50IGZvciBhZGNfbG9jawoJLSBBZGQgPGxpbnV4L21vZF9kZXZpY2V0YWJs ZS5oPiBoZWFkZXIgZmlsZSBmb3Igc3RydWN0IG9mX2RldmljZV9pZAoJLSBSZXBsYWNlICJhZGMi IHRleHQgd2l0aCAiQURDIiBpbiBhbGwgb2YgdGhlIGVycm9yIG1lc3NhZ2VzCgotIEluIHBhdGNo IDEyLzE0OgoJLSBSZWZpbmUgdGhlIGdyYW1tZXIgb2YgdGhlIEtjb25maWcuCgktIENoYW5nZSBy ZWcgbW9kZSB0byB0aGUgY29uc3QgY3VycmVudCBtb2RlLgoKLSBJbiBwYXRjaCAxNC8xNDoKCS0g UmVmaW5lIGJvb2wgcHJvcGVydGllcyBwYXJzaW5nIChwd20tZW5hYmxlLCBvdnAtc2h1dGRvd24s IG9jcC1zaHV0ZG93bikgaW4gRFQKCSAgcGFyc2luZyBmdW5jdGlvbgoJLSBSZWZpbmUgdTMyIGFu ZCB1OCBwcm9wZXJ0aWVzIHBhcnNpbmcgKHB3bS1oeXMtaW5wdXQtdGgtc3RlcHMsIG92cC1taWNy b3ZvbHQsCgkgIG9jcC1taWNyb2FtcCksIGZyb20gdXNpbmcgcmVnaXN0ZXIgdmFsdWUgdG8gdXNp bmcgYWN0dWFsIHZhbHVlCgktIFJlZmluZSBlcnJvciBzdHJpbmcgb2YgImNoYW5ubGUtdXNlIiBw YXJzaW5nIGZhaWxlZAoJLSBSZWZpbmUgS2NvbmZpZyBoZWxwIHRleHQKCgpDaGFuZ2VzIGluIHYy OgotIEluIHBhdGNoIDAxLzE1OgoJLSBBZGQgInVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2Ui LgoJLSBEZWxldGUgIkRUIGJpbmRpbmdzIi4KCS0gUmVmaW5lIHRoZSBkZXNjcmlwdGlvbiB0byBm aXQgaW4gODAgY29sdW1ucy4KCS0gU2tpcCB0aGUgY29ubmVjdG9yIGRlc2NyaXB0aW9uLgoKLSBJ biBwYXRjaCAwMi8xNToKCS0gUmVmaW5lIGl0ZW1zIGRlc2NyaXB0aW9uIG9mIGludGVycnVwdC1u YW1lCgktIFJlbmFtZSAidXNiLW90Zy12YnVzIiB0byAidXNiLW90Zy12YnVzLXJlZ3VsYXRvciIK CS0gQWRkIGNvbnN0cmFpbnQgcHJvcGVydGllcyBmb3IgQURDCgotIEluIHBhdGNoIDAzLzE1OgoJ LSBTa2lwIG5vdCB1c2VmdWwgZGVzY3JpcHRpb24gb2YgIl4obXVsdGktKT9sZWRAWzAtM10kIgoJ ICBhbmQgcmVnLgoJLSBEdWUgdG8gdGhlIGRlcGVuZGVuY3ksIHJlbW92ZSB0aGUgbWVudGlvbiBv ZiBtZmQKCSAgZG9jdW1lbnQgZGlyZWN0b3J5LgoJLSBEZWxldGUgU29mdC1zdGFydCBwcm9wZXJ0 eS4gSW4gZGVzaWduIGFzcGVjdCwgd2UgdGhpbmsKCSAgc29mdC1yZXN0YXJ0IHNob3VsZCBhbHdh eXMgYmUgZW5hYmxlZCwgb3VyIG5ldyBjaGlwCgkgIGhhcyBkZWxldGVkIHRoZSByZWxhdGVkIHNl dHRpbmcgcmVnaXN0ZXIgLCBhbHNvLCB3ZSBkb27igJl0CgkgIGFsbG93IHVzZXIgYWRqdXN0IHRo aXMgcGFyYW1ldGVyIGluIHRoaXMgY2hpcC4KCS0gUmVmaW5lIHRoZSBjb21taXQgbWVzc2FnZS4K Ci0gSW4gcGF0Y2ggMDQvMTU6CgktIFNraXAgbm90IHVzZWZ1bCBkZXNjcmlwdGlvbiBvZiAiXmxl ZEBbMC0xXSQiIGFuZCByZWcuCgktIEFkZCBhcGFjZSBhZnRlciAnIycuCgktIFJlZmluZSB0aGUg Y29tbWl0IG1lc3NhZ2UuCgotIEluIHBhdGNoIDA1LzE1OgoJLSBSZW1vdmUgImJpbmRpbmcgZG9j dW1lbnRhdGlvbiIgaW4gc3ViamVjdCB0aXRsZQoJLSBSZWZpbmUgZGVzY3JpcHRpb24gb2YgbXQ2 MzcwIGJhY2tsaWdodCBiaW5kaW5nCgkgIGRvY3VtZW50CgktIFJlZmluZSBwcm9wZXJ0aWVzIG5h bWUoYmxlZC1wd20taHlzLWlucHV0LWJpdCwKCSAgYmxlZC1vdnAtbWljcm92b2x0LCBibGVkLW9j cC1taWNyb2FtcCkgYW5kIHRoZWlyCgkgIGRlc2NyaXB0aW9uCgotIEluIHBhdGNoIDA2LzE1OgoJ LSBSZWZpbmUgQURDIGFuZCBSZWd1bGF0b3IgZGVzY3JpcHRpb25zCgktIFJlZmluZSBpbmNsdWRl IGhlYWRlciB1c2FnZSBpbiBleGFtcGxlCgktIFJlZmluZSBub2RlIG5hbWUgdG8gZ2VuZXJpYyBu b2RlIG5hbWUoInBtaWNAMzQiKQoJLSBSZWZpbmUgbGVkIGV4YW1wbGUgaW5kZW50YXRpb24KCS0g UmVmaW5lIGxpY2Vuc2Ugb2YgbWVkaWF0ZWssbXQ2MzcwX2FkYy5oCgktIFJlbmFtZSB0aGUgZHRz IGV4YW1wbGUgZnJvbSBJUlEgZGVmaW5lIHRvIG51bWJlci4KCS0gUmVtb3ZlIG1lZGlhdGVrLG10 NjM3MC5oCgotIEluIHBhdGNoIDA3LzE1OgoJLSBBZGQgQUJJIGRvY3VtZW50YXRpb24gZm9yIG10 NjM3MCBub24tc3RhbmRhcmQgQURDCgkgIHN5c2ZzIGludGVyZmFjZXMuCgotIEluIHBhdGNoIDA4 LzE1OgoJLSBBZGQgYWxsIElSUSBkZWZpbmUgaW50byBtdDYzNzAuYy4KCS0gUmVmaW5lIGluY2x1 ZGUgaGVhZGVyIHVzYWdlCgotIEluIHBhdGNoIDA5LzE1OgoJLSBObyBjaGFuZ2VzLgoKLSBJbiBw YXRjaCAxMC8xNToKCS0gVXNlICdncGlvZF9nZXRfZnJvbV9vZl9ub2RlJyB0byByZXBsYWNlCgkg ICdmd25vZGVfZ3Bpb2RfZ2V0X2luZGV4Jy4KCi0gSW4gcGF0Y2ggMTEvMTU6CgktIFJlZmluZSBL Y29uZmlnIG10NjM3MCBoZWxwIHRleHQKCS0gUmVmaW5lIG1hc2smc2hpZnQgdG8gRklFTERfUFJF UCgpCgktIFJlZmluZSBtdXRleCBsb2NrIG5hbWUgKCJsb2NrIiAtPiAiYWRjX2xvY2siKQoJLSBS ZWZpbmUgbXQ2MzcwX2FkY19yZWFkX3NjYWxlKCkKCS0gUmVmaW5lIG10NjM3MF9hZGNfcmVhZF9v ZmZzZXQoKQoJLSBSZWZpbmUgbXQ2MzcwX2NoYW5uZWxfbGFiZWxzW10gYnkgdXNpbmcgZW51bSB0 byBpbmRleAoJICBjaGFuIHNwZWMKCS0gUmVmaW5lIE1UNjM3MF9BRENfQ0hBTigpCgktIFJlZmlu ZSBpbmRpb19kZXYtPm5hbWUKCS0gUmVtb3ZlIHVzZWxlc3MgaW5jbHVkZSBoZWFkZXIgZmlsZXMK Ci0gSW4gcGF0Y2ggMTIvMTU6CgktIFJlZmluZSBtdDYzNzBfY2hnX290Z19yZGVzYy5vZl9tYXRj aAoJICAoIm10NjM3MCxvdGctdmJ1cyIgLT4gInVzYi1vdGctdmJ1cy1yZWd1bGF0b3IiKSB0byBt YXRjaAoJICBEVCBiaW5kaW5nCgotIEluIHBhdGNoIDEzLzE1OgoJLSBSZWZpbmUgS2NvbmZpZyBk ZXNjcmlwdGlvbi4KCS0gUmVtb3ZlIGluY2x1ZGUgImxpbnV4L29mLmgiIGFuZCB1c2UKCSAgImxp bnV4L21vZF9kZXZpY2V0YWJsZS5oIi4KCS0gUGxhY2UgYSBjb21tYSBmb3IgdGhlIGxhc3QgZWxl bWVudCBvZiB0aGUgY29uc3QKCSAgdW5zaWduZWQgaW50IGFycmF5LgoJLSBBZGQgYSBjb21tZW50 IGxpbmUgZm9yIHRoZSBtdXRleCAnbG9jaycuCgktIEluIHByb2JlIGZ1bmN0aW9uLCB1c2UgJ2Rl dl9lcnJfcHJvYmUnIGluIHNvbWUKCSAganVkZ2VtZW50IHRvIHJlZHVjZSB0aGUgTE9DLgoJLSBS ZWZpbmUgaW5jbHVkZSBoZWFkZXIgdXNhZ2UuCgkgIEJJVC9HRU5NQVNLIC0+IGxpbnV4L2JpdHMu aAoJICBGSUVMRF9HRVQgLT4gbGludXgvYml0ZmllbGQuaAoKLSBJbiBwYXRjaCAxNC8xNToKCS0g QWRkIGJsYW5rIGxpbmUuCgktIFJlcGxhY2UgY29udGFpbmVyX29mKCkgd2l0aCB0b19tdDYzNzBf bGVkKCkgLgoJLSBSZWZpbmUgZGVzY3JpcHRpb24gb2YgcmFtcGluZy4KCS0gUmVmaW5lIHRoZSBt dDYzNzBfaW5pdF9jb21tb25fcHJvcGVydGllcyBmdW5jdGlvbi4KCS0gUmVmaW5lIHRoZSBwcm9i ZSByZXR1cm4uCgotIEluIHBhdGNoIDE1LzE1OgoJLSBSZWZpbmUgTVQ2MzcwIGhlbHAgdGV4dCBp biBLY29uZmlnCgktIFJlZmluZSBEVCBQYXJzZSBmdW5jdGlvbgoJLSBSZW1vdmUgdXNlbGVzcyBl bnVtCgktIEFkZCBjb21tZW50IGZvciA2MzcyIGJhY2t3YXJkIGNvbXBhdGlibGUgaW4KCSAgYmxf dXBkYXRlX3N0YXR1cygpIGFuZAoJICBjaGVja192ZW5kb3JfaW5mbygpCgktIFVzaW5nIGRldl9l cnJfcHJvYmUoKTsgaW5zdGVhZHMgZGV2X2VycigpJnJldHVybjsgaW4KCSAgdGhlIHByb2JlKCkK CgpBbGljZSBDaGVuICgyKToKICBkdC1iaW5kaW5nczogbGVkczogQWRkIE1lZGlhVGVrIE1UNjM3 MCBmbGFzaGxpZ2h0CiAgbGVkczogZmxhc2g6IG10NjM3MDogQWRkIE1lZGlhVGVrIE1UNjM3MCBm bGFzaGxpZ2h0IHN1cHBvcnQKCkNoaVl1YW4gSHVhbmcgKDcpOgogIGR0LWJpbmRpbmdzOiB1c2I6 IEFkZCBNZWRpYVRlayBNVDYzNzAgVENQQwogIGR0LWJpbmRpbmdzOiBsZWRzOiBtdDYzNzA6IEFk ZCBNZWRpYVRlayBNVDYzNzAgY3VycmVudCBzaW5rIHR5cGUgTEVECiAgICBpbmRpY2F0b3IKICBk dC1iaW5kaW5nczogYmFja2xpZ2h0OiBBZGQgTWVkaWFUZWsgTVQ2MzcwIGJhY2tsaWdodAogIGR0 LWJpbmRpbmdzOiBtZmQ6IEFkZCBNZWRpYVRlayBNVDYzNzAKICBtZmQ6IG10NjM3MDogQWRkIE1l ZGlhVGVrIE1UNjM3MCBzdXBwb3J0CiAgdXNiOiB0eXBlYzogdGNwY2lfbXQ2MzcwOiBBZGQgTWVk aWFUZWsgTVQ2MzcwIHRjcGNpIGRyaXZlcgogIGxlZHM6IHJnYjogbXQ2MzcwOiBBZGQgTWVkaWFU ZWsgTVQ2MzcwIGN1cnJlbnQgc2luayB0eXBlIExFRCBJbmRpY2F0b3IKICAgIHN1cHBvcnQKCkNo aWFFbiBXdSAoNCk6CiAgZHQtYmluZGluZ3M6IHBvd2VyOiBzdXBwbHk6IEFkZCBNZWRpYVRlayBN VDYzNzAgQ2hhcmdlcgogIGlpbzogYWRjOiBtdDYzNzA6IEFkZCBNZWRpYVRlayBNVDYzNzAgc3Vw cG9ydAogIHBvd2VyOiBzdXBwbHk6IG10NjM3MDogQWRkIE1lZGlhVGVrIE1UNjM3MCBjaGFyZ2Vy IGRyaXZlcgogIHZpZGVvOiBiYWNrbGlnaHQ6IG10NjM3MDogQWRkIE1lZGlhVGVrIE1UNjM3MCBz dXBwb3J0CgogLi4uL2xlZHMvYmFja2xpZ2h0L21lZGlhdGVrLG10NjM3MC1iYWNrbGlnaHQueWFt bCAgfCAgMTIxICsrKwogLi4uL2JpbmRpbmdzL2xlZHMvbWVkaWF0ZWssbXQ2MzcwLWZsYXNobGln aHQueWFtbCAgfCAgIDQxICsKIC4uLi9iaW5kaW5ncy9sZWRzL21lZGlhdGVrLG10NjM3MC1pbmRp Y2F0b3IueWFtbCAgIHwgICA4MSArKwogLi4uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21lZGlh dGVrLG10NjM3MC55YW1sICAgfCAgMjgwICsrKysrKwogLi4uL3Bvd2VyL3N1cHBseS9tZWRpYXRl ayxtdDYzNzAtY2hhcmdlci55YW1sICAgICAgfCAgIDg4ICsrCiAuLi4vYmluZGluZ3MvdXNiL21l ZGlhdGVrLG10NjM3MC10Y3BjLnlhbWwgICAgICAgICB8ICAgMzYgKwogZHJpdmVycy9paW8vYWRj L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIGRyaXZlcnMvaWlv L2FkYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJz L2lpby9hZGMvbXQ2MzcwLWFkYy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzMDUgKysrKysr CiBkcml2ZXJzL2xlZHMvZmxhc2gvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MTIgKwogZHJpdmVycy9sZWRzL2ZsYXNoL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKIGRyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLW10NjM3MC1mbGFzaC5jICAgICAgICAg ICAgIHwgIDYzMiArKysrKysrKysrKysKIGRyaXZlcnMvbGVkcy9yZ2IvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBkcml2ZXJzL2xlZHMvcmdiL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9sZWRzL3JnYi9sZWRzLW10 NjM3MC1yZ2IuYyAgICAgICAgICAgICAgICAgfCAxMDIyICsrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL21mZC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYg KwogZHJpdmVycy9tZmQvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKIGRyaXZlcnMvbWZkL210NjM3MC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDMxMiArKysrKysKIGRyaXZlcnMvbWZkL210NjM3MC5oICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA5OSArKwogZHJpdmVycy9wb3dlci9zdXBwbHkvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDE0ICsKIGRyaXZlcnMvcG93ZXIvc3VwcGx5L01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL3Bvd2VyL3N1cHBseS9tdDYzNzAt Y2hhcmdlci5jICAgICAgICAgICAgICB8ICA5NjUgKysrKysrKysrKysrKysrKysrCiBkcml2ZXJz L3VzYi90eXBlYy90Y3BtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogZHJp dmVycy91c2IvdHlwZWMvdGNwbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK IGRyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwY2lfbXQ2MzcwLmMgICAgICAgICAgICAgIHwgIDIw NyArKysrCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICB8ICAgMTMgKwogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgfCAgICAxICsKIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L210NjM3MC1iYWNrbGlnaHQu YyAgICAgICAgIHwgIDM1MSArKysrKysrCiBpbmNsdWRlL2R0LWJpbmRpbmdzL2lpby9hZGMvbWVk aWF0ZWssbXQ2MzcwX2FkYy5oICB8ICAgMTggKwogMjkgZmlsZXMgY2hhbmdlZCwgNDY1NiBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL2xlZHMvYmFja2xpZ2h0L21lZGlhdGVrLG10NjM3MC1iYWNrbGlnaHQueWFtbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL21l ZGlhdGVrLG10NjM3MC1mbGFzaGxpZ2h0LnlhbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVu dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9tZWRpYXRlayxtdDYzNzAtaW5kaWNhdG9y LnlhbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvbWZkL21lZGlhdGVrLG10NjM3MC55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3N1cHBseS9tZWRpYXRlayxtdDYzNzAtY2hh cmdlci55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL3VzYi9tZWRpYXRlayxtdDYzNzAtdGNwYy55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9paW8vYWRjL210NjM3MC1hZGMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bGVkcy9mbGFzaC9sZWRzLW10NjM3MC1mbGFzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9sZWRzL3JnYi9sZWRzLW10NjM3MC1yZ2IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bWZkL210NjM3MC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZmQvbXQ2MzcwLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL3N1cHBseS9tdDYzNzAtY2hhcmdlci5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BjaV9tdDYzNzAuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L210NjM3MC1iYWNrbGln aHQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHQtYmluZGluZ3MvaWlvL2FkYy9tZWRp YXRlayxtdDYzNzBfYWRjLmgKCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 201B8C25B07 for ; Fri, 5 Aug 2022 07:30:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 28C44B1997; Fri, 5 Aug 2022 07:28:19 +0000 (UTC) Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 48FBCB2BA6 for ; Fri, 5 Aug 2022 07:06:27 +0000 (UTC) Received: by mail-pf1-x42b.google.com with SMTP id c139so1530103pfc.2 for ; Fri, 05 Aug 2022 00:06:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=7tsFXU+s5bo2EYkFqWY6zQ+JUiztfwb6P63nZJlXLIE=; b=G3iKqSKrOIH8qHcC5faFSOBzjMxoXYPHd0UTzWpMKS5CVs3fXYbSOPAccciKINtQfD YWbAPaJ0fdyMZtea0E6JxrPfiLRO1KwJVTlq4x3g07BsMYbk5B+B2KnkhK8H3yJrYjNf FqcZNSrbS7vbRdfLOOwcSGr2B37YRpPwhv6yVjViMCQnhK8j9RrYGXSGg8R+vdCArQ1Y hSVRSe43Ll1V28Sxp1U7TDCZi4vkUePK6iyDm6r1w4IpKR9oHP1+ta2ooPLB0RMCg2L9 GYmw9AWiDoOI+lAFGmX64EpVVyoLTlEY4I7P8pRSsDs7veDzkoYGkFUu1uqIo6UyPDRF 4xHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=7tsFXU+s5bo2EYkFqWY6zQ+JUiztfwb6P63nZJlXLIE=; b=XzO10O/d4pqE9qTefbwi2FTArEiyaBaQh5MW6fpT3/3bCJuVQXz8kIUjWwlewjGmqH 2nTZ6a/MMujw/JTq9EdF+wtruy/M9V2h5GlgkH3bW7ywke0HNfm/W9u7A7TcNclEFoqy tLoh7jCASRmqzn5pcVyiPknubLv8Yty0TuxwLNhSMsUCp5cqQcZE+mluasn1v6nTUzLs +EMe0dYHylH1XCQ/mr0Kruqf8Cb/yCI4+s0AoTvA03R92SEx2vts64bTNVqzrsIZru0i HV9kwNKPtOvDhRiN0o1MOUGgk66cI/z5vGUejWw8+JIOL7brz0TyW2rcUYSvupPDGmKS FL4Q== X-Gm-Message-State: ACgBeo2VI0CJxZjnQNg/M4yol6EuHwYmr8lVUu/Xa65ph89pqfU6ffc5 aedmfYQPOwr3QMao4uWfEuI= X-Google-Smtp-Source: AA6agR7NpbFgICTNOffVu7791eKEeoPBic2ASoOwQysnlvex+ZuKZ+D6WEsGS09gWSLuzM3KOQII4A== X-Received: by 2002:a62:6206:0:b0:52d:39c5:298 with SMTP id w6-20020a626206000000b0052d39c50298mr5365342pfb.30.1659683186516; Fri, 05 Aug 2022 00:06:26 -0700 (PDT) Received: from RD-3580-24288.rt.l (42-72-229-62.emome-ip.hinet.net. [42.72.229.62]) by smtp.gmail.com with ESMTPSA id i5-20020a056a00224500b00525343b5047sm2191616pfu.76.2022.08.05.00.06.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Aug 2022 00:06:26 -0700 (PDT) From: ChiaEn Wu To: lee.jones@linaro.org, daniel.thompson@linaro.org, jingoohan1@gmail.com, pavel@ucw.cz, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, matthias.bgg@gmail.com, sre@kernel.org, chunfeng.yun@mediatek.com, gregkh@linuxfoundation.org, jic23@kernel.org, lars@metafoo.de, lgirdwood@gmail.com, broonie@kernel.org, linux@roeck-us.net, heikki.krogerus@linux.intel.com, deller@gmx.de, andy.shevchenko@gmail.com Subject: [PATCH v7 00/13] Add MediaTek MT6370 PMIC support Date: Fri, 5 Aug 2022 15:05:57 +0800 Message-Id: <20220805070610.3516-1-peterwu.pub@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-fbdev@vger.kernel.org, szunichen@gmail.com, alice_chen@richtek.com, linux-pm@vger.kernel.org, linux-iio@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, cy_huang@richtek.com, chiaen_wu@richtek.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-leds@vger.kernel.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: ChiaEn Wu This patch series add MediaTek MT6370 PMIC support. The MT6370 is a highly-integrated smart power management IC, which includes a single cell Li-Ion/Li-Polymer switching battery charger, a USB Type-C & Power Delivery (PD) controller, dual Flash LED current sources, a RGB LED driver, a backlight WLED driver, a display bias driver and a general LDO for portable devices. In this series of patches, we based on Andy Shevchenko's mfd patch which is used to adjust the Makefile order. (https://lore.kernel.org/all/20220801114211.36267-3-andriy.shevchenko@linux.intel.com/) Among this, we also took some changes for MT6370 drivers, revised the MT6370 device tree files to comply with DT specifications, and revised the wrong SoB chain in entire patches. PS. "[PATCH v7 06/13] dt-bindings: mfd: Add MediaTek MT6370" depends on previous DT binding patches, so before applying this patch, please apply other DT patches first. Thanks! PS2. Our MFD DT-binding depends on LED flash and LED RGB DT-bindings, but the Kconfigs of LED flash and LED RGB depend on MFD. Due to dependency consideration, we also submit LED flash and LED RGB with other patches at this time. Thank you, ChiaEn Wu --- Changes in v7: - In Patch 05/13: - Add the second compatible string for 'mt6372' - Add 'mediatek,bled-exponential-mode-enable' property for enable the exponential mode of backlight brightness - Add validation for the maximum value of 'default-brightness' and 'max-brightness' - In Patch 07/13: - Move '#define MT6370_REG_MAXADDR' to the next line of '#define MT6370_REG_CHG_MASK1' - Rename 'MT6370_REG_ADDRLEN' to 'MT6370_MAX_ADDRLEN' - In Patch 08/13: - Revise 'devm_add_action_or_reset(dev, ...)' to one line - Revise 'return regmap_update_bits(...)' with using positive conditional - In Patch 09/13: - Add AICR(100mA ~ 350mA), ICHG(100mA ~ 800mA) macros - Remove 400mA AICR and 900mA ICHG macros - Revise using 'if-else' to 'switch-case' in mt6370_adc_read_scale() where the adc channel is ibus or ibat - In Patch 10/13: - Revise the method to enable/disable irq - Revise all 'if (ret < 0)' to 'if (ret)' after using mt6370_chg_field_set/get() - Revise all 'OTG' text - In Patch 11/13: - Add the comment for the union of 'struct mt6370_led' - Revise the wrong description of 'Authors' - Revise some typos (e.g. led --> LED) - Revise 'if (!fwnode_property_read_string())' to 'ret = fwnode_property_read_string()' - Replace 'memcpy(...)' with 'put_unaligned_be24()' in mt6370_gen_breath_pattern() - Replace all 'LED_OFF' with 0 - Remove the redundant assignment in mt6370_mc_pattern_clear() - In Patch 12/13: - Fix the indentation. - For the well defined macro, the parenthesis is needed for input parameters. - Replace some dev_warn to dev_info in 'init_flash_properties'. - Add sentinel comment for the terminator entry of of_device_id. - Use priv->fled_torch_used directly. - Delete 0 in {}. - Use _uA instead of _UA in definition. - Refine the description. - Use usleep_range instead of udelay. - Rename config to LEDS_MT6370_FLASH. - Add missing ">" in copyright. - Change the Kconfig order - In Patch 13/13: - Add support 'exponential mode' property parsing - Add 'return dev_err_probe()' after 'if (IS_ERR(priv->enable_gpio))' - Add 'mt6372' compatible string - Revise Kconfig help text - Revise update()/get() for supporting 16384 steps (MT6372) - Revise all shift usages form using 'ffs() and fls()' to defining the _SHIFT macros. - Revise 'brightness ? 1 : 0' to '!!brightness' in gpiod_set_value() Changes in v6: - In Patch 03/13: - Add 'reg' property of led of multi-led to prevent checking error. - In Patch 08/13: - Convert tcpci as device resource managed with 'devm_add_action_or_reset' api. - Refine remvoe callback. - Refine the commit text from 'this commit add' to 'add'. - In Patch 09/13: - Using 'struct device *dev = &pdev->dev' in probe() - Revise the sixth parameter of regmap_read_poll_timeout() by Replacing '1000' with 'MILLI' - Revise the units of three macros - MT6370_AICR_400MA --> MT6370_AICR_400_mA - MT6370_ICHG_500MA --> MT6370_ICHG_500_mA - MT6370_ICHG_900MA --> MT6370_ICHG_900_mA - In patch 10/13: - Remove the varable (*psy_desc) of struct mt6370_priv - Remove the deprecated usb type (POWER_SUPPLY_TYPE_USB_CDP and POWER_SUPPLY_TYPE_USB_DCP) - Remove useless remove() - Revise all units from mini- to micro- - Revise get/set power_supply_prop (change to directly return get/set regmap_field) - Revise probe() and use devm_add_action_or_reset() for handling of the workqueue/delayed_work/mutex - Revise mt6370_chg_psy_desc - Add '.name = "mt6370-charger"' - Use 'static const' - In patch 11/13: - Remove the 'ko' from mt6370 led Kconfig description. - Add both authors for Alice and ChiYuan. - Use pdata to distinguish the code from mt6370/71 to mt6372. - Instead of 'state' define, use the 'state' enum. - Fix the typo for 'MT6372_PMW_DUTY'. - For pwm_duty define, replace with bit macro - 1. - Refine all the labels from 'out' to 'out_unlock'. - Use struct 'dev' variable and 'dev_err_probe' to optimize the LOC. - Revise for the array initialization from {0} to {}. - Move into rgb folder and rename file name to 'leds-mt6370-rgb'. - Refine the 'comma' usage in struct/enum. - In patch 12/13: - Use 'GENMASK' instead of 'BIT'. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine the return of _mt6370_flash_brightness_set function. - Refine the descriptions. - Use mt6370_clamp() instead of clamp_align(). - Use device resource managed API for v4l2 flash_release. Changes in v5: - In patch 07/13: - Add the comma in the last REGMAP_IRQ_REG_LINE(), DEFINE_RES_IRQ_NAMED() and MFD_CELL_RES() - Add the prefix in the first parameter of all mfd_cell - Move enum and struct mt6370_info to mt6370.h - Remove struct device *dev in struct mt6370_info - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 08/13: - Add comma for the last index of mt6370_reg_init. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine kconfig text. - Remove both 'else' in set_vbus callback. - Remove comma for of_device_id if the assigned member is only one. - In patch 09/13: - Replace using snprintf() with sysfs_emit() in mt6370_adc_read_label() - Remove macro ADC_CONV_TIME_US - Revise all variable ordering - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 10/13: - Replace unsigned int type of pwr_rdy with bool in mt6370_chg_set_online() - Remove redundant 'else' in mt6370_chg_field_get() - Revise 'if-else' in mt6370_chg_field_set() - Revise 'if' condition in mt6370_chg_enable_irq() - Revise all text 'otg' --> 'OTG' - Revise MT6370_MIVR_IBUS_TH_100_MA --> MT6370_MIVR_IBUS_TH_100_mA - Revise the description of Kconfig help text - In patch 12/13: - Refine the coding style. - Use "dev" instead of "&pdev->dev". - In patch 13/13: - Add missed - Add struct device *dev in probe() to make code cleaning - Remove useless including header file , - Remove useless variable uasage in mt6370_init_backlight_properties() - Remove redundant checking enable_gpio in mt6370_bl_update_status() - Remove redundant parentheses in mt6370_bl_get_brightness() - Revise the description of Kconfig help text - Revise the calculation of hys_th_steps Changes in v4: - In patch 02/13: - Add minItems of "io-channel-names" - Replace text "Mediatek" with "MediaTek" - In patch 06/13: - Roll back all "$ref: " to v2 patch style (using "/schemas/...") - In patch 07/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first break and then return" with "return directly" in "mt6370_check_vendor_info()" - Add module name related description in Kconfig helptext - Add Copyright in the source code - Add header file "mt6370.h" for all "#define IRQ" - Adjust Makefile order of MT6370 - Refine "bank_idx" and "bank_addr" in "mt6375_regmap_read()" / "mt6375_regmap_write()" - Refine redundant "else if" in "mt6370_regmap_read()" - In patch 08/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first ret=regulator_(dis/en)able and then return" with "return directly" in "mt6370_tcpc_set_vbus()" - Replace header file with - Add Copyright in the source code - Add module name related description in Kconfig helptext - Remove header file - Refine all probe error by using dev_err_probe() - In patch 09/13: - Replace text "Mediatek" with "MediaTek" - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Add Copyright in the source code - Add module name related description in Kconfig - Add unit suffix of macro "ADC_CONV_POLLING_TIME" - Add new macro "ADC_CONV_TIME_MS" - Adjust the position of include file - Adjust the postions between and - Fix some incorrect characters - In patch 10/13: - Replace text "Mediatek" with "MediaTek" in Kconfig and MODULE_DESCRIPTION() - Replace "mt6370_chg_val_to_reg" and "mt6370_chg_reg_to_val" with "linear_range" API - Replace "first break and then return" with "return directly" in all cases of get/set power_supply_property - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Replace all "return IS_ERR(priv->rdev) ? PTR_ERR(priv->rdev) : 0" with "PTR_ERR_OR_ZERO()" - Replace "priv->dev->of_node" with "dev_of_node()" - Add Copyright in the source code - Add module name related description in Kconfig helptext - Add proper unit of "MT6370_MIVR_IBUS_TH" - Add error check in "mt6370_chg_get_status" - Remove including header file - Remove redundant comma of every enum terminator line - Remove unwanted blank lines - Remove the useless label (toggle_cfo_exit:) - Remove using atomic - Remove using of_match_ptr() - Fix some incorrect characters - Fix updating wrong bits when using ena_gpiod of OTG regulator - Adjust the probe order in probe() - In patch 11/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace text "const" with "constant" in Kconfig - Add Copyright in the source code - In patch 12/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - In patch 13/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - Revise the comment of "PWM HYS STEPS" Changes in v3: - Remove ADC ABI file, which is added in v2 Patch 7 - In patch 02/14: - Add items and remove maxItems of io-channels - Add io-channel-names and describe each item - Add "unevaluatedProperties: false" in "usb-otg-vbus-regulator" - Rename "enable-gpio" to "enable-gpios" in "usb-otg-vbus-regulator" - In patch 03/14: - Use leds-class-multicolor.yaml instead of common.yaml. - Split multi-led and led node. - Add subdevice "led" in "multi-led". - In patch 04/14: - Remove the description of enum. - In patch 05/14: - Rename "mediatek,bled-pwm-hys-input-threshold-steps" to "mediatek,bled-pwm-hys-input-th-steps" - Refine "bled-pwm-hys-input-th-steps", "bled-ovp-microvolt", "bled-ocp-microamp" enum values - In patch 06/14: - Use " in entire patchset - Refine ADC description - Rename "enable-gpio" to "enable-gpios" in "regualtor" - In patch 07/14: - Refine Kconfig help text - Refine error message of unknown vendor ID in mt6370_check_vendor_info() - Refine return value handling of mt6370_regmap_read() - Refine all probe error by using dev_err_probe() - Refine "bank_idx" and "bank_addr" in mt6370_regmap_read() and mt6370_regmap_write() - Add "#define VENID*" and drop the comments in mt6370_check_vendor_info() - Drop "MFD" in MODULE_DESCRIPTION() - In patch 09/14: - Refine Kconfig help text - In patch 10/14: - Refine Kconfig help text - Refine all channel value in read_scale() a. current: uA --> mA b. voltage: uV --> mV c. temperature: degrees Celsius --> milli degrees Celsius - Add "default:" condition of switch statement in read_scale() and read_raw() - Add error message for reading ADC register failed - Add the comment for adc_lock - Add header file for struct of_device_id - Replace "adc" text with "ADC" in all of the error messages - In patch 12/14: - Refine the grammer of the Kconfig. - Change reg mode to the const current mode. - In patch 14/14: - Refine bool properties parsing (pwm-enable, ovp-shutdown, ocp-shutdown) in DT parsing function - Refine u32 and u8 properties parsing (pwm-hys-input-th-steps, ovp-microvolt, ocp-microamp), from using register value to using actual value - Refine error string of "channle-use" parsing failed - Refine Kconfig help text Changes in v2: - In patch 01/15: - Add "unevaluatedProperties: false". - Delete "DT bindings". - Refine the description to fit in 80 columns. - Skip the connector description. - In patch 02/15: - Refine items description of interrupt-name - Rename "usb-otg-vbus" to "usb-otg-vbus-regulator" - Add constraint properties for ADC - In patch 03/15: - Skip not useful description of "^(multi-)?led@[0-3]$" and reg. - Due to the dependency, remove the mention of mfd document directory. - Delete Soft-start property. In design aspect, we think soft-restart should always be enabled, our new chip has deleted the related setting register , also, we don’t allow user adjust this parameter in this chip. - Refine the commit message. - In patch 04/15: - Skip not useful description of "^led@[0-1]$" and reg. - Add apace after '#'. - Refine the commit message. - In patch 05/15: - Remove "binding documentation" in subject title - Refine description of mt6370 backlight binding document - Refine properties name(bled-pwm-hys-input-bit, bled-ovp-microvolt, bled-ocp-microamp) and their description - In patch 06/15: - Refine ADC and Regulator descriptions - Refine include header usage in example - Refine node name to generic node name("pmic@34") - Refine led example indentation - Refine license of mediatek,mt6370_adc.h - Rename the dts example from IRQ define to number. - Remove mediatek,mt6370.h - In patch 07/15: - Add ABI documentation for mt6370 non-standard ADC sysfs interfaces. - In patch 08/15: - Add all IRQ define into mt6370.c. - Refine include header usage - In patch 09/15: - No changes. - In patch 10/15: - Use 'gpiod_get_from_of_node' to replace 'fwnode_gpiod_get_index'. - In patch 11/15: - Refine Kconfig mt6370 help text - Refine mask&shift to FIELD_PREP() - Refine mutex lock name ("lock" -> "adc_lock") - Refine mt6370_adc_read_scale() - Refine mt6370_adc_read_offset() - Refine mt6370_channel_labels[] by using enum to index chan spec - Refine MT6370_ADC_CHAN() - Refine indio_dev->name - Remove useless include header files - In patch 12/15: - Refine mt6370_chg_otg_rdesc.of_match ("mt6370,otg-vbus" -> "usb-otg-vbus-regulator") to match DT binding - In patch 13/15: - Refine Kconfig description. - Remove include "linux/of.h" and use "linux/mod_devicetable.h". - Place a comma for the last element of the const unsigned int array. - Add a comment line for the mutex 'lock'. - In probe function, use 'dev_err_probe' in some judgement to reduce the LOC. - Refine include header usage. BIT/GENMASK -> linux/bits.h FIELD_GET -> linux/bitfield.h - In patch 14/15: - Add blank line. - Replace container_of() with to_mt6370_led() . - Refine description of ramping. - Refine the mt6370_init_common_properties function. - Refine the probe return. - In patch 15/15: - Refine MT6370 help text in Kconfig - Refine DT Parse function - Remove useless enum - Add comment for 6372 backward compatible in bl_update_status() and check_vendor_info() - Using dev_err_probe(); insteads dev_err()&return; in the probe() Alice Chen (2): dt-bindings: leds: Add MediaTek MT6370 flashlight leds: flash: mt6370: Add MediaTek MT6370 flashlight support ChiYuan Huang (7): dt-bindings: usb: Add MediaTek MT6370 TCPC dt-bindings: leds: mt6370: Add MediaTek MT6370 current sink type LED indicator dt-bindings: backlight: Add MediaTek MT6370 backlight dt-bindings: mfd: Add MediaTek MT6370 mfd: mt6370: Add MediaTek MT6370 support usb: typec: tcpci_mt6370: Add MediaTek MT6370 tcpci driver leds: rgb: mt6370: Add MediaTek MT6370 current sink type LED Indicator support ChiaEn Wu (4): dt-bindings: power: supply: Add MediaTek MT6370 Charger iio: adc: mt6370: Add MediaTek MT6370 support power: supply: mt6370: Add MediaTek MT6370 charger driver video: backlight: mt6370: Add MediaTek MT6370 support .../leds/backlight/mediatek,mt6370-backlight.yaml | 121 +++ .../bindings/leds/mediatek,mt6370-flashlight.yaml | 41 + .../bindings/leds/mediatek,mt6370-indicator.yaml | 81 ++ .../devicetree/bindings/mfd/mediatek,mt6370.yaml | 280 ++++++ .../power/supply/mediatek,mt6370-charger.yaml | 88 ++ .../bindings/usb/mediatek,mt6370-tcpc.yaml | 36 + drivers/iio/adc/Kconfig | 12 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/mt6370-adc.c | 305 ++++++ drivers/leds/flash/Kconfig | 12 + drivers/leds/flash/Makefile | 1 + drivers/leds/flash/leds-mt6370-flash.c | 632 ++++++++++++ drivers/leds/rgb/Kconfig | 13 + drivers/leds/rgb/Makefile | 1 + drivers/leds/rgb/leds-mt6370-rgb.c | 1022 ++++++++++++++++++++ drivers/mfd/Kconfig | 16 + drivers/mfd/Makefile | 1 + drivers/mfd/mt6370.c | 312 ++++++ drivers/mfd/mt6370.h | 99 ++ drivers/power/supply/Kconfig | 14 + drivers/power/supply/Makefile | 1 + drivers/power/supply/mt6370-charger.c | 965 ++++++++++++++++++ drivers/usb/typec/tcpm/Kconfig | 11 + drivers/usb/typec/tcpm/Makefile | 1 + drivers/usb/typec/tcpm/tcpci_mt6370.c | 207 ++++ drivers/video/backlight/Kconfig | 13 + drivers/video/backlight/Makefile | 1 + drivers/video/backlight/mt6370-backlight.c | 351 +++++++ include/dt-bindings/iio/adc/mediatek,mt6370_adc.h | 18 + 29 files changed, 4656 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/backlight/mediatek,mt6370-backlight.yaml create mode 100644 Documentation/devicetree/bindings/leds/mediatek,mt6370-flashlight.yaml create mode 100644 Documentation/devicetree/bindings/leds/mediatek,mt6370-indicator.yaml create mode 100644 Documentation/devicetree/bindings/mfd/mediatek,mt6370.yaml create mode 100644 Documentation/devicetree/bindings/power/supply/mediatek,mt6370-charger.yaml create mode 100644 Documentation/devicetree/bindings/usb/mediatek,mt6370-tcpc.yaml create mode 100644 drivers/iio/adc/mt6370-adc.c create mode 100644 drivers/leds/flash/leds-mt6370-flash.c create mode 100644 drivers/leds/rgb/leds-mt6370-rgb.c create mode 100644 drivers/mfd/mt6370.c create mode 100644 drivers/mfd/mt6370.h create mode 100644 drivers/power/supply/mt6370-charger.c create mode 100644 drivers/usb/typec/tcpm/tcpci_mt6370.c create mode 100644 drivers/video/backlight/mt6370-backlight.c create mode 100644 include/dt-bindings/iio/adc/mediatek,mt6370_adc.h -- 2.7.4