Skip to content

Commit 4edd70c

Browse files
sudipm-mukherjeegregkh
authored andcommitted
auxdisplay: ks0108: use new parport device model
Modify auxdisplay driver to use the new parallel port device model. Signed-off-by: Sudip Mukherjee <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent c9efdbe commit 4edd70c

File tree

1 file changed

+47
-29
lines changed

1 file changed

+47
-29
lines changed

drivers/auxdisplay/ks0108.c

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -125,51 +125,69 @@ unsigned char ks0108_isinited(void)
125125
}
126126
EXPORT_SYMBOL_GPL(ks0108_isinited);
127127

128-
/*
129-
* Module Init & Exit
130-
*/
131-
132-
static int __init ks0108_init(void)
128+
static void ks0108_parport_attach(struct parport *port)
133129
{
134-
int result;
135-
int ret = -EINVAL;
130+
struct pardev_cb ks0108_cb;
136131

137-
ks0108_parport = parport_find_base(ks0108_port);
138-
if (ks0108_parport == NULL) {
139-
pr_err("ERROR: parport didn't find %i port\n", ks0108_port);
140-
goto none;
141-
}
132+
if (port->base != ks0108_port)
133+
return;
142134

143-
ks0108_pardevice = parport_register_device(ks0108_parport, KS0108_NAME,
144-
NULL, NULL, NULL, PARPORT_DEV_EXCL, NULL);
145-
parport_put_port(ks0108_parport);
146-
if (ks0108_pardevice == NULL) {
135+
memset(&ks0108_cb, 0, sizeof(ks0108_cb));
136+
ks0108_cb.flags = PARPORT_DEV_EXCL;
137+
ks0108_pardevice = parport_register_dev_model(port, KS0108_NAME,
138+
&ks0108_cb, 0);
139+
if (!ks0108_pardevice) {
147140
pr_err("ERROR: parport didn't register new device\n");
148-
goto none;
141+
return;
149142
}
150-
151-
result = parport_claim(ks0108_pardevice);
152-
if (result != 0) {
153-
pr_err("ERROR: can't claim %i parport, maybe in use\n",
143+
if (parport_claim(ks0108_pardevice)) {
144+
pr_err("could not claim access to parport %i. Aborting.\n",
154145
ks0108_port);
155-
ret = result;
156-
goto registered;
146+
goto err_unreg_device;
157147
}
158148

159149
ks0108_inited = 1;
160-
return 0;
150+
return;
161151

162-
registered:
152+
err_unreg_device:
163153
parport_unregister_device(ks0108_pardevice);
164-
165-
none:
166-
return ret;
154+
ks0108_pardevice = NULL;
167155
}
168156

169-
static void __exit ks0108_exit(void)
157+
static void ks0108_parport_detach(struct parport *port)
170158
{
159+
if (port->base != ks0108_port)
160+
return;
161+
162+
if (!ks0108_pardevice) {
163+
pr_err("%s: already unregistered.\n", KS0108_NAME);
164+
return;
165+
}
166+
171167
parport_release(ks0108_pardevice);
172168
parport_unregister_device(ks0108_pardevice);
169+
ks0108_pardevice = NULL;
170+
}
171+
172+
/*
173+
* Module Init & Exit
174+
*/
175+
176+
static struct parport_driver ks0108_parport_driver = {
177+
.name = "ks0108",
178+
.match_port = ks0108_parport_attach,
179+
.detach = ks0108_parport_detach,
180+
.devmodel = true,
181+
};
182+
183+
static int __init ks0108_init(void)
184+
{
185+
return parport_register_driver(&ks0108_parport_driver);
186+
}
187+
188+
static void __exit ks0108_exit(void)
189+
{
190+
parport_unregister_driver(&ks0108_parport_driver);
173191
}
174192

175193
module_init(ks0108_init);

0 commit comments

Comments
 (0)