diff mbox

[v2] Input: drivers/joystick: use parallel port device model

Message ID 20150808103515.GC1301@sudip-pc (mailing list archive)
State New, archived
Headers show

Commit Message

Sudip Mukherjee Aug. 8, 2015, 10:35 a.m. UTC
On Tue, Aug 04, 2015 at 07:55:51PM +0530, Sudip Mukherjee wrote:
> Modify db9 driver to use the new Parallel Port device model.
> 
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> ---
> 
> v2: an extra check was removed. db9_base could not be removed. Already
> mailed you the reasons, reference is at:
> https://lkml.org/lkml/2015/8/3/403

Hi Dmitry,
I was telling you on the other thread that to remove db9_base we will
need to modify the parport code and then it has to be tested by everyone
again and that will also change the old behaviour of parport. The v2 to
which I am replying now is still having that db9_base.

Please see the following patch, this is the minimum change required to
update db9 driver. Personally I donot like this approach as in this
method if a parallel port is hotplugged after this driver is loaded then
it will not work. Please let me know your views on the posted v2 and
also on the following proposal.

regards
sudip



--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Sudip Mukherjee Aug. 13, 2015, 1:46 p.m. UTC | #1
On Sat, Aug 08, 2015 at 04:05:15PM +0530, Sudip Mukherjee wrote:
> On Tue, Aug 04, 2015 at 07:55:51PM +0530, Sudip Mukherjee wrote:
> > Modify db9 driver to use the new Parallel Port device model.
> > 
> > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> > ---
> > 
> > v2: an extra check was removed. db9_base could not be removed. Already
> > mailed you the reasons, reference is at:
> > https://lkml.org/lkml/2015/8/3/403
> 
> Hi Dmitry,
> I was telling you on the other thread that to remove db9_base we will
> need to modify the parport code and then it has to be tested by everyone
> again and that will also change the old behaviour of parport. The v2 to
> which I am replying now is still having that db9_base.
> 
> Please see the following patch, this is the minimum change required to
> update db9 driver. Personally I donot like this approach as in this
> method if a parallel port is hotplugged after this driver is loaded then
> it will not work. Please let me know your views on the posted v2 and
> also on the following proposal.

Hi Dmitry,
Did you have a chance to look at this?
Pali Rohár has the hardware and he is ready to test it.

regards
sudip

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov Aug. 13, 2015, 4:26 p.m. UTC | #2
On Thu, Aug 13, 2015 at 07:16:14PM +0530, Sudip Mukherjee wrote:
> On Sat, Aug 08, 2015 at 04:05:15PM +0530, Sudip Mukherjee wrote:
> > On Tue, Aug 04, 2015 at 07:55:51PM +0530, Sudip Mukherjee wrote:
> > > Modify db9 driver to use the new Parallel Port device model.
> > > 
> > > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> > > ---
> > > 
> > > v2: an extra check was removed. db9_base could not be removed. Already
> > > mailed you the reasons, reference is at:
> > > https://lkml.org/lkml/2015/8/3/403
> > 
> > Hi Dmitry,
> > I was telling you on the other thread that to remove db9_base we will
> > need to modify the parport code and then it has to be tested by everyone
> > again and that will also change the old behaviour of parport. The v2 to
> > which I am replying now is still having that db9_base.
> > 
> > Please see the following patch, this is the minimum change required to
> > update db9 driver. Personally I donot like this approach as in this
> > method if a parallel port is hotplugged after this driver is loaded then
> > it will not work. Please let me know your views on the posted v2 and
> > also on the following proposal.
> 
> Hi Dmitry,
> Did you have a chance to look at this?

Right, so I agree that we should allow for hotplug and so the v2 is in
that sense is better than v3.

I still would prefer for the core to keep track of relationship between
devices and drivers, but if you would prefer to postpone implementing it
that woudl be fine.

> Pali Rohár has the hardware and he is ready to test it.

