Linux v4.14-rc1
This commit is contained in:
		
							parent
							
								
									77c153240f
								
							
						
					
					
						commit
						ab0c52a53b
					
				| @ -1,53 +0,0 @@ | ||||
| From 2a99775c336303d2efc43eab4f24b34722a28faa Mon Sep 17 00:00:00 2001 | ||||
| From: "Sergei A. Trusov" <sergei.a.trusov@ya.ru> | ||||
| Date: Tue, 20 Jun 2017 18:08:35 +0200 | ||||
| Subject: [PATCH 11/16] Input: goodix: Add support for capacitive home button | ||||
| 
 | ||||
| On some x86 tablets with a Goodix touchscreen, the Windows logo on the | ||||
| front is a capacitive home button. Touching this button results in a touch | ||||
| with bit 4 of the first byte set, while only the lower 4 bits (0-3) are | ||||
| used to indicate the number of touches. | ||||
| 
 | ||||
| Report a KEY_LEFTMETA press when this happens. | ||||
| 
 | ||||
| Note that the hardware might support more than one button, in which | ||||
| case the "id" byte of coor_data would identify the button in question. | ||||
| This is not implemented as we don't have access to hardware with | ||||
| multiple buttons. | ||||
| 
 | ||||
| Signed-off-by: Sergei A. Trusov <sergei.a.trusov@ya.ru> | ||||
| Acked-by: Bastien Nocera <hadess@hadess.net> | ||||
| ---
 | ||||
|  drivers/input/touchscreen/goodix.c | 9 +++++++++ | ||||
|  1 file changed, 9 insertions(+) | ||||
| 
 | ||||
| diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
 | ||||
| index 240b16f3ee97..903137d9cf7d 100644
 | ||||
| --- a/drivers/input/touchscreen/goodix.c
 | ||||
| +++ b/drivers/input/touchscreen/goodix.c
 | ||||
| @@ -267,6 +267,12 @@ static void goodix_process_events(struct goodix_ts_data *ts)
 | ||||
|  	if (touch_num < 0) | ||||
|  		return; | ||||
|   | ||||
| +	/*
 | ||||
| +	 * Bit 4 of the first byte reports the status of the capacitive
 | ||||
| +	 * Windows/Home button.
 | ||||
| +	 */
 | ||||
| +	input_report_key(ts->input_dev, KEY_LEFTMETA, !!(point_data[0] & BIT(4)));
 | ||||
| +
 | ||||
|  	for (i = 0; i < touch_num; i++) | ||||
|  		goodix_ts_report_touch(ts, | ||||
|  				&point_data[1 + GOODIX_CONTACT_SIZE * i]); | ||||
| @@ -612,6 +618,9 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
 | ||||
|  	ts->input_dev->id.product = ts->id; | ||||
|  	ts->input_dev->id.version = ts->version; | ||||
|   | ||||
| +	/* Capacitive Windows/Home button on some devices */
 | ||||
| +	input_set_capability(ts->input_dev, EV_KEY, KEY_LEFTMETA);
 | ||||
| +
 | ||||
