• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asus-wl-520gu-7.0.1.45/src/linux/linux/drivers/block/paride/

Lines Matching refs:pi

49 void pi_write_regr( PIA *pi, int cont, int regr, int val)
51 { pi->proto->write_regr(pi,cont,regr,val);
54 int pi_read_regr( PIA *pi, int cont, int regr)
56 { return pi->proto->read_regr(pi,cont,regr);
59 void pi_write_block( PIA *pi, char * buf, int count)
61 { pi->proto->write_block(pi,buf,count);
64 void pi_read_block( PIA *pi, char * buf, int count)
66 { pi->proto->read_block(pi,buf,count);
73 { PIA *pi = (PIA *) p;
79 if (pi->claim_cont && !parport_claim(pi->pardev)) {
80 cont = pi->claim_cont;
81 pi->claim_cont = NULL;
82 pi->claimed = 1;
87 wake_up(&(pi->parq));
94 void pi_do_claimed( PIA *pi, void(*cont)(void))
102 if (!pi->pardev || !parport_claim(pi->pardev)) {
103 pi->claimed = 1;
107 pi->claim_cont = cont;
119 static void pi_claim( PIA *pi)
121 { if (pi->claimed) return;
122 pi->claimed = 1;
124 if (pi->pardev)
125 wait_event (pi->parq,
126 !parport_claim ((struct pardevice *)pi->pardev));
130 static void pi_unclaim( PIA *pi)
132 { pi->claimed = 0;
134 if (pi->pardev) parport_release((struct pardevice *)(pi->pardev));
138 void pi_connect( PIA *pi)
140 { pi_claim(pi);
141 pi->proto->connect(pi);
144 void pi_disconnect( PIA *pi)
146 { pi->proto->disconnect(pi);
147 pi_unclaim(pi);
150 static void pi_unregister_parport( PIA *pi)
154 if (pi->pardev) {
155 parport_unregister_device((struct pardevice *)(pi->pardev));
156 pi->pardev = NULL;
161 void pi_release( PIA *pi)
163 { pi_unregister_parport(pi);
165 if (pi->reserved)
166 release_region(pi->port,pi->reserved);
168 pi->proto->release_proto(pi);
171 #define WR(r,v) pi_write_regr(pi,0,r,v)
172 #define RR(r) (pi_read_regr(pi,0,r))
174 static int pi_test_proto( PIA *pi, char * scratch, int verbose )
179 if (pi->proto->test_proto) {
180 pi_claim(pi);
181 j = pi->proto->test_proto(pi,scratch,verbose);
182 pi_unclaim(pi);
186 pi_connect(pi);
197 pi_disconnect(pi);
201 pi->device,pi->proto->name,pi->port,
202 pi->mode,e[0],e[1]);
240 static int pi_register_parport( PIA *pi, int verbose)
247 port = parport_find_base (pi->port);
251 pi->pardev = parport_register_device(port,
252 pi->device,NULL,
254 0,(void *)pi);
256 if (!pi->pardev)
259 init_waitqueue_head(&pi->parq);
261 if (verbose) printk("%s: 0x%x is %s\n",pi->device,pi->port,
264 pi->parname = (char *)port->name;
270 static int pi_probe_mode( PIA *pi, int max, char * scratch, int verbose)
274 if (pi->mode != -1) {
275 if (pi->mode >= max) return 0;
277 if (pi->mode >= pi->proto->epp_first) range = 8;
278 if ((range == 8) && (pi->port % 8)) return 0;
279 pi->reserved = range;
280 return (!pi_test_proto(pi,scratch,verbose));
283 for(pi->mode=0;pi->mode<max;pi->mode++) {
285 if (pi->mode >= pi->proto->epp_first) range = 8;
286 if ((range == 8) && (pi->port % 8)) break;
287 pi->reserved = range;
288 if (!pi_test_proto(pi,scratch,verbose)) best = pi->mode;
290 pi->mode = best;
294 static int pi_probe_unit( PIA *pi, int unit, char * scratch, int verbose)
302 e = pi->proto->max_units;
305 if (!pi_register_parport(pi,verbose))
308 if (pi->proto->test_port) {
309 pi_claim(pi);
310 max = pi->proto->test_port(pi);
311 pi_unclaim(pi);
313 else max = pi->proto->max_mode;
315 if (pi->proto->probe_unit) {
316 pi_claim(pi);
317 for (pi->unit=s;pi->unit<e;pi->unit++)
318 if (pi->proto->probe_unit(pi)) {
319 pi_unclaim(pi);
320 if (pi_probe_mode(pi,max,scratch,verbose)) return 1;
321 pi_unregister_parport(pi);
324 pi_unclaim(pi);
325 pi_unregister_parport(pi);
329 if (!pi_probe_mode(pi,max,scratch,verbose)) {
330 pi_unregister_parport(pi);
337 int pi_init(PIA *pi, int autoprobe, int port, int mode,
361 pi->proto = protocols[p];
362 pi->private = 0;
363 pi->proto->init_proto(pi);
364 if (delay == -1) pi->delay = pi->proto->default_delay;
365 else pi->delay = delay;
366 pi->devtype = devtype;
367 pi->device = device;
369 pi->parname = NULL;
370 pi->pardev = NULL;
371 init_waitqueue_head(&pi->parq);
372 pi->claimed = 0;
373 pi->claim_cont = NULL;
375 pi->mode = mode;
377 pi->port = port;
378 if (pi_probe_unit(pi,unit,scratch,verbose)) break;
379 pi->port = 0;
382 while ((pi->port = lpts[k++]))
383 if (pi_probe_unit(pi,unit,scratch,verbose)) break;
384 if (pi->port) break;
386 pi->proto->release_proto(pi);
390 if (!pi->port) {
397 if (!request_region(pi->port,pi->reserved,pi->device))
399 printk(KERN_WARNING"paride: Unable to request region 0x%x\n", pi->port);
404 if (pi->parname)
405 printk("%s: Sharing %s at 0x%x\n",pi->device,
406 pi->parname,pi->port);
408 pi->proto->log_adapter(pi,scratch,verbose);