Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'reset-for-v5.5' of git://git.pengutronix.de/git/pza/linux into arm/drivers

Reset controller updates for v5.5

This tag adds support for Meson SM1 ARB resets, Uniphier Pro5 USB3
resets, the Meson-A1 reset controller, SocFPGA Agilex resets, and
Realtek RTD1195/RTD1295 resets.
It adds some reset controller API keywords for get_maintainers.pl and
makes a few remaining reset_control_ops const. Also included are
a conversion of the Qualcomm device tree bindings to yaml and a few
small kerneldoc improvements.

* tag 'reset-for-v5.5' of git://git.pengutronix.de/git/pza/linux:
reset: document (devm_)reset_control_get_optional variants
reset: improve of_xlate documentation
reset: simple: Add Realtek RTD1195/RTD1295
reset: simple: Keep alphabetical order
MAINTAINERS: add reset controller framework keywords
reset: zynqmp: Make reset_control_ops const
reset: hisilicon: hi3660: Make reset_control_ops const
reset: build simple reset controller driver for Agilex
reset: add support for the Meson-A1 SoC Reset Controller
dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller
reset: uniphier-glue: Add Pro5 USB3 support
dt-bindings: reset: pdc: Convert PDC Global bindings to yaml
dt-bindings: reset: aoss: Convert AOSS reset bindings to yaml
reset: Remove copy'n'paste redundancy in the comments
reset: meson-audio-arb: add sm1 support
reset: dt-bindings: meson: update arb bindings for sm1

Link: https://lore.kernel.org/r/ede6874508472d0917dca770ef80b90626b0f205.camel@pengutronix.de
Signed-off-by: Olof Johansson <olof@lixom.net>