|  	error = input_register_device(ts->input_dev); | ||||
|  	if (error) { | ||||
|  		dev_err(&ts->client->dev, | ||||
| -- 
 | ||||
| 2.13.0 | ||||
| 
 | ||||
							
								
								
									
										74
									
								
								HID-rmi-Make-sure-the-HID-device-is-opened-on-resume.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								HID-rmi-Make-sure-the-HID-device-is-opened-on-resume.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | ||||
| From patchwork Sun Jul 23 01:15:09 2017 | ||||
| Content-Type: text/plain; charset="utf-8" | ||||
| MIME-Version: 1.0 | ||||
| Content-Transfer-Encoding: 7bit | ||||
| Subject: HID: rmi: Make sure the HID device is opened on resume | ||||
| From: Lyude <lyude@redhat.com> | ||||
| X-Patchwork-Id: 9858267 | ||||
| Message-Id: <20170723011509.23651-1-lyude@redhat.com> | ||||
| To: linux-input@vger.kernel.org | ||||
| Cc: Lyude <lyude@redhat.com>, Andrew Duggan <aduggan@synaptics.com>, | ||||
|  stable@vger.kernel.org, Jiri Kosina <jikos@kernel.org>, | ||||
|  Benjamin Tissoires <benjamin.tissoires@redhat.com>, | ||||
|  linux-kernel@vger.kernel.org | ||||
| Date: Sat, 22 Jul 2017 21:15:09 -0400 | ||||
| 
 | ||||
| So it looks like that suspend/resume has actually always been broken on | ||||
| hid-rmi. The fact it worked was a rather silly coincidence that was | ||||
| relying on the HID device to already be opened upon resume. This means | ||||
| that so long as anything was reading the /dev/input/eventX node for for | ||||
| an RMI device, it would suspend and resume correctly. As well, if | ||||
| nothing happened to be keeping the HID device away it would shut off, | ||||
| then the RMI driver would get confused on resume when it stopped | ||||
| responding and explode. | ||||
| 
 | ||||
| So, call hid_hw_open() in rmi_post_resume() so we make sure that the | ||||
| device is alive before we try talking to it. | ||||
| 
 | ||||
| This fixes RMI device suspend/resume over HID. | ||||
| 
 | ||||
| Signed-off-by: Lyude <lyude@redhat.com> | ||||
| Cc: Andrew Duggan <aduggan@synaptics.com> | ||||
| Cc: stable@vger.kernel.org | ||||
| ---
 | ||||
|  drivers/hid/hid-rmi.c | 15 +++++++++++---- | ||||
|  1 file changed, 11 insertions(+), 4 deletions(-) | ||||
| 
 | ||||
| diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
 | ||||
| index 5b40c2614599..e7d124f9a27f 100644
 | ||||
| --- a/drivers/hid/hid-rmi.c
 | ||||
| +++ b/drivers/hid/hid-rmi.c
 | ||||
| @@ -431,22 +431,29 @@ static int rmi_post_resume(struct hid_device *hdev)
 | ||||
|  { | ||||
|  	struct rmi_data *data = hid_get_drvdata(hdev); | ||||
|  	struct rmi_device *rmi_dev = data->xport.rmi_dev; | ||||
| -	int ret;
 | ||||
| +	int ret = 0;
 | ||||
|   | ||||
|  	if (!(data->device_flags & RMI_DEVICE)) | ||||
|  		return 0; | ||||
|   | ||||
| -	ret = rmi_reset_attn_mode(hdev);
 | ||||
| +	/* Make sure the HID device is ready to receive events */
 | ||||
| +	ret = hid_hw_open(hdev);
 | ||||
|  	if (ret) | ||||
|  		return ret; | ||||
|   | ||||
| +	ret = rmi_reset_attn_mode(hdev);
 | ||||
| +	if (ret)
 | ||||
| +		goto out;
 | ||||
| +
 | ||||
|  	ret = rmi_driver_resume(rmi_dev, false); | ||||
|  	if (ret) { | ||||
|  		hid_warn(hdev, "Failed to resume device: %d\n", ret); | ||||
| -		return ret;
 | ||||
| +		goto out;
 | ||||
|  	} | ||||
|   | ||||
| -	return 0;
 | ||||
| +out:
 | ||||
| +	hid_hw_close(hdev);
 | ||||
| +	return ret;
 | ||||
|  } | ||||
|  #endif /* CONFIG_PM */ | ||||
|   | ||||
							
								
								
									
										1
									
								
								baseconfig/CONFIG_INPUT_PWM_VIBRA
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/CONFIG_INPUT_PWM_VIBRA
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
							
								
								
									
										1
									
								
								baseconfig/CONFIG_SQUASHFS_ZSTD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/CONFIG_SQUASHFS_ZSTD
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
							
								
								
									
										1
									
								
								baseconfig/arm/arm64/CONFIG_ARM_TEGRA186_CPUFREQ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/arm/arm64/CONFIG_ARM_TEGRA186_CPUFREQ
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| CONFIG_ARM_TEGRA186_CPUFREQ=m | ||||
							
								
								
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_BD9571MWV
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_BD9571MWV
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # CONFIG_MFD_BD9571MWV is not set | ||||
							
								
								
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_RTSX_USB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_RTSX_USB
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # CONFIG_MFD_RTSX_USB is not set | ||||
							
								
								
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_TPS68470
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_TPS68470
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # CONFIG_MFD_TPS68470 is not set | ||||
							
								
								
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_VIPERBOARD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								baseconfig/s390x/CONFIG_MFD_VIPERBOARD
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # CONFIG_MFD_VIPERBOARD is not set | ||||
							
								
								
									
										331
									
								
								input-rmi4-remove-the-need-for-artifical-IRQ.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										331
									
								
								input-rmi4-remove-the-need-for-artifical-IRQ.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,331 @@ | ||||
| From 47c84357d95eccd77c1320b4bca74bbec649ef3c Mon Sep 17 00:00:00 2001 | ||||
| From: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||||
| Date: Mon, 3 Apr 2017 18:18:21 +0200 | ||||
| Subject: [PATCH] Input: rmi4 - remove the need for artificial IRQ in case of | ||||
|  HID | ||||
| 
 | ||||
| The IRQ from rmi4 may interfere with the one we currently use on i2c-hid. | ||||
| Given that there is already a need for an external API from rmi4 to | ||||
| forward the attention data, we can, in this particular case rely on a | ||||
| separate workqueue to prevent cursor jumps. | ||||
| 
 | ||||
| Reported-by: Cameron Gutman <aicommander@gmail.com> | ||||
| Reported-by: Thorsten Leemhuis <linux@leemhuis.info> | ||||
| Reported-by: Jason Ekstrand <jason@jlekstrand.net> | ||||
| Tested-by: Andrew Duggan <aduggan@synaptics.com> | ||||
| Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||||
| Signed-off-by: Lyude <lyude@redhat.com> | ||||
| ---
 | ||||
|  drivers/hid/hid-rmi.c           |  64 --------------------- | ||||
|  drivers/input/rmi4/rmi_driver.c | 122 ++++++++++++++++++++++++---------------- | ||||
|  include/linux/rmi.h             |   1 + | ||||
|  3 files changed, 75 insertions(+), 112 deletions(-) | ||||
| 
 | ||||
| diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
 | ||||
| index 5b40c26..4aa882c 100644
 | ||||
| --- a/drivers/hid/hid-rmi.c
 | ||||
| +++ b/drivers/hid/hid-rmi.c
 | ||||
| @@ -316,19 +316,12 @@ static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
 | ||||
|  { | ||||
|  	struct rmi_data *hdata = hid_get_drvdata(hdev); | ||||
|  	struct rmi_device *rmi_dev = hdata->xport.rmi_dev; | ||||
| -	unsigned long flags;
 | ||||
|   | ||||
|  	if (!(test_bit(RMI_STARTED, &hdata->flags))) | ||||
|  		return 0; | ||||
|   | ||||
| -	local_irq_save(flags);
 | ||||
| -
 | ||||
|  	rmi_set_attn_data(rmi_dev, data[1], &data[2], size - 2); | ||||
|   | ||||
| -	generic_handle_irq(hdata->rmi_irq);
 | ||||
| -
 | ||||
| -	local_irq_restore(flags);
 | ||||
| -
 | ||||
|  	return 1; | ||||
|  } | ||||
|   | ||||
| @@ -556,56 +549,6 @@ static const struct rmi_transport_ops hid_rmi_ops = {
 | ||||
|  	.reset		= rmi_hid_reset, | ||||
|  }; | ||||
|   | ||||
| -static void rmi_irq_teardown(void *data)
 | ||||
| -{
 | ||||
| -	struct rmi_data *hdata = data;
 | ||||
| -	struct irq_domain *domain = hdata->domain;
 | ||||
| -
 | ||||
| -	if (!domain)
 | ||||
| -		return;
 | ||||
| -
 | ||||
| -	irq_dispose_mapping(irq_find_mapping(domain, 0));
 | ||||
| -
 | ||||
| -	irq_domain_remove(domain);
 | ||||
| -	hdata->domain = NULL;
 | ||||
| -	hdata->rmi_irq = 0;
 | ||||
| -}
 | ||||
| -
 | ||||
| -static int rmi_irq_map(struct irq_domain *h, unsigned int virq,
 | ||||
| -		       irq_hw_number_t hw_irq_num)
 | ||||
| -{
 | ||||
| -	irq_set_chip_and_handler(virq, &dummy_irq_chip, handle_simple_irq);
 | ||||
| -
 | ||||
| -	return 0;
 | ||||
| -}
 | ||||
| -
 | ||||
| -static const struct irq_domain_ops rmi_irq_ops = {
 | ||||
| -	.map = rmi_irq_map,
 | ||||
| -};
 | ||||
| -
 | ||||
| -static int rmi_setup_irq_domain(struct hid_device *hdev)
 | ||||
| -{
 | ||||
| -	struct rmi_data *hdata = hid_get_drvdata(hdev);
 | ||||
| -	int ret;
 | ||||
| -
 | ||||
| -	hdata->domain = irq_domain_create_linear(hdev->dev.fwnode, 1,
 | ||||
| -						 &rmi_irq_ops, hdata);
 | ||||
| -	if (!hdata->domain)
 | ||||
| -		return -ENOMEM;
 | ||||
| -
 | ||||
| -	ret = devm_add_action_or_reset(&hdev->dev, &rmi_irq_teardown, hdata);
 | ||||
| -	if (ret)
 | ||||
| -		return ret;
 | ||||
| -
 | ||||
| -	hdata->rmi_irq = irq_create_mapping(hdata->domain, 0);
 | ||||
| -	if (hdata->rmi_irq <= 0) {
 | ||||
| -		hid_err(hdev, "Can't allocate an IRQ\n");
 | ||||
| -		return hdata->rmi_irq < 0 ? hdata->rmi_irq : -ENXIO;
 | ||||
| -	}
 | ||||
| -
 | ||||
| -	return 0;
 | ||||
| -}
 | ||||
| -
 | ||||
|  static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id) | ||||
|  { | ||||
|  	struct rmi_data *data = NULL; | ||||
| @@ -677,18 +620,11 @@ static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)
 | ||||
|   | ||||
|  	mutex_init(&data->page_mutex); | ||||
|   | ||||
| -	ret = rmi_setup_irq_domain(hdev);
 | ||||
| -	if (ret) {
 | ||||
| -		hid_err(hdev, "failed to allocate IRQ domain\n");
 | ||||
| -		return ret;
 | ||||
| -	}
 | ||||
| -
 | ||||
|  	if (data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS) | ||||
|  		rmi_hid_pdata.f30_data.disable = true; | ||||
|   | ||||
|  	data->xport.dev = hdev->dev.parent; | ||||
|  	data->xport.pdata = rmi_hid_pdata; | ||||
| -	data->xport.pdata.irq = data->rmi_irq;
 | ||||
|  	data->xport.proto_name = "hid"; | ||||
|  	data->xport.ops = &hid_rmi_ops; | ||||
|   | ||||
| diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
 | ||||
| index 4f2bb59..6d7da84 100644
 | ||||
| --- a/drivers/input/rmi4/rmi_driver.c
 | ||||
| +++ b/drivers/input/rmi4/rmi_driver.c
 | ||||
| @@ -209,32 +209,46 @@ void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status,
 | ||||
|  	attn_data.data = fifo_data; | ||||
|   | ||||
|  	kfifo_put(&drvdata->attn_fifo, attn_data); | ||||
| +
 | ||||
| +	schedule_work(&drvdata->attn_work);
 | ||||
|  } | ||||
|  EXPORT_SYMBOL_GPL(rmi_set_attn_data); | ||||
|   | ||||
| -static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
 | ||||
