Lines Matching defs:ctl
63 const struct axi_fan_control_data *ctl)
65 iowrite32(val, ctl->base + reg);
69 const struct axi_fan_control_data *ctl)
71 return ioread32(ctl->base + reg);
80 struct axi_fan_control_data *ctl = dev_get_drvdata(dev);
82 u32 temp = axi_ioread(attr->index, ctl);
92 struct axi_fan_control_data *ctl = dev_get_drvdata(dev);
102 axi_iowrite(temp, attr->index, ctl);
107 static long axi_fan_control_get_pwm_duty(const struct axi_fan_control_data *ctl)
109 u32 pwm_width = axi_ioread(ADI_REG_PWM_WIDTH, ctl);
110 u32 pwm_period = axi_ioread(ADI_REG_PWM_PERIOD, ctl);
119 struct axi_fan_control_data *ctl)
121 u32 pwm_period = axi_ioread(ADI_REG_PWM_PERIOD, ctl);
127 axi_iowrite(new_width, ADI_REG_PWM_WIDTH, ctl);
132 static long axi_fan_control_get_fan_rpm(const struct axi_fan_control_data *ctl)
134 const u32 tach = axi_ioread(ADI_REG_TACH_MEASUR, ctl);
147 return DIV_ROUND_CLOSEST(60 * ctl->clk_rate, ctl->ppr * tach);
152 struct axi_fan_control_data *ctl = dev_get_drvdata(dev);
157 raw_temp = axi_ioread(ADI_REG_TEMPERATURE, ctl);
173 struct axi_fan_control_data *ctl = dev_get_drvdata(dev);
177 *val = ctl->fan_fault;
179 ctl->fan_fault = 0;
182 *val = axi_fan_control_get_fan_rpm(ctl);
191 struct axi_fan_control_data *ctl = dev_get_drvdata(dev);
195 *val = axi_fan_control_get_pwm_duty(ctl);
204 struct axi_fan_control_data *ctl = dev_get_drvdata(dev);
208 return axi_fan_control_set_pwm_duty(val, ctl);
320 * already to the ney duty cycle) based on the %ctl->hw_pwm_req flag.
324 struct axi_fan_control_data *ctl = (struct axi_fan_control_data *)data;
325 u32 irq_pending = axi_ioread(ADI_REG_IRQ_PENDING, ctl);
329 if (ctl->update_tacho_params) {
330 u32 new_tach = axi_ioread(ADI_REG_TACH_MEASUR, ctl);
335 axi_iowrite(new_tach, ADI_REG_TACH_PERIOD, ctl);
336 axi_iowrite(tach_tol, ADI_REG_TACH_TOLERANCE, ctl);
337 ctl->update_tacho_params = false;
347 if (!ctl->hw_pwm_req) {
348 ctl->update_tacho_params = true;
350 ctl->hw_pwm_req = false;
351 sysfs_notify(&ctl->hdev->kobj, NULL, "pwm1");
357 ctl->hw_pwm_req = true;
360 ctl->fan_fault = 1;
364 axi_iowrite(clear_mask, ADI_REG_IRQ_PENDING, ctl);
369 static int axi_fan_control_init(struct axi_fan_control_data *ctl,
375 ret = of_property_read_u32(np, "pulses-per-revolution", &ctl->ppr);
380 if (ctl->ppr != 1 && ctl->ppr != 2 && ctl->ppr != 4)
388 ADI_REG_IRQ_MASK, ctl);
391 axi_iowrite(0x01, ADI_REG_RSTN, ctl);
456 struct axi_fan_control_data *ctl;
467 ctl = devm_kzalloc(&pdev->dev, sizeof(*ctl), GFP_KERNEL);
468 if (!ctl)
471 ctl->base = devm_platform_ioremap_resource(pdev, 0);
472 if (IS_ERR(ctl->base))
473 return PTR_ERR(ctl->base);
481 ctl->clk_rate = clk_get_rate(clk);
482 if (!ctl->clk_rate)
485 version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
498 ret = axi_fan_control_init(ctl, pdev->dev.of_node);
504 ctl->hdev = devm_hwmon_device_register_with_info(&pdev->dev,
506 ctl,
510 if (IS_ERR(ctl->hdev))
511 return PTR_ERR(ctl->hdev);
513 ctl->irq = platform_get_irq(pdev, 0);
514 if (ctl->irq < 0)
515 return ctl->irq;
517 ret = devm_request_threaded_irq(&pdev->dev, ctl->irq, NULL,
520 pdev->driver_override, ctl);