Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3deb6e64 authored by Amy Maloche's avatar Amy Maloche Committed by Abinaya P
Browse files

input: synaptics_fw_update: Remove hardcoded firmware image name



Firmware name should be passed in based on target, not hardcoded.
Remove hardcoding and add appropriate error checking for this.

This is a propagated patch from msm-3.4 kernel
cb83583f41c3cfa50106645d920a3b7afffe17ba (input: synaptics_fw
_update: Remove hardcoded firmware image name).

Change-Id: Ia95bf2abf8a86adc649d64d757f22d84c8e0053f
Signed-off-by: default avatarAmy Maloche <amaloche@codeaurora.org>
Signed-off-by: default avatarAbinaya P <abinayap@codeaurora.org>
parent 4216b3b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ Optional property:
 - synaptics,y-flip		: modify orientation of the y axis
 - synaptics,panel-x		: panel x dimension
 - synaptics,panel-y		: panel y dimension
 - synaptics,fw-image-name	: name of firmware .img file in /etc/firmware

Example:
	i2c@f9927000 { /* BLSP1 QUP5 */
+14 −5
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@

#define DEBUG_FW_UPDATE
#define SHOW_PROGRESS
#define FW_IMAGE_NAME "PR1063486-s7301_00000000.img"
#define MAX_FIRMWARE_ID_LEN 10
#define FORCE_UPDATE false
#define INSIDE_FIRMWARE_UPDATE
@@ -587,7 +586,8 @@ static enum flash_area fwu_go_nogo(void)
	deviceFirmwareID = extract_uint(firmware_id);

	/* .img firmware id */
	strptr = strnstr(FW_IMAGE_NAME, "PR", sizeof(FW_IMAGE_NAME));
	strptr = strnstr(fwu->rmi4_data->fw_image_name, "PR",
			sizeof(fwu->rmi4_data->fw_image_name));
	if (!strptr) {
		dev_err(&i2c_client->dev,
			"No valid PR number (PRxxxxxxx) found in image file name...\n");
@@ -1220,19 +1220,28 @@ static int fwu_start_reflash(void)

	pr_notice("%s: Start of reflash process\n", __func__);

	if (!fwu->rmi4_data->fw_image_name) {
		retval = 0;
		dev_err(&fwu->rmi4_data->i2c_client->dev,
			"Firmware image name not given, skipping update\n");
		goto exit;
	}

	if (fwu->ext_data_source)
		fw_image = fwu->ext_data_source;
	else {
		dev_dbg(&fwu->rmi4_data->i2c_client->dev,
				"%s: Requesting firmware image %s\n",
				__func__, FW_IMAGE_NAME);
				__func__, fwu->rmi4_data->fw_image_name);

		retval = request_firmware(&fw_entry, FW_IMAGE_NAME,
		retval = request_firmware(&fw_entry,
				fwu->rmi4_data->fw_image_name,
				&fwu->rmi4_data->i2c_client->dev);
		if (retval != 0) {
			dev_err(&fwu->rmi4_data->i2c_client->dev,
					"%s: Firmware image %s not available\n",
					__func__, FW_IMAGE_NAME);
					__func__,
					fwu->rmi4_data->fw_image_name);
			retval = -EINVAL;
			goto exit;
		}
+9 −0
Original line number Diff line number Diff line
@@ -1006,6 +1006,13 @@ static int synaptics_rmi4_parse_dt(struct device *dev,
	rmi4_pdata->panel_y = temp_val;


	rc = of_property_read_string(np, "synaptics,fw-image-name",
		&rmi4_pdata->fw_image_name);
	if (rc && (rc != -EINVAL)) {
		dev_err(dev, "Unable to read fw image name\n");
		return rc;
	}

	/* reset, irq gpio info */
	rmi4_pdata->reset_gpio = of_get_named_gpio_flags(np,
			"synaptics,reset-gpio", 0, &rmi4_pdata->reset_flags);
@@ -2004,6 +2011,8 @@ static int synaptics_rmi4_probe(struct i2c_client *client,
	rmi4_data->flip_x = rmi4_data->board->x_flip;
	rmi4_data->flip_y = rmi4_data->board->y_flip;

	rmi4_data->fw_image_name = rmi4_data->board->fw_image_name;

	rmi4_data->input_dev->name = DRIVER_NAME;
	rmi4_data->input_dev->phys = INPUT_PHYS_NAME;
	rmi4_data->input_dev->id.bustype = BUS_I2C;
+1 −0
Original line number Diff line number Diff line
@@ -198,6 +198,7 @@ struct synaptics_rmi4_data {
#ifdef CONFIG_HAS_EARLYSUSPEND
	struct early_suspend early_suspend;
#endif
	const char *fw_image_name;
	unsigned char current_page;
	unsigned char button_0d_enabled;
	unsigned char full_pm_cycle;
+1 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ struct synaptics_rmi4_platform_data {
	unsigned reset_gpio;
	unsigned panel_x;
	unsigned panel_y;
	const char *fw_image_name;
	int (*gpio_config)(unsigned gpio, bool configure);
	struct synaptics_rmi4_capacitance_button_map *capacitance_button_map;
};