| +static void attn_callback(struct work_struct *work)
 | ||||
|  { | ||||
| -	struct rmi_device *rmi_dev = dev_id;
 | ||||
| -	struct rmi_driver_data *drvdata = dev_get_drvdata(&rmi_dev->dev);
 | ||||
| +	struct rmi_driver_data *drvdata = container_of(work,
 | ||||
| +							struct rmi_driver_data,
 | ||||
| +							attn_work);
 | ||||
|  	struct rmi4_attn_data attn_data = {0}; | ||||
|  	int ret, count; | ||||
|   | ||||
|  	count = kfifo_get(&drvdata->attn_fifo, &attn_data); | ||||
| -	if (count) {
 | ||||
| -		*(drvdata->irq_status) = attn_data.irq_status;
 | ||||
| -		drvdata->attn_data = attn_data;
 | ||||
| -	}
 | ||||
| +	if (!count)
 | ||||
| +		return;
 | ||||
|   | ||||
| -	ret = rmi_process_interrupt_requests(rmi_dev);
 | ||||
| +	*(drvdata->irq_status) = attn_data.irq_status;
 | ||||
| +	drvdata->attn_data = attn_data;
 | ||||
| +
 | ||||
| +	ret = rmi_process_interrupt_requests(drvdata->rmi_dev);
 | ||||
|  	if (ret) | ||||
| -		rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev,
 | ||||
| +		rmi_dbg(RMI_DEBUG_CORE, &drvdata->rmi_dev->dev,
 | ||||
|  			"Failed to process interrupt request: %d\n", ret); | ||||
|   | ||||
| -	if (count)
 | ||||
| -		kfree(attn_data.data);
 | ||||
| +	kfree(attn_data.data);
 | ||||
|   | ||||
|  	if (!kfifo_is_empty(&drvdata->attn_fifo)) | ||||
| -		return rmi_irq_fn(irq, dev_id);
 | ||||
| +		schedule_work(&drvdata->attn_work);
 | ||||
| +}
 | ||||
