All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Dmitry Antipov <daantipov@gmail.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Rob Herring <robh+dt@kernel.org>, Mark Brown <broonie@kernel.org>,
	Felipe Balbi <balbi@kernel.org>
Cc: kbuild-all@lists.01.org, linux-input@vger.kernel.org,
	devicetree@vger.kernel.org, linux-spi@vger.kernel.org,
	Dmitry Antipov <dmanti@microsoft.com>
Subject: Re: [PATCH v3 5/5] HID: add spi-hid, transport driver for HID over SPI bus
Date: Sat, 15 Jan 2022 14:10:08 +0800	[thread overview]
Message-ID: <202201151433.04afZ5aZ-lkp@intel.com> (raw)
In-Reply-To: <20220115023135.234667-6-dmanti@microsoft.com>

Hi Dmitry,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on hid/for-next]
[also build test WARNING on jikos-trivial/for-next v5.16 next-20220114]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dmitry-Antipov/Add-spi-hid-transport-for-HID-over-SPI-bus/20220115-103254
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-next
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20220115/202201151433.04afZ5aZ-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/3773341a27b69fe38edd03823be246aa38001e6a
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Dmitry-Antipov/Add-spi-hid-transport-for-HID-over-SPI-bus/20220115-103254
        git checkout 3773341a27b69fe38edd03823be246aa38001e6a
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/hid/spi-hid/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/hid/spi-hid/spi-hid-core.c:203:8: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     203 | static const char *const spi_hid_power_mode_string(u8 power_state)
         |        ^~~~~
--
   In file included from include/trace/define_trace.h:102,
                    from drivers/hid/spi-hid/spi-hid_trace.h:198,
                    from drivers/hid/spi-hid/trace.c:11:
   drivers/hid/spi-hid/./spi-hid_trace.h: In function 'trace_raw_output_spi_hid':
