| /linux/drivers/pwm/ |
| H A D | pwm-vt8500.c | 107 writel(prescale, vt8500->base + REG_SCALAR(pwm->hwpwm)); in vt8500_pwm_config() 108 vt8500_pwm_busy_wait(chip, pwm->hwpwm, STATUS_SCALAR_UPDATE); in vt8500_pwm_config() 110 writel(pv, vt8500->base + REG_PERIOD(pwm->hwpwm)); in vt8500_pwm_config() 111 vt8500_pwm_busy_wait(chip, pwm->hwpwm, STATUS_PERIOD_UPDATE); in vt8500_pwm_config() 113 writel(dc, vt8500->base + REG_DUTY(pwm->hwpwm)); in vt8500_pwm_config() 114 vt8500_pwm_busy_wait(chip, pwm->hwpwm, STATUS_DUTY_UPDATE); in vt8500_pwm_config() 116 val = readl(vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_config() 118 writel(val, vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_config() 119 vt8500_pwm_busy_wait(chip, pwm->hwpwm, STATUS_CTRL_UPDATE); in vt8500_pwm_config() 137 val = readl(vt8500->base + REG_CTRL(pwm->hwpwm)); in vt8500_pwm_enable() [all …]
|
| H A D | pwm-airoha.c | 109 static void airoha_pwm_get_flash_map_addr_and_shift(unsigned int hwpwm, in airoha_pwm_get_flash_map_addr_and_shift() argument 114 if (hwpwm >= AIROHA_PWM_NUM_GPIO) { in airoha_pwm_get_flash_map_addr_and_shift() 115 unsigned int sipohwpwm = hwpwm - AIROHA_PWM_NUM_GPIO; in airoha_pwm_get_flash_map_addr_and_shift() 124 offset = hwpwm / AIROHA_PWM_PINS_PER_FLASH_MAP; in airoha_pwm_get_flash_map_addr_and_shift() 125 hwpwm_bit = hwpwm % AIROHA_PWM_PINS_PER_FLASH_MAP; in airoha_pwm_get_flash_map_addr_and_shift() 268 unsigned int hwpwm) in airoha_pwm_release_bucket_config() argument 273 if (!test_bit(hwpwm, pc->initialized)) in airoha_pwm_release_bucket_config() 276 bucket = pc->channel_bucket[hwpwm]; in airoha_pwm_release_bucket_config() 320 unsigned int hwpwm) in airoha_pwm_consume_generator() argument 335 airoha_pwm_release_bucket_config(pc, hwpwm); in airoha_pwm_consume_generator() [all …]
|
| H A D | pwm-rzg2l-gpt.c | 36 #define RZG2L_GET_CH(hwpwm) ((hwpwm) / 2) argument 94 static inline unsigned int rzg2l_gpt_subchannel(unsigned int hwpwm) in rzg2l_gpt_subchannel() argument 96 return hwpwm & 0x1; in rzg2l_gpt_subchannel() 99 static inline unsigned int rzg2l_gpt_sibling(unsigned int hwpwm) in rzg2l_gpt_sibling() argument 101 return hwpwm ^ 0x1; in rzg2l_gpt_sibling() 138 u32 ch = RZG2L_GET_CH(pwm->hwpwm); in rzg2l_gpt_request() 149 u32 ch = RZG2L_GET_CH(pwm->hwpwm); in rzg2l_gpt_free() 155 static bool rzg2l_gpt_is_ch_enabled(struct rzg2l_gpt_chip *rzg2l_gpt, u8 hwpwm) in rzg2l_gpt_is_ch_enabled() argument 157 u8 ch = RZG2L_GET_CH(hwpwm); in rzg2l_gpt_is_ch_enabled() 166 return val & RZG2L_GTIOR_OxE(rzg2l_gpt_subchannel(hwpwm)); in rzg2l_gpt_is_ch_enabled() [all …]
|
| H A D | pwm-sunplus.c | 67 mode0 &= ~SP7021_PWM_MODE0_PWMEN(pwm->hwpwm); in sunplus_pwm_apply() 71 mode1 &= ~SP7021_PWM_MODE1_CNT_EN(pwm->hwpwm); in sunplus_pwm_apply() 99 writel(dd_freq, priv->base + SP7021_PWM_FREQ(pwm->hwpwm)); in sunplus_pwm_apply() 103 mode0 |= SP7021_PWM_MODE0_PWMEN(pwm->hwpwm); in sunplus_pwm_apply() 105 mode1 |= SP7021_PWM_MODE1_CNT_EN(pwm->hwpwm); in sunplus_pwm_apply() 108 mode0 |= SP7021_PWM_MODE0_BYPASS(pwm->hwpwm); in sunplus_pwm_apply() 109 duty = SP7021_PWM_DUTY_DD_SEL(pwm->hwpwm) | SP7021_PWM_DUTY_MAX; in sunplus_pwm_apply() 111 mode0 &= ~SP7021_PWM_MODE0_BYPASS(pwm->hwpwm); in sunplus_pwm_apply() 117 duty = SP7021_PWM_DUTY_DD_SEL(pwm->hwpwm) | duty; in sunplus_pwm_apply() 119 writel(duty, priv->base + SP7021_PWM_DUTY(pwm->hwpwm)); in sunplus_pwm_apply() [all …]
|
| H A D | pwm-sprd.c | 74 struct sprd_pwm_chn *chn = &spc->chn[pwm->hwpwm]; in sprd_pwm_get_state() 86 pwm->hwpwm); in sprd_pwm_get_state() 90 val = sprd_pwm_read(spc, pwm->hwpwm, SPRD_PWM_ENABLE); in sprd_pwm_get_state() 104 val = sprd_pwm_read(spc, pwm->hwpwm, SPRD_PWM_PRESCALE); in sprd_pwm_get_state() 109 val = sprd_pwm_read(spc, pwm->hwpwm, SPRD_PWM_DUTY); in sprd_pwm_get_state() 125 struct sprd_pwm_chn *chn = &spc->chn[pwm->hwpwm]; in sprd_pwm_config() 155 sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_PRESCALE, prescale); in sprd_pwm_config() 156 sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_MOD, SPRD_PWM_MOD_MAX); in sprd_pwm_config() 157 sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_DUTY, duty); in sprd_pwm_config() 166 struct sprd_pwm_chn *chn = &spc->chn[pwm->hwpwm]; in sprd_pwm_apply() [all …]
|
| H A D | pwm-dwc-core.c | 70 __dwc_pwm_set_enable(dwc, pwm->hwpwm, false); in __dwc_pwm_configure_timer() 78 dwc_pwm_writel(dwc, low, DWC_TIM_LD_CNT(pwm->hwpwm)); in __dwc_pwm_configure_timer() 79 dwc_pwm_writel(dwc, high, DWC_TIM_LD_CNT2(pwm->hwpwm)); in __dwc_pwm_configure_timer() 88 dwc_pwm_writel(dwc, ctrl, DWC_TIM_CTRL(pwm->hwpwm)); in __dwc_pwm_configure_timer() 93 __dwc_pwm_set_enable(dwc, pwm->hwpwm, state->enabled); in __dwc_pwm_configure_timer() 112 __dwc_pwm_set_enable(dwc, pwm->hwpwm, false); in dwc_pwm_apply() 129 ctrl = dwc_pwm_readl(dwc, DWC_TIM_CTRL(pwm->hwpwm)); in dwc_pwm_get_state() 130 ld = dwc_pwm_readl(dwc, DWC_TIM_LD_CNT(pwm->hwpwm)); in dwc_pwm_get_state() 131 ld2 = dwc_pwm_readl(dwc, DWC_TIM_LD_CNT2(pwm->hwpwm)); in dwc_pwm_get_state()
|
| H A D | pwm-microchip-core.c | 79 reg_offset = MCHPCOREPWM_EN(pwm->hwpwm >> 3); in mchp_core_pwm_enable() 80 shift = pwm->hwpwm & 7; in mchp_core_pwm_enable() 87 mchp_core_pwm->channel_enabled &= ~BIT(pwm->hwpwm); in mchp_core_pwm_enable() 88 mchp_core_pwm->channel_enabled |= enable << pwm->hwpwm; in mchp_core_pwm_enable() 95 if (mchp_core_pwm->sync_update_mask & (1 << pwm->hwpwm)) in mchp_core_pwm_enable() 178 writel_relaxed(posedge, mchp_core_pwm->base + MCHPCOREPWM_POSEDGE(pwm->hwpwm)); in mchp_core_pwm_apply_duty() 179 writel_relaxed(negedge, mchp_core_pwm->base + MCHPCOREPWM_NEGEDGE(pwm->hwpwm)); in mchp_core_pwm_apply_duty() 308 period_locked = mchp_core_pwm->channel_enabled & ~(1 << pwm->hwpwm); in mchp_core_pwm_apply_locked() 362 mchp_core_pwm_wait_for_sync_update(mchp_core_pwm, pwm->hwpwm); in mchp_core_pwm_apply() 375 mchp_core_pwm_wait_for_sync_update(mchp_core_pwm, pwm->hwpwm); in mchp_core_pwm_get_state() [all …]
|
| H A D | pwm-berlin.c | 99 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_CONTROL); in berlin_pwm_config() 104 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_CONTROL); in berlin_pwm_config() 106 berlin_pwm_writel(bpc, pwm->hwpwm, duty, BERLIN_PWM_DUTY); in berlin_pwm_config() 107 berlin_pwm_writel(bpc, pwm->hwpwm, period, BERLIN_PWM_TCNT); in berlin_pwm_config() 119 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_CONTROL); in berlin_pwm_set_polarity() 126 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_CONTROL); in berlin_pwm_set_polarity() 136 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_EN); in berlin_pwm_enable() 138 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_EN); in berlin_pwm_enable() 149 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_EN); in berlin_pwm_disable() 151 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_EN); in berlin_pwm_disable()
|
| H A D | pwm-rz-mtu3.c | 132 rz_mtu3_get_channel(struct rz_mtu3_pwm_chip *rz_mtu3_pwm, u32 hwpwm) in rz_mtu3_get_channel() argument 138 if (priv->map->base_pwm_number + priv->map->num_channel_ios > hwpwm) in rz_mtu3_get_channel() 146 u32 hwpwm) in rz_mtu3_pwm_is_ch_enabled() argument 152 priv = rz_mtu3_get_channel(rz_mtu3_pwm, hwpwm); in rz_mtu3_pwm_is_ch_enabled() 157 if (priv->map->base_pwm_number == hwpwm) in rz_mtu3_pwm_is_ch_enabled() 172 priv = rz_mtu3_get_channel(rz_mtu3_pwm, pwm->hwpwm); in rz_mtu3_pwm_request() 201 priv = rz_mtu3_get_channel(rz_mtu3_pwm, pwm->hwpwm); in rz_mtu3_pwm_free() 224 priv = rz_mtu3_get_channel(rz_mtu3_pwm, pwm->hwpwm); in rz_mtu3_pwm_enable() 229 if (priv->map->base_pwm_number == pwm->hwpwm) in rz_mtu3_pwm_enable() 250 priv = rz_mtu3_get_channel(rz_mtu3_pwm, pwm->hwpwm); in rz_mtu3_pwm_disable() [all …]
|
| H A D | pwm-lpc18xx-sct.c | 135 val &= ~LPC18XX_PWM_RES_MASK(pwm->hwpwm); in lpc18xx_pwm_set_conflict_res() 136 val |= LPC18XX_PWM_RES(pwm->hwpwm, action); in lpc18xx_pwm_set_conflict_res() 166 struct lpc18xx_pwm_data *lpc18xx_data = &lpc18xx_pwm->channeldata[pwm->hwpwm]; in lpc18xx_pwm_config_duty() 207 pwm->hwpwm); in lpc18xx_pwm_config() 225 struct lpc18xx_pwm_data *lpc18xx_data = &lpc18xx_pwm->channeldata[pwm->hwpwm]; in lpc18xx_pwm_enable() 248 lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_OUTPUTSET(pwm->hwpwm), in lpc18xx_pwm_enable() 250 lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_OUTPUTCL(pwm->hwpwm), in lpc18xx_pwm_enable() 260 struct lpc18xx_pwm_data *lpc18xx_data = &lpc18xx_pwm->channeldata[pwm->hwpwm]; in lpc18xx_pwm_disable() 264 lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_OUTPUTSET(pwm->hwpwm), 0); in lpc18xx_pwm_disable() 265 lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_OUTPUTCL(pwm->hwpwm), 0); in lpc18xx_pwm_disable() [all …]
|
| H A D | pwm-max7360.c | 51 return regmap_write_bits(regmap, MAX7360_REG_PWMCFG(pwm->hwpwm), in max7360_pwm_request() 117 ret = regmap_write(regmap, MAX7360_REG_PWM(pwm->hwpwm), wfhw->duty_steps); in max7360_pwm_write_waveform() 122 val = wfhw->enabled ? BIT(pwm->hwpwm) : 0; in max7360_pwm_write_waveform() 123 return regmap_write_bits(regmap, MAX7360_REG_GPIOCTRL, BIT(pwm->hwpwm), val); in max7360_pwm_write_waveform() 139 if (val & BIT(pwm->hwpwm)) { in max7360_pwm_read_waveform() 141 ret = regmap_read(regmap, MAX7360_REG_PWM(pwm->hwpwm), &val); in max7360_pwm_read_waveform()
|
| H A D | pwm-spear.c | 126 spear_pwm_writel(pc, pwm->hwpwm, PWMCR, in spear_pwm_config() 128 spear_pwm_writel(pc, pwm->hwpwm, PWMDCR, dc); in spear_pwm_config() 129 spear_pwm_writel(pc, pwm->hwpwm, PWMPCR, pv); in spear_pwm_config() 145 val = spear_pwm_readl(pc, pwm->hwpwm, PWMCR); in spear_pwm_enable() 147 spear_pwm_writel(pc, pwm->hwpwm, PWMCR, val); in spear_pwm_enable() 157 val = spear_pwm_readl(pc, pwm->hwpwm, PWMCR); in spear_pwm_disable() 159 spear_pwm_writel(pc, pwm->hwpwm, PWMCR, val); in spear_pwm_disable()
|
| H A D | pwm-keembay.c | 101 highlow = readl(priv->base + KMB_PWM_LEADIN_OFFSET(pwm->hwpwm)); in keembay_pwm_get_state() 108 highlow = readl(priv->base + KMB_PWM_HIGHLOW_OFFSET(pwm->hwpwm)); in keembay_pwm_get_state() 136 KMB_PWM_LEADIN_OFFSET(pwm->hwpwm)); in keembay_pwm_apply() 142 keembay_pwm_disable(priv, pwm->hwpwm); in keembay_pwm_apply() 170 writel(pwm_count, priv->base + KMB_PWM_HIGHLOW_OFFSET(pwm->hwpwm)); in keembay_pwm_apply() 173 keembay_pwm_enable(priv, pwm->hwpwm); in keembay_pwm_apply()
|
| H A D | pwm-img.c | 133 val &= ~(PWM_CTRL_CFG_DIV_MASK << PWM_CTRL_CFG_DIV_SHIFT(pwm->hwpwm)); in img_pwm_config() 135 PWM_CTRL_CFG_DIV_SHIFT(pwm->hwpwm); in img_pwm_config() 140 img_pwm_writel(imgchip, PWM_CH_CFG(pwm->hwpwm), val); in img_pwm_config() 158 val |= BIT(pwm->hwpwm); in img_pwm_enable() 163 PERIP_PWM_PDM_CONTROL_CH_SHIFT(pwm->hwpwm)); in img_pwm_enable() 174 val &= ~BIT(pwm->hwpwm); in img_pwm_disable()
|
| H A D | pwm-axi-pwmgen.c | 115 pwm->hwpwm, wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns, in axi_pwmgen_round_waveform_tohw() 146 unsigned int ch = pwm->hwpwm; in axi_pwmgen_write_waveform() 171 unsigned int ch = pwm->hwpwm; in axi_pwmgen_read_waveform()
|
| H A D | pwm-sifive.c | 131 inactive = readl(ddata->regs + PWM_SIFIVE_PWMCMP(pwm->hwpwm)); in pwm_sifive_get_state() 218 writel(inactive, ddata->regs + PWM_SIFIVE_PWMCMP(pwm->hwpwm)); in pwm_sifive_apply()
|
| H A D | pwm-pxa.c | 75 offset = pwm->hwpwm ? 0x10 : 0; in pxa_pwm_config()
|
| /linux/drivers/hwmon/ |
| H A D | aspeed-g6-pwm-tach.c | 153 u32 hwpwm = pwm->hwpwm; in aspeed_pwm_get_state() local 158 val = readl(priv->base + PWM_ASPEED_CTRL(hwpwm)); in aspeed_pwm_get_state() 164 val = readl(priv->base + PWM_ASPEED_DUTY_CYCLE(hwpwm)); in aspeed_pwm_get_state() 191 u32 hwpwm = pwm->hwpwm, duty_pt, val; in aspeed_pwm_apply() local 233 val = readl(priv->base + PWM_ASPEED_DUTY_CYCLE(hwpwm)); in aspeed_pwm_apply() 237 writel(val, priv->base + PWM_ASPEED_DUTY_CYCLE(hwpwm)); in aspeed_pwm_apply() 246 val = readl(priv->base + PWM_ASPEED_DUTY_CYCLE(hwpwm)); in aspeed_pwm_apply() 250 writel(val, priv->base + PWM_ASPEED_DUTY_CYCLE(hwpwm)); in aspeed_pwm_apply() 253 val = readl(priv->base + PWM_ASPEED_CTRL(hwpwm)); in aspeed_pwm_apply() 262 writel(val, priv->base + PWM_ASPEED_CTRL(hwpwm)); in aspeed_pwm_apply()
|
| H A D | adt7470.c | 969 wfhw->val = data->pwm[pwm->hwpwm]; in adt7470_pwm_read_waveform() 983 if (pwm->hwpwm % 2) in adt7470_pwm_write_waveform() 990 if (data->pwm[pwm->hwpwm] == wfhw->val && in adt7470_pwm_write_waveform() 991 data->pwm_automatic[pwm->hwpwm] == 0) in adt7470_pwm_write_waveform() 996 ADT7470_REG_PWM_CFG(pwm->hwpwm), in adt7470_pwm_write_waveform() 1001 data->pwm_automatic[pwm->hwpwm] = 0; in adt7470_pwm_write_waveform() 1004 ADT7470_REG_PWM(pwm->hwpwm), wfhw->val); in adt7470_pwm_write_waveform() 1008 data->pwm[pwm->hwpwm] = wfhw->val; in adt7470_pwm_write_waveform()
|
| /linux/include/trace/events/ |
| H A D | pwm.h | 20 __field(unsigned int, hwpwm) \ 26 __entry->hwpwm = pwm->hwpwm; \ 30 TP_printk("pwmchip%u.%u: " fmt, __entry->chipid, __entry->hwpwm, args)
|
| /linux/include/uapi/linux/ |
| H A D | pwm.h | 19 __u32 hwpwm; member
|
| /linux/drivers/gpio/ |
| H A D | gpio-mvebu.c | 657 pwm->hwpwm, "mvebu-pwm", in mvebu_pwm_request() 768 mvebu_gpio_blink(&mvchip->chip, pwm->hwpwm, 1); in mvebu_pwm_apply() 770 mvebu_gpio_blink(&mvchip->chip, pwm->hwpwm, 0); in mvebu_pwm_apply()
|