| +
 | ||||
| +static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
 | ||||
| +{
 | ||||
| +	struct rmi_device *rmi_dev = dev_id;
 | ||||
| +	int ret;
 | ||||
| +
 | ||||
| +	ret = rmi_process_interrupt_requests(rmi_dev);
 | ||||
| +	if (ret)
 | ||||
| +		rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev,
 | ||||
| +			"Failed to process interrupt request: %d\n", ret);
 | ||||
|   | ||||
|  	return IRQ_HANDLED; | ||||
|  } | ||||
| @@ -242,7 +256,6 @@ static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
 | ||||
|  static int rmi_irq_init(struct rmi_device *rmi_dev) | ||||
|  { | ||||
|  	struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev); | ||||
| -	struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
 | ||||
|  	int irq_flags = irq_get_trigger_type(pdata->irq); | ||||
|  	int ret; | ||||
|   | ||||
| @@ -260,8 +273,6 @@ static int rmi_irq_init(struct rmi_device *rmi_dev)
 | ||||
|  		return ret; | ||||
|  	} | ||||
|   | ||||
| -	data->enabled = true;
 | ||||
| -
 | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| @@ -910,23 +921,27 @@ void rmi_enable_irq(struct rmi_device *rmi_dev, bool clear_wake)
 | ||||
|  	if (data->enabled) | ||||
|  		goto out; | ||||
|   | ||||
| -	enable_irq(irq);
 | ||||
| -	data->enabled = true;
 | ||||
| -	if (clear_wake && device_may_wakeup(rmi_dev->xport->dev)) {
 | ||||
| -		retval = disable_irq_wake(irq);
 | ||||
| -		if (retval)
 | ||||
| -			dev_warn(&rmi_dev->dev,
 | ||||
| -				 "Failed to disable irq for wake: %d\n",
 | ||||
| -				 retval);
 | ||||
| -	}
 | ||||
