Commit 5bcee83a authored by Dario Binacchi's avatar Dario Binacchi Committed by Dmitry Torokhov
Browse files

Input: edt-ft5x06 - set report rate by dts property

parent 23ea98f4
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/property.h>
#include <linux/ratelimit.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h>
@@ -1084,6 +1085,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
	struct input_dev *input;
	unsigned long irq_flags;
	int error;
	u32 report_rate;
	char fw_version[EDT_NAME_LEN];

	dev_dbg(&client->dev, "probing for EDT FT5x06 I2C\n");
@@ -1213,6 +1215,27 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
	edt_ft5x06_ts_get_defaults(&client->dev, tsdata);
	edt_ft5x06_ts_get_parameters(tsdata);

	if (tsdata->reg_addr.reg_report_rate != NO_REGISTER &&
	    !device_property_read_u32(&client->dev,
				      "report-rate-hz", &report_rate)) {
		if (tsdata->version == EDT_M06)
			tsdata->report_rate = clamp_val(report_rate, 30, 140);
		else
			tsdata->report_rate = clamp_val(report_rate, 1, 255);

		if (report_rate != tsdata->report_rate)
			dev_warn(&client->dev,
				 "report-rate %dHz is unsupported, use %dHz\n",
				 report_rate, tsdata->report_rate);

		if (tsdata->version == EDT_M06)
			tsdata->report_rate /= 10;

		edt_ft5x06_register_write(tsdata,
					  tsdata->reg_addr.reg_report_rate,
					  tsdata->report_rate);
	}

	dev_dbg(&client->dev,
		"Model \"%s\", Rev. \"%s\", %dx%d sensors\n",
		tsdata->name, fw_version, tsdata->num_x, tsdata->num_y);