| /kernel/linux/linux-6.6/drivers/video/backlight/ |
| D | pwm_bl.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Simple PWM based backlight control, board code has to setup 4 * 1) pin configuration so PWM waveforms can output 17 #include <linux/pwm.h> 23 struct pwm_device *pwm; member 45 if (pb->enabled) in pwm_backlight_power_on() 48 if (pb->power_supply) { in pwm_backlight_power_on() 49 err = regulator_enable(pb->power_supply); in pwm_backlight_power_on() 51 dev_err(pb->dev, "failed to enable power supply\n"); in pwm_backlight_power_on() 54 if (pb->post_pwm_on_delay) in pwm_backlight_power_on() [all …]
|
| /kernel/linux/linux-5.10/drivers/video/backlight/ |
| D | pwm_bl.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Simple PWM based backlight control, board code has to setup 4 * 1) pin configuration so PWM waveforms can output 17 #include <linux/pwm.h> 23 struct pwm_device *pwm; member 44 struct pwm_state state; in pwm_backlight_power_on() local 47 pwm_get_state(pb->pwm, &state); in pwm_backlight_power_on() 48 if (pb->enabled) in pwm_backlight_power_on() 51 err = regulator_enable(pb->power_supply); in pwm_backlight_power_on() 53 dev_err(pb->dev, "failed to enable power supply\n"); in pwm_backlight_power_on() [all …]
|
| /kernel/linux/linux-6.6/drivers/pwm/ |
| D | pwm-jz4740.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de> 4 * JZ4740 platform PWM support 7 * - The .apply callback doesn't complete the currently running period before 15 #include <linux/mfd/ingenic-tcu.h> 20 #include <linux/pwm.h> 40 /* Enable all TCU channels for PWM use by default except channels 0/1 */ in jz4740_pwm_can_use_chn() 41 u32 pwm_channels_mask = GENMASK(jz->chip.npwm - 1, 2); in jz4740_pwm_can_use_chn() 43 device_property_read_u32(jz->chip.dev->parent, in jz4740_pwm_can_use_chn() 44 "ingenic,pwm-channels-mask", in jz4740_pwm_can_use_chn() [all …]
|
| D | pwm-omap-dmtimer.c | 1 // SPDX-License-Identifier: GPL-2.0-only 9 * Also based on pwm-samsung.c 13 * PWM driver / controller, using the OMAP's dual-mode timers 15 * reloaded with the load value and the pwm output goes up. 20 * - When PWM is stopped, timer counter gets stopped immediately. This 21 * doesn't allow the current PWM period to complete and stops abruptly. 22 * - When PWM is running and changing both duty cycle and period, 25 * is updated while the pwm pin is high, current pwm period/duty_cycle 27 * - period for current cycle = current_period + new period 28 * - duty_cycle for current period = current period + new duty_cycle. [all …]
|
| D | pwm-renesas-tpu.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * R-Mobile TPU PWM driver 18 #include <linux/pwm.h> 63 TPU_PIN_PWM, /* Pin is driven by PWM */ 64 TPU_PIN_ACTIVE, /* Pin is driven active */ 94 void __iomem *base = tpd->tpu->base + TPU_CHANNEL_OFFSET in tpu_pwm_write() 95 + tpd->channel * TPU_CHANNEL_SIZE; in tpu_pwm_write() 101 enum tpu_pin_state state) in tpu_pwm_set_pin() argument 103 static const char * const states[] = { "inactive", "PWM", "active" }; in tpu_pwm_set_pin() 105 dev_dbg(&tpd->tpu->pdev->dev, "%u: configuring pin as %s\n", in tpu_pwm_set_pin() [all …]
|
| D | pwm-twl-led.c | 1 // SPDX-License-Identifier: GPL-2.0-only 8 * This driver is a complete rewrite of the former pwm-twl6030.c authorded by: 15 * - The twl6030 hardware only supports two period lengths (128 clock ticks and 17 * - The hardware doesn't support ON = 0, so the active part of a period doesn't 19 * - The hardware could support inverted polarity (with a similar limitation as 21 * - The hardware emits a constant low output when disabled. 22 * - A request for .duty_cycle = 0 results in an output wave with one active 23 * clock tick per period. This should better use the disabled state. 24 * - The driver only implements setting the relative duty cycle. 25 * - The driver doesn't implement .get_state(). [all …]
|
| D | pwm-stm32.c | 1 // SPDX-License-Identifier: GPL-2.0 7 * Inspired by timer-stm32.c from Maxime Coquelin 8 * pwm-atmel.c from Bo Shen 12 #include <linux/mfd/stm32-timers.h> 17 #include <linux/pwm.h> 31 struct mutex lock; /* protect pwm config/enable */ 50 regmap_read(dev->regmap, TIM_CCER, &ccer); in active_channels() 59 return regmap_write(dev->regmap, TIM_CCR1, value); in write_ccrx() 61 return regmap_write(dev->regmap, TIM_CCR2, value); in write_ccrx() 63 return regmap_write(dev->regmap, TIM_CCR3, value); in write_ccrx() [all …]
|
| D | pwm-tiecap.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * ECAP PWM driver 5 * Copyright (C) 2012 Texas Instruments, Inc. - https://www.ti.com/ 14 #include <linux/pwm.h> 50 static int ecap_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in ecap_pwm_config() argument 58 c = pc->clk_rate; in ecap_pwm_config() 67 c = pc->clk_rate; in ecap_pwm_config() 73 pm_runtime_get_sync(pc->chip.dev); in ecap_pwm_config() 75 value = readw(pc->mmio_base + ECCTL2); in ecap_pwm_config() 80 writew(value, pc->mmio_base + ECCTL2); in ecap_pwm_config() [all …]
|
| /kernel/linux/linux-5.10/drivers/pwm/ |
| D | pwm-jz4740.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de> 4 * JZ4740 platform PWM support 7 * - The .apply callback doesn't complete the currently running period before 15 #include <linux/mfd/ingenic-tcu.h> 20 #include <linux/pwm.h> 40 /* Enable all TCU channels for PWM use by default except channels 0/1 */ in jz4740_pwm_can_use_chn() 41 u32 pwm_channels_mask = GENMASK(jz->chip.npwm - 1, 2); in jz4740_pwm_can_use_chn() 43 device_property_read_u32(jz->chip.dev->parent, in jz4740_pwm_can_use_chn() 44 "ingenic,pwm-channels-mask", in jz4740_pwm_can_use_chn() [all …]
|
| D | pwm-omap-dmtimer.c | 1 // SPDX-License-Identifier: GPL-2.0-only 9 * Also based on pwm-samsung.c 13 * PWM driver / controller, using the OMAP's dual-mode timers 15 * reloaded with the load value and the pwm output goes up. 20 * - When PWM is stopped, timer counter gets stopped immediately. This 21 * doesn't allow the current PWM period to complete and stops abruptly. 22 * - When PWM is running and changing both duty cycle and period, 25 * is updated while the pwm pin is high, current pwm period/duty_cycle 27 * - period for current cycle = current_period + new period 28 * - duty_cycle for current period = current period + new duty_cycle. [all …]
|
| D | pwm-renesas-tpu.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * R-Mobile TPU PWM driver 18 #include <linux/pwm.h> 63 TPU_PIN_PWM, /* Pin is driven by PWM */ 64 TPU_PIN_ACTIVE, /* Pin is driven active */ 92 static void tpu_pwm_write(struct tpu_pwm_device *pwm, int reg_nr, u16 value) in tpu_pwm_write() argument 94 void __iomem *base = pwm->tpu->base + TPU_CHANNEL_OFFSET in tpu_pwm_write() 95 + pwm->channel * TPU_CHANNEL_SIZE; in tpu_pwm_write() 100 static void tpu_pwm_set_pin(struct tpu_pwm_device *pwm, in tpu_pwm_set_pin() argument 101 enum tpu_pin_state state) in tpu_pwm_set_pin() argument [all …]
|
| D | pwm-stm32.c | 1 // SPDX-License-Identifier: GPL-2.0 7 * Inspired by timer-stm32.c from Maxime Coquelin 8 * pwm-atmel.c from Bo Shen 12 #include <linux/mfd/stm32-timers.h> 17 #include <linux/pwm.h> 31 struct mutex lock; /* protect pwm config/enable */ 50 regmap_read(dev->regmap, TIM_CCER, &ccer); in active_channels() 59 return regmap_write(dev->regmap, TIM_CCR1, value); in write_ccrx() 61 return regmap_write(dev->regmap, TIM_CCR2, value); in write_ccrx() 63 return regmap_write(dev->regmap, TIM_CCR3, value); in write_ccrx() [all …]
|
| /kernel/linux/linux-6.6/arch/arm64/boot/dts/qcom/ |
| D | msm8916-samsung-gt510.dts | 1 // SPDX-License-Identifier: GPL-2.0-only 3 /dts-v1/; 5 #include "msm8916-samsung-gt5-common.dtsi" 10 chassis-type = "tablet"; 12 clk_pwm: pwm { 13 compatible = "clk-pwm"; 14 #pwm-cells = <2>; 18 pinctrl-0 = <&motor_pwm_default>; 19 pinctrl-names = "default"; 22 reg_motor_vdd: regulator-motor-vdd { [all …]
|
| D | msm8939-samsung-a7.dts | 1 // SPDX-License-Identifier: GPL-2.0-only 3 /dts-v1/; 5 #include "msm8939-pm8916.dtsi" 7 #include <dt-bindings/gpio/gpio.h> 8 #include <dt-bindings/input/input.h> 9 #include <dt-bindings/interrupt-controller/irq.h> 14 chassis-type = "handset"; 23 stdout-path = "serial0"; 26 reserved-memory { 28 tz-apps@85500000 { [all …]
|
| D | msm8916-samsung-a2015-common.dtsi | 1 // SPDX-License-Identifier: GPL-2.0-only 3 #include "msm8916-pm8916.dtsi" 4 #include <dt-bindings/gpio/gpio.h> 5 #include <dt-bindings/input/input.h> 6 #include <dt-bindings/interrupt-controller/irq.h> 7 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 17 stdout-path = "serial0"; 20 reserved-memory { 22 tz-apps@85500000 { 24 no-map; [all …]
|
| /kernel/linux/linux-6.6/Documentation/driver-api/ |
| D | pwm.rst | 2 Pulse Width Modulation (PWM) interface 5 This provides an overview about the Linux PWM interface 9 the Linux PWM API (although they could). However, PWMs are often 12 this kind of flexibility the generic PWM API exists. 15 ---------------- 17 Users of the legacy PWM API use unique IDs to refer to PWM devices. 19 Instead of referring to a PWM device via its unique ID, board setup code 20 should instead register a static mapping that can be used to match PWM 24 PWM_LOOKUP("tegra-pwm", 0, "pwm-backlight", NULL, 36 ---------- [all …]
|
| D | miscellaneous.rst | 4 .. kernel-doc:: include/linux/parport.h 7 .. kernel-doc:: drivers/parport/ieee1284.c 10 .. kernel-doc:: drivers/parport/share.c 13 .. kernel-doc:: drivers/parport/daisy.c 19 .. kernel-doc:: drivers/tty/serial/8250/8250_core.c 24 Pulse-Width Modulation (PWM) 27 Pulse-width modulation is a modulation technique primarily used to 30 The PWM framework provides an abstraction for providers and consumers of 31 PWM signals. A controller that provides one or more PWM signals is 33 are expected to embed this structure in a driver-specific structure. [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/hwmon/ |
| D | adt7475.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 3 --- 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Jean Delvare <jdelvare@suse.com> 23 https://www.onsemi.com/pub/Collateral/ADT7473-D.PDF 24 https://www.onsemi.com/pub/Collateral/ADT7475-D.PDF 25 https://www.onsemi.com/pub/Collateral/ADT7476-D.PDF 26 https://www.onsemi.com/pub/Collateral/ADT7490-D.PDF 34 - adi,adt7473 35 - adi,adt7475 [all …]
|
| /kernel/linux/linux-5.10/Documentation/driver-api/ |
| D | pwm.rst | 2 Pulse Width Modulation (PWM) interface 5 This provides an overview about the Linux PWM interface 9 the Linux PWM API (although they could). However, PWMs are often 12 this kind of flexibility the generic PWM API exists. 15 ---------------- 17 Users of the legacy PWM API use unique IDs to refer to PWM devices. 19 Instead of referring to a PWM device via its unique ID, board setup code 20 should instead register a static mapping that can be used to match PWM 24 PWM_LOOKUP("tegra-pwm", 0, "pwm-backlight", NULL, 36 ---------- [all …]
|
| D | miscellaneous.rst | 4 .. kernel-doc:: include/linux/parport.h 7 .. kernel-doc:: drivers/parport/ieee1284.c 10 .. kernel-doc:: drivers/parport/share.c 13 .. kernel-doc:: drivers/parport/daisy.c 19 .. kernel-doc:: drivers/tty/serial/serial_core.c 22 .. kernel-doc:: drivers/tty/serial/8250/8250_core.c 25 Pulse-Width Modulation (PWM) 28 Pulse-width modulation is a modulation technique primarily used to 31 The PWM framework provides an abstraction for providers and consumers of 32 PWM signals. A controller that provides one or more PWM signals is [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/hwmon/ |
| D | adt7475.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 3 --- 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Jean Delvare <jdelvare@suse.com> 23 https://www.onsemi.com/pub/Collateral/ADT7473-D.PDF 24 https://www.onsemi.com/pub/Collateral/ADT7475-D.PDF 25 https://www.onsemi.com/pub/Collateral/ADT7476-D.PDF 26 https://www.onsemi.com/pub/Collateral/ADT7490-D.PDF 34 - adi,adt7473 35 - adi,adt7475 [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/pwm/ |
| D | nvidia,tegra20-pwm.txt | 4 - compatible: Must be: 5 - "nvidia,tegra20-pwm": for Tegra20 6 - "nvidia,tegra30-pwm", "nvidia,tegra20-pwm": for Tegra30 7 - "nvidia,tegra114-pwm", "nvidia,tegra20-pwm": for Tegra114 8 - "nvidia,tegra124-pwm", "nvidia,tegra20-pwm": for Tegra124 9 - "nvidia,tegra132-pwm", "nvidia,tegra20-pwm": for Tegra132 10 - "nvidia,tegra210-pwm", "nvidia,tegra20-pwm": for Tegra210 11 - "nvidia,tegra186-pwm": for Tegra186 12 - "nvidia,tegra194-pwm": for Tegra194 13 - reg: physical base address and length of the controller's registers [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/pwm/ |
| D | nvidia,tegra20-pwm.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/pwm/nvidia,tegra20-pwm.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Thierry Reding <thierry.reding@gmail.com> 11 - Jon Hunter <jonathanh@nvidia.com> 16 - enum: 17 - nvidia,tegra20-pwm 18 - nvidia,tegra186-pwm 20 - items: [all …]
|
| /kernel/linux/linux-6.6/drivers/leds/rgb/ |
| D | leds-pwm-multicolor.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * PWM-based multi-color LED control 5 * Copyright 2022 Sven Schwermer <sven.schwermer@disruptive-technologies.com> 10 #include <linux/led-class-multicolor.h> 17 #include <linux/pwm.h> 20 struct pwm_device *pwm; member 21 struct pwm_state state; member 42 mutex_lock(&priv->lock); in led_pwm_mc_set() 44 for (i = 0; i < mc_cdev->num_colors; i++) { in led_pwm_mc_set() 45 duty = priv->leds[i].state.period; in led_pwm_mc_set() [all …]
|
| /kernel/linux/linux-6.6/drivers/input/misc/ |
| D | da7280.c | 1 // SPDX-License-Identifier: GPL-2.0+ 16 #include <linux/pwm.h> 181 /* Maximum gain is 0x7fff for PWM mode */ 259 bool active; member 290 error = regmap_read(haptics->regmap, DA7280_IRQ_STATUS1, &val); in da7280_haptic_mem_update() 294 dev_warn(haptics->dev, in da7280_haptic_mem_update() 296 return -EBUSY; in da7280_haptic_mem_update() 301 error = regmap_read(haptics->regmap, DA7280_MEM_CTL2, &val); in da7280_haptic_mem_update() 305 dev_warn(haptics->dev, "Please unlock the bit first\n"); in da7280_haptic_mem_update() 306 return -EACCES; in da7280_haptic_mem_update() [all …]
|