| +	if (irq) {
 | ||||
| +		enable_irq(irq);
 | ||||
| +		data->enabled = true;
 | ||||
| +		if (clear_wake && device_may_wakeup(rmi_dev->xport->dev)) {
 | ||||
| +			retval = disable_irq_wake(irq);
 | ||||
| +			if (retval)
 | ||||
| +				dev_warn(&rmi_dev->dev,
 | ||||
| +					 "Failed to disable irq for wake: %d\n",
 | ||||
| +					 retval);
 | ||||
| +		}
 | ||||
|   | ||||
| -	/*
 | ||||
| -	 * Call rmi_process_interrupt_requests() after enabling irq,
 | ||||
| -	 * otherwise we may lose interrupt on edge-triggered systems.
 | ||||
| -	 */
 | ||||
| -	irq_flags = irq_get_trigger_type(pdata->irq);
 | ||||
| -	if (irq_flags & IRQ_TYPE_EDGE_BOTH)
 | ||||
| -		rmi_process_interrupt_requests(rmi_dev);
 | ||||
| +		/*
 | ||||
| +		 * Call rmi_process_interrupt_requests() after enabling irq,
 | ||||
| +		 * otherwise we may lose interrupt on edge-triggered systems.
 | ||||
| +		 */
 | ||||
| +		irq_flags = irq_get_trigger_type(pdata->irq);
 | ||||
| +		if (irq_flags & IRQ_TYPE_EDGE_BOTH)
 | ||||
| +			rmi_process_interrupt_requests(rmi_dev);
 | ||||
| +	} else {
 | ||||
| +		data->enabled = true;
 | ||||
| +	}
 | ||||
|   | ||||
|  out: | ||||
|  	mutex_unlock(&data->enabled_mutex); | ||||
| @@ -946,20 +961,22 @@ void rmi_disable_irq(struct rmi_device *rmi_dev, bool enable_wake)
 | ||||
|  		goto out; | ||||
|   | ||||
|  	data->enabled = false; | ||||
| -	disable_irq(irq);
 | ||||
| -	if (enable_wake && device_may_wakeup(rmi_dev->xport->dev)) {
 | ||||
| -		retval = enable_irq_wake(irq);
 | ||||
| -		if (retval)
 | ||||
| -			dev_warn(&rmi_dev->dev,
 | ||||
| -				 "Failed to enable irq for wake: %d\n",
 | ||||
| -				 retval);
 | ||||
| -	}
 | ||||
| -
 | ||||
| -	/* make sure the fifo is clean */
 | ||||
| -	while (!kfifo_is_empty(&data->attn_fifo)) {
 | ||||
| -		count = kfifo_get(&data->attn_fifo, &attn_data);
 | ||||
| -		if (count)
 | ||||
| -			kfree(attn_data.data);
 | ||||
| +	if (irq) {
 | ||||
| +		disable_irq(irq);
 | ||||
| +		if (enable_wake && device_may_wakeup(rmi_dev->xport->dev)) {
 | ||||
| +			retval = enable_irq_wake(irq);
 | ||||
| +			if (retval)
 | ||||
| +				dev_warn(&rmi_dev->dev,
 | ||||
| +					 "Failed to enable irq for wake: %d\n",
 | ||||
| +					 retval);
 | ||||
| +		}
 | ||||
| +	} else {
 | ||||
| +		/* make sure the fifo is clean */
 | ||||
| +		while (!kfifo_is_empty(&data->attn_fifo)) {
 | ||||
| +			count = kfifo_get(&data->attn_fifo, &attn_data);
 | ||||
| +			if (count)
 | ||||
| +				kfree(attn_data.data);
 | ||||
| +		}
 | ||||
|  	} | ||||
|   | ||||
|  out: | ||||
| @@ -998,9 +1015,12 @@ EXPORT_SYMBOL_GPL(rmi_driver_resume);
 | ||||
|  static int rmi_driver_remove(struct device *dev) | ||||
|  { | ||||
|  	struct rmi_device *rmi_dev = to_rmi_device(dev); | ||||
| +	struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);
 | ||||
|   | ||||
|  	rmi_disable_irq(rmi_dev, false); | ||||
|   | ||||
| +	cancel_work_sync(&data->attn_work);
 | ||||
| +
 | ||||
|  	rmi_f34_remove_sysfs(rmi_dev); | ||||
|  	rmi_free_function_list(rmi_dev); | ||||
|   | ||||
| @@ -1230,9 +1250,15 @@ static int rmi_driver_probe(struct device *dev)
 | ||||
|  		} | ||||
|  	} | ||||
|   | ||||
| -	retval = rmi_irq_init(rmi_dev);
 | ||||
| -	if (retval < 0)
 | ||||
| -		goto err_destroy_functions;
 | ||||
| +	if (pdata->irq) {
 | ||||
| +		retval = rmi_irq_init(rmi_dev);
 | ||||
| +		if (retval < 0)
 | ||||
| +			goto err_destroy_functions;
 | ||||
| +	}
 | ||||
| +
 | ||||
