diff mbox series

[v1,1/1] i2c: parport: Switch to use module_parport_driver()

Message ID 20210616140441.39479-1-andriy.shevchenko@linux.intel.com
State Superseded
Headers show
Series [v1,1/1] i2c: parport: Switch to use module_parport_driver() | expand

Commit Message

Andy Shevchenko June 16, 2021, 2:04 p.m. UTC
Switch to use module_parport_driver() to reduce boilerplate code.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/i2c/busses/i2c-parport.c | 36 ++++++++++----------------------
 1 file changed, 11 insertions(+), 25 deletions(-)

Comments

kernel test robot June 21, 2021, 1:19 p.m. UTC | #1
Hi Andy,

I love your patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v5.13-rc7 next-20210618]
[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/Andy-Shevchenko/i2c-parport-Switch-to-use-module_parport_driver/20210617-023152
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
config: x86_64-randconfig-a016-20210621 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project e1adf90826a57b674eee79b071fb46c1f5683cd0)
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
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/460eecb7fb1072dc8d5c7e5b3ecac6867957f2fa
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Andy-Shevchenko/i2c-parport-Switch-to-use-module_parport_driver/20210617-023152
        git checkout 460eecb7fb1072dc8d5c7e5b3ecac6867957f2fa
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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

All errors (new ones prefixed by >>):

>> drivers/i2c/busses/i2c-parport.c:272:3: error: void function 'i2c_parport_attach' should not return a value [-Wreturn-type]

                   return -ENODEV;
                   ^      ~~~~~~~
   drivers/i2c/busses/i2c-parport.c:277:3: error: void function 'i2c_parport_attach' should not return a value [-Wreturn-type]
                   return -ENODEV;
                   ^      ~~~~~~~
   2 errors generated.


vim +/i2c_parport_attach +272 drivers/i2c/busses/i2c-parport.c

   263	
   264	static void i2c_parport_attach(struct parport *port)
   265	{
   266		struct i2c_par *adapter;
   267		int i;
   268		struct pardev_cb i2c_parport_cb;
   269	
   270		if (type < 0) {
   271			pr_warn("adapter type unspecified\n");
 > 272			return -ENODEV;

   273		}
   274	
   275		if (type >= ARRAY_SIZE(adapter_parm)) {
   276			pr_warn("invalid type (%d)\n", type);
   277			return -ENODEV;
   278		}
   279	
   280		for (i = 0; i < MAX_DEVICE; i++) {
   281			if (parport[i] == -1)
   282				continue;
   283			if (port->number == parport[i])
   284				break;
   285		}
   286		if (i == MAX_DEVICE) {
   287			pr_debug("Not using parport%d.\n", port->number);
   288			return;
   289		}
   290	
   291		adapter = kzalloc(sizeof(struct i2c_par), GFP_KERNEL);
   292		if (!adapter)
   293			return;
   294		memset(&i2c_parport_cb, 0, sizeof(i2c_parport_cb));
   295		i2c_parport_cb.flags = PARPORT_FLAG_EXCL;
   296		i2c_parport_cb.irq_func = i2c_parport_irq;
   297		i2c_parport_cb.private = adapter;
   298	
   299		pr_debug("attaching to %s\n", port->name);
   300		parport_disable_irq(port);
   301		adapter->pdev = parport_register_dev_model(port, "i2c-parport",
   302							   &i2c_parport_cb, i);
   303		if (!adapter->pdev) {
   304			pr_err("Unable to register with parport\n");
   305			goto err_free;
   306		}
   307	
   308		/* Fill the rest of the structure */
   309		adapter->adapter.owner = THIS_MODULE;
   310		adapter->adapter.class = I2C_CLASS_HWMON;
   311		strlcpy(adapter->adapter.name, "Parallel port adapter",
   312			sizeof(adapter->adapter.name));
   313		adapter->algo_data = parport_algo_data;
   314		/* Slow down if we can't sense SCL */
   315		if (!adapter_parm[type].getscl.val) {
   316			adapter->algo_data.getscl = NULL;
   317			adapter->algo_data.udelay = 50; /* ~10 kbps */
   318		}
   319		adapter->algo_data.data = port;
   320		adapter->adapter.algo_data = &adapter->algo_data;
   321		adapter->adapter.dev.parent = port->physport->dev;
   322	
   323		if (parport_claim_or_block(adapter->pdev) < 0) {
   324			dev_err(&adapter->pdev->dev,
   325				"Could not claim parallel port\n");
   326			goto err_unregister;
   327		}
   328	
   329		/* Reset hardware to a sane state (SCL and SDA high) */
   330		parport_setsda(port, 1);
   331		parport_setscl(port, 1);
   332		/* Other init if needed (power on...) */
   333		if (adapter_parm[type].init.val) {
   334			line_set(port, 1, &adapter_parm[type].init);
   335			/* Give powered devices some time to settle */
   336			msleep(100);
   337		}
   338	
   339		if (i2c_bit_add_bus(&adapter->adapter) < 0) {
   340			dev_err(&adapter->pdev->dev, "Unable to register with I2C\n");
   341			goto err_unregister;
   342		}
   343	
   344		/* Setup SMBus alert if supported */
   345		if (adapter_parm[type].smbus_alert) {
   346			struct i2c_client *ara;
   347	
   348			ara = i2c_new_smbus_alert_device(&adapter->adapter,
   349							 &adapter->alert_data);
   350			if (!IS_ERR(ara)) {
   351				adapter->ara = ara;
   352				parport_enable_irq(port);
   353			} else {
   354				dev_warn(&adapter->pdev->dev,
   355					 "Failed to register ARA client\n");
   356			}
   357		}
   358	
   359		/* Add the new adapter to the list */
   360		mutex_lock(&adapter_list_lock);
   361		list_add_tail(&adapter->node, &adapter_list);
   362		mutex_unlock(&adapter_list_lock);
   363		return;
   364	
   365	 err_unregister:
   366		parport_release(adapter->pdev);
   367		parport_unregister_device(adapter->pdev);
   368	 err_free:
   369		kfree(adapter);
   370	}
   371	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Jean Delvare June 24, 2021, 5:22 p.m. UTC | #2