>> drivers/hid/spi-hid/./spi-hid_trace.h:144:19: warning: format '%d' expects a matching 'int' argument [-Wformat=]
     144 |         TP_printk("spi%d.%d: (%04x:%04x v%d) HID v%d.%d state i:%d p:%d len i:%d o:%d r:%d flags %c:%d",
         |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/trace/trace_events.h:399:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
     399 |         trace_event_printf(iter, print);                                \
         |                                  ^~~~~
   drivers/hid/spi-hid/./spi-hid_trace.h:144:9: note: in expansion of macro 'TP_printk'
     144 |         TP_printk("spi%d.%d: (%04x:%04x v%d) HID v%d.%d state i:%d p:%d len i:%d o:%d r:%d flags %c:%d",
         |         ^~~~~~~~~
   In file included from include/trace/trace_events.h:433,
                    from include/trace/define_trace.h:102,
                    from drivers/hid/spi-hid/spi-hid_trace.h:198,
                    from drivers/hid/spi-hid/trace.c:11:
   drivers/hid/spi-hid/./spi-hid_trace.h:144:102: note: format string is defined here
     144 |         TP_printk("spi%d.%d: (%04x:%04x v%d) HID v%d.%d state i:%d p:%d len i:%d o:%d r:%d flags %c:%d",
         |                                                                                                     ~^
         |                                                                                                      |
         |                                                                                                      int
--
>> drivers/hid/spi-hid/trace.c:10: warning: expecting prototype for trace.c(). Prototype was for CREATE_TRACE_POINTS() instead
--
>> drivers/hid/spi-hid/spi-hid-core.c:378: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
    * Handle the reset response from the FW by sending a request for the device


vim +203 drivers/hid/spi-hid/spi-hid-core.c

   202	
 > 203	static const char *const spi_hid_power_mode_string(u8 power_state)
   204	{
   205		switch (power_state) {
   206		case SPI_HID_POWER_MODE_ON:
   207			return "d0";
   208		case SPI_HID_POWER_MODE_SLEEP:
   209			return "d2";
   210		case SPI_HID_POWER_MODE_OFF:
   211			return "d3";
   212		case SPI_HID_POWER_MODE_WAKING_SLEEP:
   213			return "d3*";
   214		default:
   215			return "unknown";
   216		}
   217	}
   218	
   219	static void spi_hid_suspend(struct spi_hid *shid)
   220	{
   221		struct device *dev = &shid->spi->dev;
   222	
   223		if (shid->power_state == SPI_HID_POWER_MODE_OFF)
   224			return;
   225	
   226		disable_irq(shid->spi->irq);
   227		shid->ready = false;
   228		sysfs_notify(&dev->kobj, NULL, "ready");
   229	
   230		spi_hid_of_assert_reset(&shid->conf);
   231	
   232		shid->power_state = SPI_HID_POWER_MODE_OFF;
   233	}
   234	
   235	static void spi_hid_resume(struct spi_hid *shid)
   236	{
   237		if (shid->power_state == SPI_HID_POWER_MODE_ON)
   238			return;
   239	
   240		shid->power_state = SPI_HID_POWER_MODE_ON;
   241		enable_irq(shid->spi->irq);
   242		shid->input_transfer_pending = 0;
   243	
   244		spi_hid_of_deassert_reset(&shid->conf);
   245	}
   246	
   247	static struct hid_device *spi_hid_disconnect_hid(struct spi_hid *shid)
   248	{
   249		struct hid_device *hid = shid->hid;
   250	
   251		shid->hid = NULL;
   252	
   253		return hid;
   254	}
   255	
   256	static void spi_hid_stop_hid(struct spi_hid *shid)
   257	{
   258		struct hid_device *hid;
   259	
   260		hid = spi_hid_disconnect_hid(shid);
   261		if (hid) {
   262			cancel_work_sync(&shid->create_device_work);
   263			cancel_work_sync(&shid->refresh_device_work);
   264			hid_destroy_device(hid);
   265		}
   266	}
   267	
   268	static void spi_hid_error_handler(struct spi_hid *shid)
   269	{
   270		struct device *dev = &shid->spi->dev;
   271		int ret;
   272	
   273		if (shid->power_state == SPI_HID_POWER_MODE_OFF)
   274			return;
   275	
   276		if (shid->attempts++ >= SPI_HID_MAX_RESET_ATTEMPTS) {
   277			dev_err(dev, "unresponsive device, aborting.\n");
   278			spi_hid_stop_hid(shid);
   279			spi_hid_of_assert_reset(&shid->conf);
   280			ret = spi_hid_of_power_down(&shid->conf);
   281			if (ret) {
   282				dev_err(dev, "failed to disable regulator\n");
   283				shid->regulator_error_count++;
   284				shid->regulator_last_error = ret;
   285			}
   286			return;
   287		}
   288	
   289		trace_spi_hid_error_handler(shid);
   290	
   291		shid->ready = false;
   292		sysfs_notify(&dev->kobj, NULL, "ready");
   293	
   294		spi_hid_of_assert_reset(&shid->conf);
   295	
   296		shid->power_state = SPI_HID_POWER_MODE_OFF;
   297		shid->input_transfer_pending = 0;
   298		cancel_work_sync(&shid->reset_work);
   299	
   300		spi_hid_of_sleep_minimal_reset_delay(&shid->conf);
   301	
   302		shid->power_state = SPI_HID_POWER_MODE_ON;
   303	
   304		spi_hid_of_deassert_reset(&shid->conf);
   305	}
   306	
   307	static void spi_hid_error_work(struct work_struct *work)
   308	{
   309		struct spi_hid *shid = container_of(work, struct spi_hid, error_work);
   310	
   311		spi_hid_error_handler(shid);
   312	}
   313	
   314	static int spi_hid_send_output_report(struct spi_hid *shid,
   315			struct spi_hid_output_report *report)
   316	{
   317		struct spi_hid_output_buf *buf = &shid->output;
   318		struct device *dev = &shid->spi->dev;
   319		u16 report_length;
   320		u16 padded_length;
   321		u8 padding;
   322		int ret;
   323	
   324		if (report->content_length > shid->desc.max_output_length) {
   325			dev_err(dev, "Output report too big, content_length 0x%x\n",
   326							report->content_length);
   327			ret = -E2BIG;
   328			goto out;
   329		}
   330	
   331		spi_hid_populate_output_header(buf->header, &shid->conf, report);
   332	
   333		if (report->content_length)
   334			memcpy(&buf->content, report->content, report->content_length);
   335	
   336		report_length = sizeof(buf->header) + report->content_length;
   337		padded_length = round_up(report_length,	4);
   338		padding = padded_length - report_length;
   339		memset(&buf->content[report->content_length], 0, padding);
   340	
   341		ret = spi_hid_output(shid, buf, padded_length);
   342		if (ret) {
   343			dev_err(dev, "Failed output transfer\n");
   344			goto out;
   345		}
   346	
   347		return 0;
   348	
   349	out:
   350		return ret;
   351	}
   352	
   353	static int spi_hid_sync_request(struct spi_hid *shid,
   354			struct spi_hid_output_report *report)
   355	{
   356		struct device *dev = &shid->spi->dev;
   357		int ret = 0;
   358	
   359		ret = spi_hid_send_output_report(shid, report);
   360		if (ret) {
   361			dev_err(dev, "Failed to transfer output report\n");
   362			return ret;
   363		}
   364	
   365		mutex_unlock(&shid->lock);
   366		ret = wait_for_completion_interruptible_timeout(&shid->output_done,
   367				msecs_to_jiffies(1000));
   368		mutex_lock(&shid->lock);
   369		if (ret == 0) {
   370			dev_err(dev, "Response timed out\n");
   371			return -ETIMEDOUT;
   372		}
   373	
   374		return 0;
   375	}
   376	
   377	/**
 > 378	 * Handle the reset response from the FW by sending a request for the device
   379	 * descriptor.
   380	 */
   381	static void spi_hid_reset_work(struct work_struct *work)
   382	{
   383		struct spi_hid *shid =
   384			container_of(work, struct spi_hid, reset_work);
   385		struct device *dev = &shid->spi->dev;
   386		struct spi_hid_output_report report = {
   387			.report_type = SPI_HID_OUTPUT_REPORT_TYPE_DEVICE_DESC_REQUEST,
   388			.content_length = 0x0,
   389			.content_id = SPI_HID_OUTPUT_REPORT_CONTENT_ID_DESC_REQUEST,
   390			.content = NULL,
   391		};
   392		int ret;
   393	
   394		trace_spi_hid_reset_work(shid);
   395	
   396		if (shid->ready) {
   397			dev_err(dev, "Spontaneous FW reset!");
   398			shid->ready = false;
   399			sysfs_notify(&dev->kobj, NULL, "ready");
   400			shid->dir_count++;
   401		}
   402	
   403		if (shid->power_state == SPI_HID_POWER_MODE_OFF)
   404			return;
   405	
   406		if (flush_work(&shid->create_device_work))
   407			dev_err(dev, "Reset handler waited for create_device_work");
   408	
   409		if (flush_work(&shid->refresh_device_work))
   410			dev_err(dev, "Reset handler waited for refresh_device_work");
   411	
   412		mutex_lock(&shid->lock);
   413		ret = spi_hid_sync_request(shid, &report);
   414		mutex_unlock(&shid->lock);
   415		if (ret) {
   416			dev_WARN_ONCE(dev, true,
   417					"Failed to send device descriptor request\n");
   418			spi_hid_error_handler(shid);
   419		}
   420	}
   421	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v3 5/5] HID: add spi-hid, transport driver for HID over SPI bus
Date: Sat, 15 Jan 2022 14:10:08 +0800	[thread overview]
Message-ID: <202201151433.04afZ5aZ-lkp@intel.com> (raw)
In-Reply-To: <20220115023135.234667-6-dmanti@microsoft.com>

[-- Attachment #1: Type: text/plain, Size: 11178 bytes --]

Hi Dmitry,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on hid/for-next]
[also build test WARNING on jikos-trivial/for-next v5.16 next-20220114]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dmitry-Antipov/Add-spi-hid-transport-for-HID-over-SPI-bus/20220115-103254
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-next
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20220115/202201151433.04afZ5aZ-lkp(a)intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/3773341a27b69fe38edd03823be246aa38001e6a
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Dmitry-Antipov/Add-spi-hid-transport-for-HID-over-SPI-bus/20220115-103254
        git checkout 3773341a27b69fe38edd03823be246aa38001e6a
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/hid/spi-hid/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/hid/spi-hid/spi-hid-core.c:203:8: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     203 | static const char *const spi_hid_power_mode_string(u8 power_state)
         |        ^~~~~
--
   In file included from include/trace/define_trace.h:102,
                    from drivers/hid/spi-hid/spi-hid_trace.h:198,
                    from drivers/hid/spi-hid/trace.c:11:
   drivers/hid/spi-hid/./spi-hid_trace.h: In function 'trace_raw_output_spi_hid':
>> drivers/hid/spi-hid/./spi-hid_trace.h:144:19: warning: format '%d' expects a matching 'int' argument [-Wformat=]
     144 |         TP_printk("spi%d.%d: (%04x:%04x v%d) HID v%d.%d state i:%d p:%d len i:%d o:%d r:%d flags %c:%d",
         |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/trace/trace_events.h:399:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
     399 |         trace_event_printf(iter, print);                                \
         |                                  ^~~~~
   drivers/hid/spi-hid/./spi-hid_trace.h:144:9: note: in expansion of macro 'TP_printk'
     144 |         TP_printk("spi%d.%d: (%04x:%04x v%d) HID v%d.%d state i:%d p:%d len i:%d o:%d r:%d flags %c:%d",
         |         ^~~~~~~~~
   In file included from include/trace/trace_events.h:433,
                    from include/trace/define_trace.h:102,
                    from drivers/hid/spi-hid/spi-hid_trace.h:198,
                    from drivers/hid/spi-hid/trace.c:11:
   drivers/hid/spi-hid/./spi-hid_trace.h:144:102: note: format string is defined here
     144 |         TP_printk("spi%d.%d: (%04x:%04x v%d) HID v%d.%d state i:%d p:%d len i:%d o:%d r:%d flags %c:%d",
         |                                                                                                     ~^
         |                                                                                                      |
         |                                                                                                      int
--
>> drivers/hid/spi-hid/trace.c:10: warning: expecting prototype for trace.c(). Prototype was for CREATE_TRACE_POINTS() instead
--
>> drivers/hid/spi-hid/spi-hid-core.c:378: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
    * Handle the reset response from the FW by sending a request for the device


vim +203 drivers/hid/spi-hid/spi-hid-core.c

   202	
 > 203	static const char *const spi_hid_power_mode_string(u8 power_state)
   204	{
   205		switch (power_state) {
   206		case SPI_HID_POWER_MODE_ON:
   207			return "d0";
   208		case SPI_HID_POWER_MODE_SLEEP:
   209			return "d2";
   210		case SPI_HID_POWER_MODE_OFF:
   211			return "d3";
   212		case SPI_HID_POWER_MODE_WAKING_SLEEP:
   213			return "d3*";
   214		default:
   215			return "unknown";
   216		}
   217	}
   218	
   219	static void spi_hid_suspend(struct spi_hid *shid)
   220	{
   221		struct device *dev = &shid->spi->dev;
   222	
   223		if (shid->power_state == SPI_HID_POWER_MODE_OFF)
   224			return;
   225	
   226		disable_irq(shid->spi->irq);
   227		shid->ready = false;
   228		sysfs_notify(&dev->kobj, NULL, "ready");
   229	
   230		spi_hid_of_assert_reset(&shid->conf);
   231	
   232		shid->power_state = SPI_HID_POWER_MODE_OFF;
   233	}
   234	
   235	static void spi_hid_resume(struct spi_hid *shid)
   236	{
   237		if (shid->power_state == SPI_HID_POWER_MODE_ON)
   238			return;
   239	
   240		shid->power_state = SPI_HID_POWER_MODE_ON;
   241		enable_irq(shid->spi->irq);
   242		shid->input_transfer_pending = 0;
   243	
   244		spi_hid_of_deassert_reset(&shid->conf);
   245	}
   246	
   247	static struct hid_device *spi_hid_disconnect_hid(struct spi_hid *shid)
   248	{
   249		struct hid_device *hid = shid->hid;
   250	
   251		shid->hid = NULL;
   252	
   253		return hid;
   254	}
   255	
   256	static void spi_hid_stop_hid(struct spi_hid *shid)
   257	{
   258		struct hid_device *hid;
   259	
   260		hid = spi_hid_disconnect_hid(shid);
   261		if (hid) {
   262			cancel_work_sync(&shid->create_device_work);
   263			cancel_work_sync(&shid->refresh_device_work);
   264			hid_destroy_device(hid);
   265		}
   266	}
   267	
   268	static void spi_hid_error_handler(struct spi_hid *shid)
   269	{
   270		struct device *dev = &shid->spi->dev;
   271		int ret;
   272	
   273		if (shid->power_state == SPI_HID_POWER_MODE_OFF)
   274			return;
   275	
   276		if (shid->attempts++ >= SPI_HID_MAX_RESET_ATTEMPTS) {
   277			dev_err(dev, "unresponsive device, aborting.\n");
   278			spi_hid_stop_hid(shid);
   279			spi_hid_of_assert_reset(&shid->conf);
   280			ret = spi_hid_of_power_down(&shid->conf);
   281			if (ret) {
   282				dev_err(dev, "failed to disable regulator\n");
   283				shid->regulator_error_count++;
   284				shid->regulator_last_error = ret;
   285			}
   286			return;
   287		}
   288	
   289		trace_spi_hid_error_handler(shid);
   290	
   291		shid->ready = false;
   292		sysfs_notify(&dev->kobj, NULL, "ready");
   293	
   294		spi_hid_of_assert_reset(&shid->conf);
   295	
   296		shid->power_state = SPI_HID_POWER_MODE_OFF;
   297		shid->input_transfer_pending = 0;
   298		cancel_work_sync(&shid->reset_work);
   299	
   300		spi_hid_of_sleep_minimal_reset_delay(&shid->conf);
   301	
   302		shid->power_state = SPI_HID_POWER_MODE_ON;
   303	
   304		spi_hid_of_deassert_reset(&shid->conf);
   305	}
   306	
   307	static void spi_hid_error_work(struct work_struct *work)
   308	{
   309		struct spi_hid *shid = container_of(work, struct spi_hid, error_work);
   310	
   311		spi_hid_error_handler(shid);
   312	}
   313	
   314	static int spi_hid_send_output_report(struct spi_hid *shid,
   315			struct spi_hid_output_report *report)
   316	{
   317		struct spi_hid_output_buf *buf = &shid->output;
   318		struct device *dev = &shid->spi->dev;
   319		u16 report_length;
   320		u16 padded_length;
   321		u8 padding;
   322		int ret;
   323	
   324		if (report->content_length > shid->desc.max_output_length) {
   325			dev_err(dev, "Output report too big, content_length 0x%x\n",
   326							report->content_length);
   327			ret = -E2BIG;
   328			goto out;
   329		}
   330	
   331		spi_hid_populate_output_header(buf->header, &shid->conf, report);
   332	
   333		if (report->content_length)
   334			memcpy(&buf->content, report->content, report->content_length);
   335	
   336		report_length = sizeof(buf->header) + report->content_length;
   337		padded_length = round_up(report_length,	4);
   338		padding = padded_length - report_length;
   339		memset(&buf->content[report->content_length], 0, padding);
   340	
   341		ret = spi_hid_output(shid, buf, padded_length);
   342		if (ret) {
   343			dev_err(dev, "Failed output transfer\n");
   344			goto out;
   345		}
   346	
   347		return 0;
   348	
   349	out:
   350		return ret;
   351	}
   352	
   353	static int spi_hid_sync_request(struct spi_hid *shid,
   354			struct spi_hid_output_report *report)
   355	{
   356		struct device *dev = &shid->spi->dev;
   357		int ret = 0;
   358	
   359		ret = spi_hid_send_output_report(shid, report);
   360		if (ret) {
   361			dev_err(dev, "Failed to transfer output report\n");
   362			return ret;
   363		}
   364	
   365		mutex_unlock(&shid->lock);
   366		ret = wait_for_completion_interruptible_timeout(&shid->output_done,
   367				msecs_to_jiffies(1000));
   368		mutex_lock(&shid->lock);
   369		if (ret == 0) {
   370			dev_err(dev, "Response timed out\n");
   371			return -ETIMEDOUT;
   372		}
   373	
   374		return 0;
   375	}
   376	
   377	/**
 > 378	 * Handle the reset response from the FW by sending a request for the device
   379	 * descriptor.
   380	 */
   381	static void spi_hid_reset_work(struct work_struct *work)
   382	{
   383		struct spi_hid *shid =
   384			container_of(work, struct spi_hid, reset_work);
   385		struct device *dev = &shid->spi->dev;
   386		struct spi_hid_output_report report = {
   387			.report_type = SPI_HID_OUTPUT_REPORT_TYPE_DEVICE_DESC_REQUEST,
   388			.content_length = 0x0,
   389			.content_id = SPI_HID_OUTPUT_REPORT_CONTENT_ID_DESC_REQUEST,
   390			.content = NULL,
   391		};
   392		int ret;
   393	
   394		trace_spi_hid_reset_work(shid);
   395	
   396		if (shid->ready) {
   397			dev_err(dev, "Spontaneous FW reset!");
   398			shid->ready = false;
   399			sysfs_notify(&dev->kobj, NULL, "ready");
   400			shid->dir_count++;
   401		}
   402	
   403		if (shid->power_state == SPI_HID_POWER_MODE_OFF)
   404			return;
   405	
   406		if (flush_work(&shid->create_device_work))
   407			dev_err(dev, "Reset handler waited for create_device_work");
   408	
   409		if (flush_work(&shid->refresh_device_work))
   410			dev_err(dev, "Reset handler waited for refresh_device_work");
   411	
   412		mutex_lock(&shid->lock);
   413		ret = spi_hid_sync_request(shid, &report);
   414		mutex_unlock(&shid->lock);
   415		if (ret) {
   416			dev_WARN_ONCE(dev, true,
   417					"Failed to send device descriptor request\n");
   418			spi_hid_error_handler(shid);
   419		}
   420	}
   421	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

  parent reply	other threads:[~2022-01-15  6:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-15  2:31 [PATCH v3 0/5] Add spi-hid, transport for HID over SPI bus Dmitry Antipov
2022-01-15  2:31 ` [PATCH v3 1/5] HID: Add BUS_SPI support when printing out device info in hid_connect() Dmitry Antipov
2022-01-15  2:31 ` [PATCH v3 2/5] HID: define HID_SPI_DEVICE macro in hid.h Dmitry Antipov
2022-01-15  2:31 ` [PATCH v3 3/5] Documentation: DT bindings for HID over SPI Dmitry Antipov
2022-01-20 20:06   ` Rob Herring
2022-02-25  1:34     ` [EXTERNAL] " Dmitry Antipov
2022-01-24 10:32   ` Felipe Balbi
2022-01-15  2:31 ` [PATCH v3 4/5] Documentation: Correction in HID output_report callback description Dmitry Antipov
2022-01-15  2:31 ` [PATCH v3 5/5] HID: add spi-hid, transport driver for HID over SPI bus Dmitry Antipov
2022-01-15  4:32   ` Dmitry Torokhov
2022-02-25  1:20     ` [EXTERNAL] " Dmitry Antipov
2022-01-15  6:10   ` kernel test robot [this message]
2022-01-15  6:10     ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202201151433.04afZ5aZ-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=balbi@kernel.org \
    --cc=benjamin.tissoires@redhat.com \
    --cc=broonie@kernel.org \
    --cc=daantipov@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmanti@microsoft.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jikos@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.