| +	data->enabled = true;
 | ||||
| +
 | ||||
| +	INIT_WORK(&data->attn_work, attn_callback);
 | ||||
|   | ||||
|  	if (data->f01_container->dev.driver) { | ||||
|  		/* Driver already bound, so enable ATTN now. */ | ||||
| diff --git a/include/linux/rmi.h b/include/linux/rmi.h
 | ||||
| index 64125443..dc90178 100644
 | ||||
| --- a/include/linux/rmi.h
 | ||||
| +++ b/include/linux/rmi.h
 | ||||
| @@ -364,6 +364,7 @@ struct rmi_driver_data {
 | ||||
|   | ||||
|  	struct rmi4_attn_data attn_data; | ||||
|  	DECLARE_KFIFO(attn_fifo, struct rmi4_attn_data, 16); | ||||
| +	struct work_struct attn_work;
 | ||||
|  }; | ||||
|   | ||||
|  int rmi_register_transport_device(struct rmi_transport_dev *xport); | ||||
| -- 
 | ||||
| 2.9.4 | ||||
| 
 | ||||
| @ -2261,6 +2261,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| # CONFIG_INPUT_REGULATOR_HAPTIC is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| @ -5463,6 +5464,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| CONFIG_SRAM=y | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2244,6 +2244,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| # CONFIG_INPUT_REGULATOR_HAPTIC is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| @ -5440,6 +5441,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| CONFIG_SRAM=y | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2412,6 +2412,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| # CONFIG_INPUT_REGULATOR_HAPTIC is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| @ -5934,6 +5935,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| CONFIG_SRAM=y | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2285,6 +2285,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| # CONFIG_INPUT_REGULATOR_HAPTIC is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| @ -5544,6 +5545,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| CONFIG_SRAM=y | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2268,6 +2268,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| # CONFIG_INPUT_REGULATOR_HAPTIC is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| @ -5521,6 +5522,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| CONFIG_SRAM=y | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2395,6 +2395,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| # CONFIG_INPUT_REGULATOR_HAPTIC is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| @ -5911,6 +5912,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| CONFIG_SRAM=y | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2125,6 +2125,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SOC_BUTTON_ARRAY=m | ||||
| @ -5151,6 +5152,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2143,6 +2143,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SOC_BUTTON_ARRAY=m | ||||
| @ -5173,6 +5174,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2143,6 +2143,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SOC_BUTTON_ARRAY=m | ||||
| @ -5173,6 +5174,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2125,6 +2125,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SOC_BUTTON_ARRAY=m | ||||
| @ -5151,6 +5152,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2038,6 +2038,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SPARSEKMAP=m | ||||
| @ -4960,6 +4961,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2020,6 +2020,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SPARSEKMAP=m | ||||
| @ -4936,6 +4937,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -1983,6 +1983,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SPARSEKMAP=m | ||||
| @ -4888,6 +4889,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -1965,6 +1965,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SPARSEKMAP=m | ||||
| @ -4864,6 +4865,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -1982,6 +1982,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SPARSEKMAP=m | ||||
| @ -4887,6 +4888,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -1964,6 +1964,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| CONFIG_INPUT_PWM_BEEPER=m | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SPARSEKMAP=m | ||||
| @ -4863,6 +4864,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -1935,6 +1935,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| # CONFIG_INPUT_POLLDEV is not set | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| # CONFIG_INPUT_PWM_BEEPER is not set | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| # CONFIG_INPUT_SPARSEKMAP is not set | ||||
| @ -2625,7 +2626,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 | ||||
| # CONFIG_MFD_AXP20X_I2C is not set | ||||
| # CONFIG_MFD_AXP20X is not set | ||||
| # CONFIG_MFD_BCM590XX is not set | ||||
| CONFIG_MFD_BD9571MWV=m | ||||
| # CONFIG_MFD_BD9571MWV is not set | ||||
| # CONFIG_MFD_CORE is not set | ||||
| # CONFIG_MFD_CPCAP is not set | ||||
| # CONFIG_MFD_CROS_EC is not set | ||||
| @ -2665,7 +2666,7 @@ CONFIG_MFD_BD9571MWV=m | ||||
| # CONFIG_MFD_RN5T618 is not set | ||||
| # CONFIG_MFD_RT5033 is not set | ||||
| # CONFIG_MFD_RTSX_PCI is not set | ||||
| CONFIG_MFD_RTSX_USB=m | ||||
| # CONFIG_MFD_RTSX_USB is not set | ||||
| # CONFIG_MFD_SEC_CORE is not set | ||||
| # CONFIG_MFD_SI476X_CORE is not set | ||||
| # CONFIG_MFD_SKY81452 is not set | ||||
| @ -2690,9 +2691,9 @@ CONFIG_MFD_SM501_GPIO=y | ||||
| # CONFIG_MFD_TPS65912_I2C is not set | ||||
| # CONFIG_MFD_TPS65912 is not set | ||||
| # CONFIG_MFD_TPS65912_SPI is not set | ||||
| CONFIG_MFD_TPS68470=y | ||||
| # CONFIG_MFD_TPS68470 is not set | ||||
| # CONFIG_MFD_TPS80031 is not set | ||||
| CONFIG_MFD_VIPERBOARD=m | ||||
| # CONFIG_MFD_VIPERBOARD is not set | ||||
| # CONFIG_MFD_VX855 is not set | ||||
| # CONFIG_MFD_WL1273_CORE is not set | ||||
| # CONFIG_MFD_WM831X_I2C is not set | ||||
| @ -4784,6 +4785,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -1917,6 +1917,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| # CONFIG_INPUT_POLLDEV is not set | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| # CONFIG_INPUT_PWM_BEEPER is not set | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| # CONFIG_INPUT_SPARSEKMAP is not set | ||||
| @ -2604,7 +2605,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 | ||||
| # CONFIG_MFD_AXP20X_I2C is not set | ||||
| # CONFIG_MFD_AXP20X is not set | ||||
| # CONFIG_MFD_BCM590XX is not set | ||||
| CONFIG_MFD_BD9571MWV=m | ||||
| # CONFIG_MFD_BD9571MWV is not set | ||||
| # CONFIG_MFD_CORE is not set | ||||
| # CONFIG_MFD_CPCAP is not set | ||||
| # CONFIG_MFD_CROS_EC is not set | ||||
| @ -2644,7 +2645,7 @@ CONFIG_MFD_BD9571MWV=m | ||||
| # CONFIG_MFD_RN5T618 is not set | ||||
| # CONFIG_MFD_RT5033 is not set | ||||
| # CONFIG_MFD_RTSX_PCI is not set | ||||
| CONFIG_MFD_RTSX_USB=m | ||||
| # CONFIG_MFD_RTSX_USB is not set | ||||
| # CONFIG_MFD_SEC_CORE is not set | ||||
| # CONFIG_MFD_SI476X_CORE is not set | ||||
| # CONFIG_MFD_SKY81452 is not set | ||||
| @ -2669,9 +2670,9 @@ CONFIG_MFD_SM501_GPIO=y | ||||
| # CONFIG_MFD_TPS65912_I2C is not set | ||||
| # CONFIG_MFD_TPS65912 is not set | ||||
| # CONFIG_MFD_TPS65912_SPI is not set | ||||
| CONFIG_MFD_TPS68470=y | ||||
| # CONFIG_MFD_TPS68470 is not set | ||||
| # CONFIG_MFD_TPS80031 is not set | ||||
| CONFIG_MFD_VIPERBOARD=m | ||||
| # CONFIG_MFD_VIPERBOARD is not set | ||||
| # CONFIG_MFD_VX855 is not set | ||||
| # CONFIG_MFD_WL1273_CORE is not set | ||||
| # CONFIG_MFD_WM831X_I2C is not set | ||||
| @ -4760,6 +4761,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2191,6 +2191,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| # CONFIG_INPUT_PWM_BEEPER is not set | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SOC_BUTTON_ARRAY=m | ||||
| @ -5225,6 +5226,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
| @ -2173,6 +2173,7 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m | ||||
| CONFIG_INPUT_POLLDEV=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
| # CONFIG_INPUT_PWM_BEEPER is not set | ||||
| # CONFIG_INPUT_PWM_VIBRA is not set | ||||
| CONFIG_INPUT_RETU_PWRBUTTON=m | ||||
| CONFIG_INPUT_RK805_PWRKEY=m | ||||
| CONFIG_INPUT_SOC_BUTTON_ARRAY=m | ||||
| @ -5203,6 +5204,7 @@ CONFIG_SQUASHFS=m | ||||
| CONFIG_SQUASHFS_XATTR=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| CONFIG_SQUASHFS_ZLIB=y | ||||
| CONFIG_SQUASHFS_ZSTD=y | ||||
| # CONFIG_SRAM is not set | ||||
| # CONFIG_SRF04 is not set | ||||
| # CONFIG_SRF08 is not set | ||||
|  | ||||
							
								
								
									
										14
									
								
								kernel.spec
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								kernel.spec
									
									
									
									
									
								
							| @ -67,9 +67,9 @@ Summary: The Linux kernel | ||||
| # The next upstream release sublevel (base_sublevel+1) | ||||
| %define upstream_sublevel %(echo $((%{base_sublevel} + 1))) | ||||
| # The rc snapshot level | ||||
| %global rcrev 0 | ||||
| %global rcrev 1 | ||||
| # The git snapshot level | ||||
| %define gitrev 6 | ||||
| %define gitrev 0 | ||||
| # Set rpm version accordingly | ||||
| %define rpmversion 4.%{upstream_sublevel}.0 | ||||
| %endif | ||||
| @ -322,7 +322,7 @@ Summary: The Linux kernel | ||||
| %else | ||||
| %define listnewconfig_fail 1 | ||||
| #FIXME | ||||
| %define configmismatch_fail 0  | ||||
| %define configmismatch_fail 1 | ||||
| %endif | ||||
| 
 | ||||
| # To temporarily exclude an architecture from being built, add it to | ||||
| @ -632,11 +632,14 @@ Patch502: CVE-2017-7477.patch | ||||
| Patch601: 0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch | ||||
| Patch602: 0002-Input-soc_button_array-Suppress-power-button-presses.patch | ||||
| Patch610: 0010-Input-silead-Add-support-for-capactive-home-button-f.patch | ||||
| Patch611: 0011-Input-goodix-Add-support-for-capacitive-home-button.patch | ||||
| 
 | ||||
| # rhbz 1476467 | ||||
| Patch617: Fix-for-module-sig-verification.patch | ||||
| 
 | ||||
| # rhbz 1431375 | ||||
| Patch618: HID-rmi-Make-sure-the-HID-device-is-opened-on-resume.patch | ||||
| Patch619: input-rmi4-remove-the-need-for-artifical-IRQ.patch | ||||
| 
 | ||||
| # END OF PATCH DEFINITIONS | ||||
| 
 | ||||
| %endif | ||||
| @ -2191,6 +2194,9 @@ fi | ||||
| # | ||||
| # | ||||
| %changelog | ||||
| * Mon Sep 18 2017 Justin M. Forbes <jforbes@fedoraproject.org> - 4.14.0-0.rc1.git0.1 | ||||
| - Linux v4.14-rc1 | ||||
| 
 | ||||
| * Mon Sep 18 2017 Justin M. Forbes <jforbes@fedoraproject.org> | ||||
| - Disable debugging options. | ||||
| 
 | ||||
|  | ||||
| @ -6,13 +6,13 @@ Subject: [PATCH] silence fbcon logo | ||||
| Bugzilla: N/A | ||||
| Upstream-status: Fedora mustard | ||||
| ---
 | ||||
|  drivers/video/console/fbcon.c | 26 +++++++++++++++++++------- | ||||
|  drivers/video/fbdev/core/fbcon.c | 26 +++++++++++++++++++------- | ||||
|  1 file changed, 19 insertions(+), 7 deletions(-) | ||||
| 
 | ||||
| diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
 | ||||
| diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
 | ||||
| index afd3301ac40c..2e08ba0ade3e 100644
 | ||||
| --- a/drivers/video/console/fbcon.c
 | ||||
| +++ b/drivers/video/console/fbcon.c
 | ||||
| --- a/drivers/video/fbdev/core/fbcon.c
 | ||||
| +++ b/drivers/video/fbdev/core/fbcon.c
 | ||||
| @@ -634,13 +634,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
 | ||||
|  		kfree(save); | ||||
|  	} | ||||
| @ -36,10 +36,11 @@ index afd3301ac40c..2e08ba0ade3e 100644 | ||||
|  	} | ||||
|  } | ||||
|  #endif /* MODULE */ | ||||
| @@ -3654,6 +3656,16 @@ static void __exit fb_console_exit(void)
 | ||||