Hi Andy,

On Wed, 16 Jun 2021 17:04:41 +0300, Andy Shevchenko wrote:
> Switch to use module_parport_driver() to reduce boilerplate code.

> 

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> ---

>  drivers/i2c/busses/i2c-parport.c | 36 ++++++++++----------------------

>  1 file changed, 11 insertions(+), 25 deletions(-)

> 

> diff --git a/drivers/i2c/busses/i2c-parport.c b/drivers/i2c/busses/i2c-parport.c

> index a535889acca6..ccbbc9306e88 100644

> --- a/drivers/i2c/busses/i2c-parport.c

> +++ b/drivers/i2c/busses/i2c-parport.c

> @@ -267,6 +267,16 @@ static void i2c_parport_attach(struct parport *port)

                              ^^^^

>  	int i;

>  	struct pardev_cb i2c_parport_cb;

>  

> +	if (type < 0) {

> +		pr_warn("adapter type unspecified\n");

> +		return -ENODEV;

                       ^^^^^^^

> +	}


Does not build.

-- 
Jean Delvare
SUSE L3 Support
diff mbox series

Patch

diff --git a/drivers/i2c/busses/i2c-parport.c b/drivers/i2c/busses/i2c-parport.c
index a535889acca6..ccbbc9306e88 100644
--- a/drivers/i2c/busses/i2c-parport.c
+++ b/drivers/i2c/busses/i2c-parport.c
@@ -267,6 +267,16 @@  static void i2c_parport_attach(struct parport *port)
 	int i;
 	struct pardev_cb i2c_parport_cb;
 
+	if (type < 0) {
+		pr_warn("adapter type unspecified\n");
+		return -ENODEV;
+	}
+
+	if (type >= ARRAY_SIZE(adapter_parm)) {
+		pr_warn("invalid type (%d)\n", type);
+		return -ENODEV;
+	}
+
 	for (i = 0; i < MAX_DEVICE; i++) {
 		if (parport[i] == -1)
 			continue;
@@ -392,32 +402,8 @@  static struct parport_driver i2c_parport_driver = {
 	.detach = i2c_parport_detach,
 	.devmodel = true,
 };
-
-/* ----- Module loading, unloading and information ------------------------ */
-
-static int __init i2c_parport_init(void)
-{
-	if (type < 0) {
-		pr_warn("adapter type unspecified\n");
-		return -ENODEV;
-	}
-
-	if (type >= ARRAY_SIZE(adapter_parm)) {
-		pr_warn("invalid type (%d)\n", type);
-		return -ENODEV;
-	}
-
-	return parport_register_driver(&i2c_parport_driver);
-}
-
-static void __exit i2c_parport_exit(void)
-{
-	parport_unregister_driver(&i2c_parport_driver);
-}
+module_parport_driver(i2c_parport_driver);
 
 MODULE_AUTHOR("Jean Delvare <jdelvare@suse.de>");
 MODULE_DESCRIPTION("I2C bus over parallel port");
 MODULE_LICENSE("GPL");
-
-module_init(i2c_parport_init);
-module_exit(i2c_parport_exit);