Pali, could you give the v2 version of the patch a spin
(https://patchwork.kernel.org/patch/6940321/)?

Thanks.
Sudip Mukherjee Aug. 14, 2015, 6:55 a.m. UTC | #3
On Thu, Aug 13, 2015 at 09:26:02AM -0700, Dmitry Torokhov wrote:
> On Thu, Aug 13, 2015 at 07:16:14PM +0530, Sudip Mukherjee wrote:
> > On Sat, Aug 08, 2015 at 04:05:15PM +0530, Sudip Mukherjee wrote:
> > > On Tue, Aug 04, 2015 at 07:55:51PM +0530, Sudip Mukherjee wrote:
> > > > Modify db9 driver to use the new Parallel Port device model.
> > > > 
> > > > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> > > > ---
> > > > 
> > > > v2: an extra check was removed. db9_base could not be removed. Already
> > > > mailed you the reasons, reference is at:
> > > > https://lkml.org/lkml/2015/8/3/403
> > > 
> > > Hi Dmitry,
> > > I was telling you on the other thread that to remove db9_base we will
> > > need to modify the parport code and then it has to be tested by everyone
> > > again and that will also change the old behaviour of parport. The v2 to
> > > which I am replying now is still having that db9_base.
> > > 
> > > Please see the following patch, this is the minimum change required to
> > > update db9 driver. Personally I donot like this approach as in this
> > > method if a parallel port is hotplugged after this driver is loaded then
> > > it will not work. Please let me know your views on the posted v2 and
> > > also on the following proposal.
> > 
> > Hi Dmitry,
> > Did you have a chance to look at this?
> 
> Right, so I agree that we should allow for hotplug and so the v2 is in
> that sense is better than v3.
> 
> I still would prefer for the core to keep track of relationship between
> devices and drivers, but if you would prefer to postpone implementing it
> that woudl be fine.
Thanks. Right now the code is already a mixture of the new code and the
old code and its almost a mess. After all drivers are converted and the
old code removed then the parport code will become much simpler than
what it is now. And it will be easy to make those enhancements at that
time.
> 
> > Pali Rohár has the hardware and he is ready to test it.
> 
> Pali, could you give the v2 version of the patch a spin
> (https://patchwork.kernel.org/patch/6940321/)?
Adding Pali to the cc list.

Hi Pali,
Are you still away from your desktop with the joystick? or can it be
tested?

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pali Rohár Aug. 14, 2015, 7:05 a.m. UTC | #4
On Friday 14 August 2015 12:25:42 Sudip Mukherjee wrote:
> On Thu, Aug 13, 2015 at 09:26:02AM -0700, Dmitry Torokhov wrote:
> > On Thu, Aug 13, 2015 at 07:16:14PM +0530, Sudip Mukherjee wrote:
> > > Pali Rohár has the hardware and he is ready to test it.
> > 
> > Pali, could you give the v2 version of the patch a spin
> > (https://patchwork.kernel.org/patch/6940321/)?
> Adding Pali to the cc list.
> 
> Hi Pali,
> Are you still away from your desktop with the joystick? or can it be
> tested?
> 
> regards
> sudip

Yes, I'm still away from desktop with joystick... First I need to know
against which kernel version can be that patch tested? I remember that
v1 applied correctly against ubuntu's default 3.13 (which is installed
on that desktop) but driver did not compiled.
Sudip Mukherjee Aug. 17, 2015, 7:29 a.m. UTC | #5
On Fri, Aug 14, 2015 at 09:05:55AM +0200, Pali Rohár wrote:
> On Friday 14 August 2015 12:25:42 Sudip Mukherjee wrote:
> > On Thu, Aug 13, 2015 at 09:26:02AM -0700, Dmitry Torokhov wrote:
> > > On Thu, Aug 13, 2015 at 07:16:14PM +0530, Sudip Mukherjee wrote:
> > > > Pali Rohár has the hardware and he is ready to test it.
> > > 
> > > Pali, could you give the v2 version of the patch a spin
> > > (https://patchwork.kernel.org/patch/6940321/)?
> > Adding Pali to the cc list.
> > 
> > Hi Pali,
> > Are you still away from your desktop with the joystick? or can it be
> > tested?
> > 
> > regards
> > sudip
> 
> Yes, I'm still away from desktop with joystick... First I need to know
> against which kernel version can be that patch tested? I remember that
> v1 applied correctly against ubuntu's default 3.13 (which is installed
> on that desktop) but driver did not compiled.

Sorry for the delay in replying. The change in parallel port code was
merged in 4.2, so you can test it againt 4.2-rc*.

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sudip Mukherjee Aug. 31, 2015, 1:44 p.m. UTC | #6
On Mon, Aug 17, 2015 at 12:59:34PM +0530, Sudip Mukherjee wrote:
> On Fri, Aug 14, 2015 at 09:05:55AM +0200, Pali Rohár wrote:
> > On Friday 14 August 2015 12:25:42 Sudip Mukherjee wrote:
> > > On Thu, Aug 13, 2015 at 09:26:02AM -0700, Dmitry Torokhov wrote:
> > > > On Thu, Aug 13, 2015 at 07:16:14PM +0530, Sudip Mukherjee wrote:
> > > > > Pali Rohár has the hardware and he is ready to test it.
> > > > 
> > > > Pali, could you give the v2 version of the patch a spin
> > > > (https://patchwork.kernel.org/patch/6940321/)?
> > > Adding Pali to the cc list.
> > > 
> > > Hi Pali,
> > > Are you still away from your desktop with the joystick? or can it be
> > > tested?
> > > 
> > > regards
> > > sudip
> > 
> > Yes, I'm still away from desktop with joystick... First I need to know
> > against which kernel version can be that patch tested? I remember that
> > v1 applied correctly against ubuntu's default 3.13 (which is installed
> > on that desktop) but driver did not compiled.
> 
> Sorry for the delay in replying. The change in parallel port code was
> merged in 4.2, so you can test it againt 4.2-rc*.
Hi Pali,
Now that 4.2 is released you can test on it. And do you also have any
option to test the other joysticks using parallel port? Because, after
you test this patch I will be sending the similar patches for other
joysticks and parkbd.

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pali Rohár Aug. 31, 2015, 1:55 p.m. UTC | #7
On Monday 31 August 2015 19:14:19 Sudip Mukherjee wrote:
> On Mon, Aug 17, 2015 at 12:59:34PM +0530, Sudip Mukherjee wrote:
> > On Fri, Aug 14, 2015 at 09:05:55AM +0200, Pali Rohár wrote:
> > > On Friday 14 August 2015 12:25:42 Sudip Mukherjee wrote:
> > > > On Thu, Aug 13, 2015 at 09:26:02AM -0700, Dmitry Torokhov wrote:
> > > > > On Thu, Aug 13, 2015 at 07:16:14PM +0530, Sudip Mukherjee wrote:
> > > > > > Pali Rohár has the hardware and he is ready to test it.
> > > > > 
> > > > > Pali, could you give the v2 version of the patch a spin
> > > > > (https://patchwork.kernel.org/patch/6940321/)?
> > > > Adding Pali to the cc list.
> > > > 
> > > > Hi Pali,
> > > > Are you still away from your desktop with the joystick? or can it be
> > > > tested?
> > > > 
> > > > regards
> > > > sudip
> > > 
> > > Yes, I'm still away from desktop with joystick... First I need to know
> > > against which kernel version can be that patch tested? I remember that
> > > v1 applied correctly against ubuntu's default 3.13 (which is installed
> > > on that desktop) but driver did not compiled.
> > 
> > Sorry for the delay in replying. The change in parallel port code was
> > merged in 4.2, so you can test it againt 4.2-rc*.
> Hi Pali,
> Now that 4.2 is released you can test on it. And do you also have any
> option to test the other joysticks using parallel port? Because, after
> you test this patch I will be sending the similar patches for other
> joysticks and parkbd.
> 
> regards
> sudip

Hi! First I need to install new 4.2 kernel for testing on that machine.
It would not be easy... so you need to wait. I do not have other
joysticks so I can test only that one which uses db9.ko driver.
Sudip Mukherjee Aug. 31, 2015, 2:45 p.m. UTC | #8
On Mon, Aug 31, 2015 at 03:55:58PM +0200, Pali Rohár wrote:
> > > Sorry for the delay in replying. The change in parallel port code was
> > > merged in 4.2, so you can test it againt 4.2-rc*.
> > Hi Pali,
> > Now that 4.2 is released you can test on it. And do you also have any
> > option to test the other joysticks using parallel port? Because, after
> > you test this patch I will be sending the similar patches for other
> > joysticks and parkbd.
> > 
> > regards
> > sudip
> 
> Hi! First I need to install new 4.2 kernel for testing on that machine.
> It would not be easy...
Will it be easy if I backport the parallel port patch to 3.13? maximum
chance that the parallelport patch will apply on 3.13 but I need to test
first to confirm.

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pali Rohár Sept. 28, 2015, 4:40 p.m. UTC | #9
On Friday 14 August 2015 08:55:42 Sudip Mukherjee wrote:
> > > Pali Rohár has the hardware and he is ready to test it.
> > 
> > Pali, could you give the v2 version of the patch a spin
> > (https://patchwork.kernel.org/patch/6940321/)?
> 
> Adding Pali to the cc list.
> 
> Hi Pali,
> Are you still away from your desktop with the joystick? or can it be
> tested?
> 
> regards
> sudip

Hi all!

I'm back with testing on desktop.

Now I applied above patch on top of 4.2 kernel and patched db9.ko module 
works fine with my joystick. xserver-xorg-input-joystick still recognize 
it and works fine as pointer device.

If you are curious I have connected this model to parallel port:
https://www.c64-wiki.com/index.php/Quickshot#Quickshot_II_1983

It is identified as "Multisystem joystick", loaded with modprobe config:
options db9 dev=0,1

So now you can add my:

Tested-By: Pali Rohár <pali.rohar@gmail.com>
Dmitry Torokhov Sept. 28, 2015, 11:23 p.m. UTC | #10
On Mon, Sep 28, 2015 at 06:40:51PM +0200, Pali Rohár wrote:
> On Friday 14 August 2015 08:55:42 Sudip Mukherjee wrote:
> > > > Pali Rohár has the hardware and he is ready to test it.
> > > 
> > > Pali, could you give the v2 version of the patch a spin
> > > (https://patchwork.kernel.org/patch/6940321/)?
> > 
> > Adding Pali to the cc list.
> > 
> > Hi Pali,
> > Are you still away from your desktop with the joystick? or can it be
> > tested?
> > 
> > regards
> > sudip
> 
> Hi all!
> 
> I'm back with testing on desktop.
> 
> Now I applied above patch on top of 4.2 kernel and patched db9.ko module 
> works fine with my joystick. xserver-xorg-input-joystick still recognize 
> it and works fine as pointer device.
> 
> If you are curious I have connected this model to parallel port:
> https://www.c64-wiki.com/index.php/Quickshot#Quickshot_II_1983
> 
> It is identified as "Multisystem joystick", loaded with modprobe config:
> options db9 dev=0,1
> 
> So now you can add my:
> 
> Tested-By: Pali Rohár <pali.rohar@gmail.com>

Applied, thank you.
Sudip Mukherjee Sept. 29, 2015, 7:10 a.m. UTC | #11
On Mon, Sep 28, 2015 at 06:40:51PM +0200, Pali Rohár wrote:
> On Friday 14 August 2015 08:55:42 Sudip Mukherjee wrote:
> > > > Pali Rohár has the hardware and he is ready to test it.
> 
> Tested-By: Pali Rohár <pali.rohar@gmail.com>
Hi Pali,
Thanks a lot for taking time to test this.

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
index 8e7de5c..348e7d2 100644
--- a/drivers/input/joystick/db9.c
+++ b/drivers/input/joystick/db9.c
@@ -553,7 +553,7 @@  static void db9_close(struct input_dev *dev)
 	mutex_unlock(&db9->mutex);
 }
 
-static struct db9 __init *db9_probe(int parport, int mode)
+static struct db9 __init *db9_probe(int parport, int mode, int cnt)
 {
 	struct db9 *db9;
 	const struct db9_mode_data *db9_mode;
@@ -562,6 +562,7 @@  static struct db9 __init *db9_probe(int parport, int mode)
 	struct input_dev *input_dev;
 	int i, j;
 	int err;
+	struct pardev_cb db9_parport_cb;
 
 	if (mode < 1 || mode >= DB9_MAX_PAD || !db9_modes[mode].n_buttons) {
 		printk(KERN_ERR "db9.c: Bad device type %d\n", mode);
@@ -584,7 +585,9 @@  static struct db9 __init *db9_probe(int parport, int mode)
 		goto err_put_pp;
 	}
 
-	pd = parport_register_device(pp, "db9", NULL, NULL, NULL, PARPORT_DEV_EXCL, NULL);
+	db9_parport_cb.flags = PARPORT_FLAG_EXCL;
+
+	pd = parport_register_dev_model(pp, "db9", &db9_parport_cb, cnt);
 	if (!pd) {
 		printk(KERN_ERR "db9.c: parport busy already - lp.o loaded?\n");
 		err = -EBUSY;
@@ -671,11 +674,19 @@  static void db9_remove(struct db9 *db9)
 	kfree(db9);
 }
 
+static struct parport_driver db9_parport_driver = {
+	.name = "db9",
+	.devmodel = true,
+};
+
 static int __init db9_init(void)
 {
 	int i;
 	int have_dev = 0;
-	int err = 0;
+	int err = parport_register_driver(&db9_parport_driver);
+
+	if (err)
+		return err;
 
 	for (i = 0; i < DB9_MAX_PORTS; i++) {
 		if (db9_cfg[i].nargs == 0 || db9_cfg[i].args[DB9_ARG_PARPORT] < 0)
@@ -688,7 +699,7 @@  static int __init db9_init(void)
 		}
 
 		db9_base[i] = db9_probe(db9_cfg[i].args[DB9_ARG_PARPORT],
-					db9_cfg[i].args[DB9_ARG_MODE]);
+					db9_cfg[i].args[DB9_ARG_MODE], i);
 		if (IS_ERR(db9_base[i])) {
 			err = PTR_ERR(db9_base[i]);
 			break;
@@ -701,10 +712,15 @@  static int __init db9_init(void)
 		while (--i >= 0)
 			if (db9_base[i])
 				db9_remove(db9_base[i]);
+		parport_unregister_driver(&db9_parport_driver);
 		return err;
 	}
 
-	return have_dev ? 0 : -ENODEV;
+	if (have_dev)
+		return 0;
+
+	parport_unregister_driver(&db9_parport_driver);
+	return -ENODEV;
 }
 
 static void __exit db9_exit(void)
@@ -714,6 +730,7 @@  static void __exit db9_exit(void)
 	for (i = 0; i < DB9_MAX_PORTS; i++)
 		if (db9_base[i])
 			db9_remove(db9_base[i]);
+	parport_unregister_driver(&db9_parport_driver);
 }
 
 module_init(db9_init);