|   | ||||
|  module_exit(fb_console_exit); | ||||
|   | ||||
| @@ -3671,4 +3671,15 @@ void __exit fb_console_exit(void)
 | ||||
|  	do_unregister_con_driver(&fb_con); | ||||
|  	console_unlock(); | ||||
|  }	 | ||||
| +
 | ||||
| +#else
 | ||||
| +
 | ||||
| +static int __init quiet_logo(char *str)
 | ||||
| @ -51,8 +52,6 @@ index afd3301ac40c..2e08ba0ade3e 100644 | ||||
| +early_param("quiet", quiet_logo);
 | ||||
| +
 | ||||
|  #endif | ||||
|   | ||||
|  MODULE_LICENSE("GPL"); | ||||
| -- 
 | ||||
| 2.7.4 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								sources
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sources
									
									
									
									
									
								
							| @ -1,3 +1,3 @@ | ||||
| SHA512 (linux-4.13.tar.xz) = a557c2f0303ae618910b7106ff63d9978afddf470f03cb72aa748213e099a0ecd5f3119aea6cbd7b61df30ca6ef3ec57044d524b7babbaabddf8b08b8bafa7d2 | ||||
| SHA512 (perf-man-4.13.tar.gz) = 9bcc2cd8e56ec583ed2d8e0b0c88e7a94035a1915e40b3177bb02d6c0f10ddd4df9b097b1f5af59efc624226b613e240ddba8ddc2156f3682f992d5455fc5c03 | ||||
| SHA512 (patch-4.13-git6.xz) = 58de784cb0c2d14acfd1f1711bb960cc0d1dd2607931bf7ed4561661f0f69e9fde29644a78944d215fc70a5c6471a56435f57c055d1f0686a992be18580cea59 | ||||
| SHA512 (patch-4.14-rc1.xz) = b74b27279197aa81bd5d906a7da83ecfecf23231b7889bd280b071920bb0094b4aef37ff86a9bbe47c13bd23ee80db81acfb2e49ce25d77b8b3ae3c8c203ae22 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user