+306 -126
+2 -1
Documentation/devicetree/bindings/reset/amlogic,meson-axg-audio-arb.txt
··· 4 4 disables the access of Audio FIFOs to DDR on AXG based SoC. 5 5 6 6 Required properties: 7 - - compatible: 'amlogic,meson-axg-audio-arb' 7 + - compatible: 'amlogic,meson-axg-audio-arb' or 8 + 'amlogic,meson-sm1-audio-arb' 8 9 - reg: physical base address of the controller and length of memory 9 10 mapped region. 10 11 - clocks: phandle to the fifo peripheral clock provided by the audio
+1
Documentation/devicetree/bindings/reset/amlogic,meson-reset.yaml
··· 16 16 - amlogic,meson8b-reset # Reset Controller on Meson8b and compatible SoCs 17 17 - amlogic,meson-gxbb-reset # Reset Controller on GXBB and compatible SoCs 18 18 - amlogic,meson-axg-reset # Reset Controller on AXG and compatible SoCs 19 + - amlogic,meson-a1-reset # Reset Controller on A1 and compatible SoCs 19 20 20 21 reg: 21 22 maxItems: 1
-52
Documentation/devicetree/bindings/reset/qcom,aoss-reset.txt
··· 1 - Qualcomm AOSS Reset Controller 2 - ====================================== 3 - 4 - This binding describes a reset-controller found on AOSS-CC (always on subsystem) 5 - for Qualcomm SDM845 SoCs. 6 - 7 - Required properties: 8 - - compatible: 9 - Usage: required 10 - Value type: <string> 11 - Definition: must be: 12 - "qcom,sdm845-aoss-cc" 13 - 14 - - reg: 15 - Usage: required 16 - Value type: <prop-encoded-array> 17 - Definition: must specify the base address and size of the register 18 - space. 19 - 20 - - #reset-cells: 21 - Usage: required 22 - Value type: <uint> 23 - Definition: must be 1; cell entry represents the reset index. 24 - 25 - Example: 26 - 27 - aoss_reset: reset-controller@c2a0000 { 28 - compatible = "qcom,sdm845-aoss-cc"; 29 - reg = <0xc2a0000 0x31000>; 30 - #reset-cells = <1>; 31 - }; 32 - 33 - Specifying reset lines connected to IP modules 34 - ============================================== 35 - 36 - Device nodes that need access to reset lines should 37 - specify them as a reset phandle in their corresponding node as 38 - specified in reset.txt. 39 - 40 - For list of all valid reset indicies see 41 - <dt-bindings/reset/qcom,sdm845-aoss.h> 42 - 43 - Example: 44 - 45 - modem-pil@4080000 { 46 - ... 47 - 48 - resets = <&aoss_reset AOSS_CC_MSS_RESTART>; 49 - reset-names = "mss_restart"; 50 - 51 - ... 52 - };
+47
Documentation/devicetree/bindings/reset/qcom,aoss-reset.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/reset/qcom,aoss-reset.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm AOSS Reset Controller 8 + 9 + maintainers: 10 + - Sibi Sankar <sibis@codeaurora.org> 11 + 12 + description: 13 + The bindings describe the reset-controller found on AOSS-CC (always on 14 + subsystem) for Qualcomm Technologies Inc SoCs. 15 + 16 + properties: 17 + compatible: 18 + oneOf: 19 + - description: on SC7180 SoCs the following compatibles must be specified 20 + items: 21 + - const: "qcom,sc7180-aoss-cc" 22 + - const: "qcom,sdm845-aoss-cc" 23 + 24 + - description: on SDM845 SoCs the following compatibles must be specified 25 + items: 26 + - const: "qcom,sdm845-aoss-cc" 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + '#reset-cells': 32 + const: 1 33 + 34 + required: 35 + - compatible 36 + - reg 37 + - '#reset-cells' 38 + 39 + additionalProperties: false 40 + 41 + examples: 42 + - | 43 + aoss_reset: reset-controller@c2a0000 { 44 + compatible = "qcom,sdm845-aoss-cc"; 45 + reg = <0xc2a0000 0x31000>; 46 + #reset-cells = <1>; 47 + };
-52
Documentation/devicetree/bindings/reset/qcom,pdc-global.txt
··· 1 - PDC Global 2 - ====================================== 3 - 4 - This binding describes a reset-controller found on PDC-Global (Power Domain 5 - Controller) block for Qualcomm Technologies Inc SDM845 SoCs. 6 - 7 - Required properties: 8 - - compatible: 9 - Usage: required 10 - Value type: <string> 11 - Definition: must be: 12 - "qcom,sdm845-pdc-global" 13 - 14 - - reg: 15 - Usage: required 16 - Value type: <prop-encoded-array> 17 - Definition: must specify the base address and size of the register 18 - space. 19 - 20 - - #reset-cells: 21 - Usage: required 22 - Value type: <uint> 23 - Definition: must be 1; cell entry represents the reset index. 24 - 25 - Example: 26 - 27 - pdc_reset: reset-controller@b2e0000 { 28 - compatible = "qcom,sdm845-pdc-global"; 29 - reg = <0xb2e0000 0x20000>; 30 - #reset-cells = <1>; 31 - }; 32 - 33 - PDC reset clients 34 - ====================================== 35 - 36 - Device nodes that need access to reset lines should 37 - specify them as a reset phandle in their corresponding node as 38 - specified in reset.txt. 39 - 40 - For a list of all valid reset indices see 41 - <dt-bindings/reset/qcom,sdm845-pdc.h> 42 - 43 - Example: 44 - 45 - modem-pil@4080000 { 46 - ... 47 - 48 - resets = <&pdc_reset PDC_MODEM_SYNC_RESET>; 49 - reset-names = "pdc_reset"; 50 - 51 - ... 52 - };
+47
Documentation/devicetree/bindings/reset/qcom,pdc-global.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/reset/qcom,pdc-global.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm PDC Global 8 + 9 + maintainers: 10 + - Sibi Sankar <sibis@codeaurora.org> 11 + 12 + description: 13 + The bindings describes the reset-controller found on PDC-Global (Power Domain 14 + Controller) block for Qualcomm Technologies Inc SoCs. 15 + 16 + properties: 17 + compatible: 18 + oneOf: 19 + - description: on SC7180 SoCs the following compatibles must be specified 20 + items: 21 + - const: "qcom,sc7180-pdc-global" 22 + - const: "qcom,sdm845-pdc-global" 23 + 24 + - description: on SDM845 SoCs the following compatibles must be specified 25 + items: 26 + - const: "qcom,sdm845-pdc-global" 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + '#reset-cells': 32 + const: 1 33 + 34 + required: 35 + - compatible 36 + - reg 37 + - '#reset-cells' 38 + 39 + additionalProperties: false 40 + 41 + examples: 42 + - | 43 + pdc_reset: reset-controller@b2e0000 { 44 + compatible = "qcom,sdm845-pdc-global"; 45 + reg = <0xb2e0000 0x20000>; 46 + #reset-cells = <1>; 47 + };
+3 -2
Documentation/devicetree/bindings/reset/uniphier-reset.txt
··· 130 130 Required properties: 131 131 - compatible: Should be 132 132 "socionext,uniphier-pro4-usb3-reset" - for Pro4 SoC USB3 133 + "socionext,uniphier-pro5-usb3-reset" - for Pro5 SoC USB3 133 134 "socionext,uniphier-pxs2-usb3-reset" - for PXs2 SoC USB3 134 135 "socionext,uniphier-ld20-usb3-reset" - for LD20 SoC USB3 135 136 "socionext,uniphier-pxs3-usb3-reset" - for PXs3 SoC USB3 ··· 142 141 - clocks: A list of phandles to the clock gate for the glue layer. 143 142 According to the clock-names, appropriate clocks are required. 144 143 - clock-names: Should contain 145 - "gio", "link" - for Pro4 SoC 144 + "gio", "link" - for Pro4 and Pro5 SoCs 146 145 "link" - for others 147 146 - resets: A list of phandles to the reset control for the glue layer. 148 147 According to the reset-names, appropriate resets are required. 149 148 - reset-names: Should contain 150 - "gio", "link" - for Pro4 SoC 149 + "gio", "link" - for Pro4 and Pro5 SoCs 151 150 "link" - for others 152 151 153 152 Example:
+1
MAINTAINERS
··· 13872 13872 F: include/linux/reset.h 13873 13873 F: include/linux/reset/ 13874 13874 F: include/linux/reset-controller.h 13875 + K: \b(?:devm_|of_)?reset_control(?:ler_[a-z]+|_[a-z_]+)?\b 13875 13876 13876 13877 RESTARTABLE SEQUENCES SUPPORT 13877 13878 M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+3 -2
drivers/reset/Kconfig
··· 129 129 130 130 config RESET_SIMPLE 131 131 bool "Simple Reset Controller Driver" if COMPILE_TEST 132 - default ARCH_STM32 || ARCH_STRATIX10 || ARCH_SUNXI || ARCH_ZX || ARCH_ASPEED || ARCH_BITMAIN || ARC 132 + default ARCH_AGILEX || ARCH_ASPEED || ARCH_BITMAIN || ARCH_REALTEK || ARCH_STM32 || ARCH_STRATIX10 || ARCH_SUNXI || ARCH_ZX || ARC 133 133 help 134 134 This enables a simple reset controller driver for reset lines that 135 135 that can be asserted and deasserted by toggling bits in a contiguous, ··· 138 138 Currently this driver supports: 139 139 - Altera SoCFPGAs 140 140 - ASPEED BMC SoCs 141 + - Bitmain BM1880 SoC 142 + - Realtek SoCs 141 143 - RCC reset controller in STM32 MCUs 142 144 - Allwinner SoCs 143 145 - ZTE's zx2967 family 144 - - Bitmain BM1880 SoC 145 146 146 147 config RESET_STM32MP157 147 148 bool "STM32MP157 Reset Driver" if COMPILE_TEST
+4 -4
drivers/reset/core.c
··· 78 78 * @reset_spec: reset line specifier as found in the device tree 79 79 * @flags: a flags pointer to fill in (optional) 80 80 * 81 - * This simple translation function should be used for reset controllers 82 - * with 1:1 mapping, where reset lines can be indexed by number without gaps. 81 + * This static translation function is used by default if of_xlate in 82 + * :c:type:`reset_controller_dev` is not set. It is useful for all reset 83 + * controllers with 1:1 mapping, where reset lines can be indexed by number 84 + * without gaps. 83 85 */ 84 86 static int of_reset_simple_xlate(struct reset_controller_dev *rcdev, 85 87 const struct of_phandle_args *reset_spec) ··· 336 334 * internal state to be reset, but must be prepared for this to happen. 337 335 * Consumers must not use reset_control_reset on shared reset lines when 338 336 * reset_control_(de)assert has been used. 339 - * return 0. 340 337 * 341 338 * If rstc is NULL it is an optional reset and the function will just 342 339 * return 0. ··· 394 393 * After calling this function, the reset is guaranteed to be deasserted. 395 394 * Consumers must not use reset_control_reset on shared reset lines when 396 395 * reset_control_(de)assert has been used. 397 - * return 0. 398 396 * 399 397 * If rstc is NULL it is an optional reset and the function will just 400 398 * return 0.
+1 -1
drivers/reset/hisilicon/reset-hi3660.c
··· 56 56 return hi3660_reset_deassert(rcdev, idx); 57 57 } 58 58 59 - static struct reset_control_ops hi3660_reset_ops = { 59 + static const struct reset_control_ops hi3660_reset_ops = { 60 60 .reset = hi3660_reset_dev, 61 61 .assert = hi3660_reset_assert, 62 62 .deassert = hi3660_reset_deassert,
+40 -3
drivers/reset/reset-meson-audio-arb.c
··· 19 19 spinlock_t lock; 20 20 }; 21 21 22 + struct meson_audio_arb_match_data { 23 + const unsigned int *reset_bits; 24 + unsigned int reset_num; 25 + }; 26 + 22 27 #define ARB_GENERAL_BIT 31 23 28 24 29 static const unsigned int axg_audio_arb_reset_bits[] = { ··· 33 28 [AXG_ARB_FRDDR_A] = 4, 34 29 [AXG_ARB_FRDDR_B] = 5, 35 30 [AXG_ARB_FRDDR_C] = 6, 31 + }; 32 + 33 + static const struct meson_audio_arb_match_data axg_audio_arb_match = { 34 + .reset_bits = axg_audio_arb_reset_bits, 35 + .reset_num = ARRAY_SIZE(axg_audio_arb_reset_bits), 36 + }; 37 + 38 + static const unsigned int sm1_audio_arb_reset_bits[] = { 39 + [AXG_ARB_TODDR_A] = 0, 40 + [AXG_ARB_TODDR_B] = 1, 41 + [AXG_ARB_TODDR_C] = 2, 42 + [AXG_ARB_FRDDR_A] = 4, 43 + [AXG_ARB_FRDDR_B] = 5, 44 + [AXG_ARB_FRDDR_C] = 6, 45 + [AXG_ARB_TODDR_D] = 3, 46 + [AXG_ARB_FRDDR_D] = 7, 47 + }; 48 + 49 + static const struct meson_audio_arb_match_data sm1_audio_arb_match = { 50 + .reset_bits = sm1_audio_arb_reset_bits, 51 + .reset_num = ARRAY_SIZE(sm1_audio_arb_reset_bits), 36 52 }; 37 53 38 54 static int meson_audio_arb_update(struct reset_controller_dev *rcdev, ··· 108 82 }; 109 83 110 84 static const struct of_device_id meson_audio_arb_of_match[] = { 111 - { .compatible = "amlogic,meson-axg-audio-arb", }, 85 + { 86 + .compatible = "amlogic,meson-axg-audio-arb", 87 + .data = &axg_audio_arb_match, 88 + }, { 89 + .compatible = "amlogic,meson-sm1-audio-arb", 90 + .data = &sm1_audio_arb_match, 91 + }, 112 92 {} 113 93 }; 114 94 MODULE_DEVICE_TABLE(of, meson_audio_arb_of_match); ··· 136 104 static int meson_audio_arb_probe(struct platform_device *pdev) 137 105 { 138 106 struct device *dev = &pdev->dev; 107 + const struct meson_audio_arb_match_data *data; 139 108 struct meson_audio_arb_data *arb; 140 109 struct resource *res; 141 110 int ret; 111 + 112 + data = of_device_get_match_data(dev); 113 + if (!data) 114 + return -EINVAL; 142 115 143 116 arb = devm_kzalloc(dev, sizeof(*arb), GFP_KERNEL); 144 117 if (!arb) ··· 163 126 return PTR_ERR(arb->regs); 164 127 165 128 spin_lock_init(&arb->lock); 166 - arb->reset_bits = axg_audio_arb_reset_bits; 167 - arb->rstc.nr_resets = ARRAY_SIZE(axg_audio_arb_reset_bits); 129 + arb->reset_bits = data->reset_bits; 130 + arb->rstc.nr_resets = data->reset_num; 168 131 arb->rstc.ops = &meson_audio_arb_rstc_ops; 169 132 arb->rstc.of_node = dev->of_node; 170 133 arb->rstc.owner = THIS_MODULE;
+28 -7
drivers/reset/reset-meson.c
··· 15 15 #include <linux/types.h> 16 16 #include <linux/of_device.h> 17 17 18 - #define REG_COUNT 8 19 18 #define BITS_PER_REG 32 20 - #define LEVEL_OFFSET 0x7c 19 + 20 + struct meson_reset_param { 21 + int reg_count; 22 + int level_offset; 23 + }; 21 24 22 25 struct meson_reset { 23 26 void __iomem *reg_base; 27 + const struct meson_reset_param *param; 24 28 struct reset_controller_dev rcdev; 25 29 spinlock_t lock; 26 30 }; ··· 50 46 container_of(rcdev, struct meson_reset, rcdev); 51 47 unsigned int bank = id / BITS_PER_REG; 52 48 unsigned int offset = id % BITS_PER_REG; 53 - void __iomem *reg_addr = data->reg_base + LEVEL_OFFSET + (bank << 2); 49 + void __iomem *reg_addr; 54 50 unsigned long flags; 55 51 u32 reg; 52 + 53 + reg_addr = data->reg_base + data->param->level_offset + (bank << 2); 56 54 57 55 spin_lock_irqsave(&data->lock, flags); 58 56 ··· 87 81 .deassert = meson_reset_deassert, 88 82 }; 89 83 84 + static const struct meson_reset_param meson8b_param = { 85 + .reg_count = 8, 86 + .level_offset = 0x7c, 87 + }; 88 + 89 + static const struct meson_reset_param meson_a1_param = { 90 + .reg_count = 3, 91 + .level_offset = 0x40, 92 + }; 93 + 90 94 static const struct of_device_id meson_reset_dt_ids[] = { 91 - { .compatible = "amlogic,meson8b-reset" }, 92 - { .compatible = "amlogic,meson-gxbb-reset" }, 93 - { .compatible = "amlogic,meson-axg-reset" }, 95 + { .compatible = "amlogic,meson8b-reset", .data = &meson8b_param}, 96 + { .compatible = "amlogic,meson-gxbb-reset", .data = &meson8b_param}, 97 + { .compatible = "amlogic,meson-axg-reset", .data = &meson8b_param}, 98 + { .compatible = "amlogic,meson-a1-reset", .data = &meson_a1_param}, 94 99 { /* sentinel */ }, 95 100 }; 96 101 ··· 119 102 if (IS_ERR(data->reg_base)) 120 103 return PTR_ERR(data->reg_base); 121 104 105 + data->param = of_device_get_match_data(&pdev->dev); 106 + if (!data->param) 107 + return -ENODEV; 108 + 122 109 platform_set_drvdata(pdev, data); 123 110 124 111 spin_lock_init(&data->lock); 125 112 126 113 data->rcdev.owner = THIS_MODULE; 127 - data->rcdev.nr_resets = REG_COUNT * BITS_PER_REG; 114 + data->rcdev.nr_resets = data->param->reg_count * BITS_PER_REG; 128 115 data->rcdev.ops = &meson_reset_ops; 129 116 data->rcdev.of_node = pdev->dev.of_node; 130 117
+4
drivers/reset/reset-uniphier-glue.c
··· 141 141 .data = &uniphier_pro4_data, 142 142 }, 143 143 { 144 + .compatible = "socionext,uniphier-pro5-usb3-reset", 145 + .data = &uniphier_pro4_data, 146 + }, 147 + { 144 148 .compatible = "socionext,uniphier-pxs2-usb3-reset", 145 149 .data = &uniphier_pxs2_data, 146 150 },
+1 -1
drivers/reset/reset-zynqmp.c
··· 64 64 PM_RESET_ACTION_PULSE); 65 65 } 66 66 67 - static struct reset_control_ops zynqmp_reset_ops = { 67 + static const struct reset_control_ops zynqmp_reset_ops = { 68 68 .reset = zynqmp_reset_reset, 69 69 .assert = zynqmp_reset_assert, 70 70 .deassert = zynqmp_reset_deassert,
+74
include/dt-bindings/reset/amlogic,meson-a1-reset.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 + * 3 + * Copyright (c) 2019 Amlogic, Inc. All rights reserved. 4 + * Author: Xingyu Chen <xingyu.chen@amlogic.com> 5 + * 6 + */ 7 + 8 + #ifndef _DT_BINDINGS_AMLOGIC_MESON_A1_RESET_H 9 + #define _DT_BINDINGS_AMLOGIC_MESON_A1_RESET_H 10 + 11 + /* RESET0 */ 12 + /* 0 */ 13 + #define RESET_AM2AXI_VAD 1 14 + /* 2-3 */ 15 + #define RESET_PSRAM 4 16 + #define RESET_PAD_CTRL 5 17 + /* 6 */ 18 + #define RESET_TEMP_SENSOR 7 19 + #define RESET_AM2AXI_DEV 8 20 + /* 9 */ 21 + #define RESET_SPICC_A 10 22 + #define RESET_MSR_CLK 11 23 + #define RESET_AUDIO 12 24 + #define RESET_ANALOG_CTRL 13 25 + #define RESET_SAR_ADC 14 26 + #define RESET_AUDIO_VAD 15 27 + #define RESET_CEC 16 28 + #define RESET_PWM_EF 17 29 + #define RESET_PWM_CD 18 30 + #define RESET_PWM_AB 19 31 + /* 20 */ 32 + #define RESET_IR_CTRL 21 33 + #define RESET_I2C_S_A 22 34 + /* 23 */ 35 + #define RESET_I2C_M_D 24 36 + #define RESET_I2C_M_C 25 37 + #define RESET_I2C_M_B 26 38 + #define RESET_I2C_M_A 27 39 + #define RESET_I2C_PROD_AHB 28 40 + #define RESET_I2C_PROD 29 41 + /* 30-31 */ 42 + 43 + /* RESET1 */ 44 + #define RESET_ACODEC 32 45 + #define RESET_DMA 33 46 + #define RESET_SD_EMMC_A 34 47 + /* 35 */ 48 + #define RESET_USBCTRL 36 49 + /* 37 */ 50 + #define RESET_USBPHY 38 51 + /* 39-41 */ 52 + #define RESET_RSA 42 53 + #define RESET_DMC 43 54 + /* 44 */ 55 + #define RESET_IRQ_CTRL 45 56 + /* 46 */ 57 + #define RESET_NIC_VAD 47 58 + #define RESET_NIC_AXI 48 59 + #define RESET_RAMA 49 60 + #define RESET_RAMB 50 61 + /* 51-52 */ 62 + #define RESET_ROM 53 63 + #define RESET_SPIFC 54 64 + #define RESET_GIC 55 65 + #define RESET_UART_C 56 66 + #define RESET_UART_B 57 67 + #define RESET_UART_A 58 68 + #define RESET_OSC_RING 59 69 + /* 60-63 */ 70 + 71 + /* RESET2 */ 72 + /* 64-95 */ 73 + 74 + #endif
+2
include/dt-bindings/reset/amlogic,meson-axg-audio-arb.h
··· 13 13 #define AXG_ARB_FRDDR_A 3 14 14 #define AXG_ARB_FRDDR_B 4 15 15 #define AXG_ARB_FRDDR_C 5 16 + #define AXG_ARB_TODDR_D 6 17 + #define AXG_ARB_FRDDR_D 7 16 18 17 19 #endif /* _DT_BINDINGS_AMLOGIC_MESON_AXG_AUDIO_ARB_H */
+2 -1
include/linux/reset-controller.h
··· 62 62 * @of_node: corresponding device tree node as phandle target 63 63 * @of_reset_n_cells: number of cells in reset line specifiers 64 64 * @of_xlate: translation function to translate from specifier as found in the 65 - * device tree to id as given to the reset control ops 65 + * device tree to id as given to the reset control ops, defaults 66 + * to :c:func:`of_reset_simple_xlate`. 66 67 * @nr_resets: number of reset controls in this reset controller device 67 68 */ 68 69 struct reset_controller_dev {
+46
include/linux/reset.h
··· 203 203 return __reset_control_get(dev, id, 0, true, false, false); 204 204 } 205 205 206 + /** 207 + * reset_control_get_optional_exclusive - optional reset_control_get_exclusive() 208 + * @dev: device to be reset by the controller 209 + * @id: reset line name 210 + * 211 + * Optional variant of reset_control_get_exclusive(). If the requested reset 212 + * is not specified in the device tree, this function returns NULL instead of 213 + * an error. 214 + * 215 + * See reset_control_get_exclusive() for more information. 216 + */ 206 217 static inline struct reset_control *reset_control_get_optional_exclusive( 207 218 struct device *dev, const char *id) 208 219 { 209 220 return __reset_control_get(dev, id, 0, false, true, true); 210 221 } 211 222 223 + /** 224 + * reset_control_get_optional_shared - optional reset_control_get_shared() 225 + * @dev: device to be reset by the controller 226 + * @id: reset line name 227 + * 228 + * Optional variant of reset_control_get_shared(). If the requested reset 229 + * is not specified in the device tree, this function returns NULL instead of 230 + * an error. 231 + * 232 + * See reset_control_get_shared() for more information. 233 + */ 212 234 static inline struct reset_control *reset_control_get_optional_shared( 213 235 struct device *dev, const char *id) 214 236 { ··· 376 354 return __devm_reset_control_get(dev, id, 0, true, false, false); 377 355 } 378 356 357 + /** 358 + * devm_reset_control_get_optional_exclusive - resource managed 359 + * reset_control_get_optional_exclusive() 360 + * @dev: device to be reset by the controller 361 + * @id: reset line name 362 + * 363 + * Managed reset_control_get_optional_exclusive(). For reset controllers 364 + * returned from this function, reset_control_put() is called automatically on 365 + * driver detach. 366 + * 367 + * See reset_control_get_optional_exclusive() for more information. 368 + */ 379 369 static inline struct reset_control *devm_reset_control_get_optional_exclusive( 380 370 struct device *dev, const char *id) 381 371 { 382 372 return __devm_reset_control_get(dev, id, 0, false, true, true); 383 373 } 384 374 375 + /** 376 + * devm_reset_control_get_optional_shared - resource managed 377 + * reset_control_get_optional_shared() 378 + * @dev: device to be reset by the controller 379 + * @id: reset line name 380 + * 381 + * Managed reset_control_get_optional_shared(). For reset controllers returned 382 + * from this function, reset_control_put() is called automatically on driver 383 + * detach. 384 + * 385 + * See reset_control_get_optional_shared() for more information. 386 + */ 385 387 static inline struct reset_control *devm_reset_control_get_optional_shared( 386 388 struct device *dev, const char *id) 387 389 {