Lines Matching refs:dev
31 struct pardevice *dev; /* Parport device entry */ member
54 static void got_it(ppa_struct *dev) in got_it() argument
56 dev->base = dev->dev->port->base; in got_it()
57 if (dev->cur_cmd) in got_it()
58 dev->cur_cmd->SCp.phase = 1; in got_it()
60 wake_up(dev->waiting); in got_it()
65 ppa_struct *dev = (ppa_struct *) ref; in ppa_wakeup() local
69 if (dev->wanted) { in ppa_wakeup()
70 parport_claim(dev->dev); in ppa_wakeup()
71 got_it(dev); in ppa_wakeup()
72 dev->wanted = 0; in ppa_wakeup()
78 static int ppa_pb_claim(ppa_struct *dev) in ppa_pb_claim() argument
83 if (parport_claim(dev->dev) == 0) { in ppa_pb_claim()
84 got_it(dev); in ppa_pb_claim()
87 dev->wanted = res; in ppa_pb_claim()
92 static void ppa_pb_dismiss(ppa_struct *dev) in ppa_pb_dismiss() argument
97 wanted = dev->wanted; in ppa_pb_dismiss()
98 dev->wanted = 0; in ppa_pb_dismiss()
101 parport_release(dev->dev); in ppa_pb_dismiss()
104 static inline void ppa_pb_release(ppa_struct *dev) in ppa_pb_release() argument
106 parport_release(dev->dev); in ppa_pb_release()
123 ppa_struct *dev = ppa_dev(host); in ppa_write_info() local
128 dev->mode = x; in ppa_write_info()
133 dev->recon_tmo = x; in ppa_write_info()
143 ppa_struct *dev = ppa_dev(host); in ppa_show_info() local
146 seq_printf(m, "Parport : %s\n", dev->dev->port->name); in ppa_show_info()
147 seq_printf(m, "Mode : %s\n", PPA_MODE_STRING[dev->mode]); in ppa_show_info()
149 seq_printf(m, "recon_tmo : %lu\n", dev->recon_tmo); in ppa_show_info()
154 static int device_check(ppa_struct *dev);
159 static inline void ppa_fail_func(ppa_struct *dev, int error_code) in ppa_fail_func() argument
161 static inline void ppa_fail(ppa_struct *dev, int error_code) in ppa_fail_func()
165 if (dev->cur_cmd) { in ppa_fail_func()
166 dev->cur_cmd->result = error_code << 16; in ppa_fail_func()
167 dev->failed = 1; in ppa_fail_func()
178 static unsigned char ppa_wait(ppa_struct *dev) in ppa_wait() argument
181 unsigned short ppb = dev->base; in ppa_wait()
202 ppa_fail(dev, DID_TIME_OUT); in ppa_wait()
222 static inline void ecp_sync(ppa_struct *dev) in ecp_sync() argument
224 int i, ppb_hi = dev->dev->port->base_hi; in ecp_sync()
276 static int ppa_out(ppa_struct *dev, char *buffer, int len) in ppa_out() argument
279 unsigned short ppb = dev->base; in ppa_out()
281 r = ppa_wait(dev); in ppa_out()
284 ppa_fail(dev, DID_ERROR); in ppa_out()
287 switch (dev->mode) { in ppa_out()
311 ecp_sync(dev); in ppa_out()
321 static int ppa_in(ppa_struct *dev, char *buffer, int len) in ppa_in() argument
324 unsigned short ppb = dev->base; in ppa_in()
326 r = ppa_wait(dev); in ppa_in()
329 ppa_fail(dev, DID_ERROR); in ppa_in()
332 switch (dev->mode) { in ppa_in()
364 ecp_sync(dev); in ppa_in()
386 static void ppa_disconnect(ppa_struct *dev) in ppa_disconnect() argument
388 unsigned short ppb = dev->base; in ppa_disconnect()
405 static inline void ppa_connect(ppa_struct *dev, int flag) in ppa_connect() argument
407 unsigned short ppb = dev->base; in ppa_connect()
412 if ((flag == CONNECT_EPP_MAYBE) && IN_EPP_MODE(dev->mode)) in ppa_connect()
418 static int ppa_select(ppa_struct *dev, int target) in ppa_select() argument
421 unsigned short ppb = dev->base; in ppa_select()
462 static int ppa_init(ppa_struct *dev) in ppa_init() argument
465 unsigned short ppb = dev->base; in ppa_init()
467 ppa_disconnect(dev); in ppa_init()
468 ppa_connect(dev, CONNECT_NORMAL); in ppa_init()
483 ppa_disconnect(dev); in ppa_init()
489 return device_check(dev); in ppa_init()
494 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_send_command() local
497 w_ctr(dev->base, 0x0c); in ppa_send_command()
500 if (!ppa_out(dev, &cmd->cmnd[k], 1)) in ppa_send_command()
520 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_completion() local
521 unsigned short ppb = dev->base; in ppa_completion()
546 ppa_fail(dev, DID_ERROR); in ppa_completion()
564 unsigned long k = dev->recon_tmo; in ppa_completion()
578 status = ppa_out(dev, cmd->SCp.ptr, fast); in ppa_completion()
580 status = ppa_in(dev, cmd->SCp.ptr, fast); in ppa_completion()
586 ppa_fail(dev, DID_BUS_BUSY); in ppa_completion()
614 ppa_struct *dev = container_of(work, ppa_struct, ppa_tq.work); in ppa_interrupt() local
615 struct scsi_cmnd *cmd = dev->cur_cmd; in ppa_interrupt()
621 if (ppa_engine(dev, cmd)) { in ppa_interrupt()
622 schedule_delayed_work(&dev->ppa_tq, 1); in ppa_interrupt()
661 ppa_disconnect(dev); in ppa_interrupt()
663 ppa_pb_dismiss(dev); in ppa_interrupt()
665 dev->cur_cmd = NULL; in ppa_interrupt()
670 static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) in ppa_engine() argument
672 unsigned short ppb = dev->base; in ppa_engine()
679 if (dev->failed) in ppa_engine()
684 if (time_after(jiffies, dev->jstart + HZ)) { in ppa_engine()
689 ppa_fail(dev, DID_BUS_BUSY); in ppa_engine()
697 ppa_connect(dev, CONNECT_EPP_MAYBE); in ppa_engine()
708 if (time_after(jiffies, dev->jstart + (1 * HZ))) { in ppa_engine()
710 ppa_fail(dev, DID_BUS_BUSY); in ppa_engine()
713 ppa_disconnect(dev); in ppa_engine()
721 if (!ppa_select(dev, scmd_id(cmd))) { in ppa_engine()
722 ppa_fail(dev, DID_NO_CONNECT); in ppa_engine()
764 if (ppa_wait(dev) != (unsigned char) 0xf0) { in ppa_engine()
765 ppa_fail(dev, DID_ERROR); in ppa_engine()
768 if (ppa_in(dev, &l, 1)) { /* read status byte */ in ppa_engine()
770 if (ppa_wait(dev) == (unsigned char) 0xf0) in ppa_engine()
771 ppa_in(dev, &h, 1); in ppa_engine()
787 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_queuecommand_lck() local
789 if (dev->cur_cmd) { in ppa_queuecommand_lck()
793 dev->failed = 0; in ppa_queuecommand_lck()
794 dev->jstart = jiffies; in ppa_queuecommand_lck()
795 dev->cur_cmd = cmd; in ppa_queuecommand_lck()
800 schedule_delayed_work(&dev->ppa_tq, 0); in ppa_queuecommand_lck()
802 ppa_pb_claim(dev); in ppa_queuecommand_lck()
815 static int ppa_biosparam(struct scsi_device *sdev, struct block_device *dev, in DEF_SCSI_QCMD()
833 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_abort() local
842 dev->cur_cmd = NULL; /* Forget the problem */ in ppa_abort()
861 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_reset() local
864 ppa_disconnect(dev); in ppa_reset()
865 dev->cur_cmd = NULL; /* Forget the problem */ in ppa_reset()
867 ppa_connect(dev, CONNECT_NORMAL); in ppa_reset()
868 ppa_reset_pulse(dev->base); in ppa_reset()
870 ppa_disconnect(dev); in ppa_reset()
875 static int device_check(ppa_struct *dev) in device_check() argument
881 int loop, old_mode, status, k, ppb = dev->base; in device_check()
884 old_mode = dev->mode; in device_check()
888 dev->mode = PPA_EPP_32; in device_check()
891 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
893 if (!ppa_select(dev, loop)) { in device_check()
894 ppa_disconnect(dev); in device_check()
898 loop, PPA_MODE_STRING[dev->mode]); in device_check()
904 status = ppa_out(dev, cmd, 1); in device_check()
907 ppa_disconnect(dev); in device_check()
908 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
914 ppa_disconnect(dev); in device_check()
916 if (dev->mode == PPA_EPP_32) { in device_check()
917 dev->mode = old_mode; in device_check()
933 ppa_disconnect(dev); in device_check()
934 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
937 ppa_disconnect(dev); in device_check()
939 if (dev->mode == PPA_EPP_32) { in device_check()
940 dev->mode = old_mode; in device_check()
945 ppa_disconnect(dev); in device_check()
947 loop, PPA_MODE_STRING[dev->mode]); in device_check()
948 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
951 ppa_disconnect(dev); in device_check()
993 ppa_struct *dev; in __ppa_attach() local
998 dev = kzalloc(sizeof(ppa_struct), GFP_KERNEL); in __ppa_attach()
999 if (!dev) in __ppa_attach()
1001 dev->base = -1; in __ppa_attach()
1002 dev->mode = PPA_AUTODETECT; in __ppa_attach()
1003 dev->recon_tmo = PPA_RECON_TMO; in __ppa_attach()
1005 dev->dev = parport_register_device(pb, "ppa", NULL, ppa_wakeup, in __ppa_attach()
1006 NULL, 0, dev); in __ppa_attach()
1008 if (!dev->dev) in __ppa_attach()
1015 dev->waiting = &waiting; in __ppa_attach()
1017 if (ppa_pb_claim(dev)) in __ppa_attach()
1019 if (dev->wanted) { in __ppa_attach()
1023 ppa_pb_dismiss(dev); in __ppa_attach()
1024 dev->waiting = NULL; in __ppa_attach()
1028 dev->waiting = NULL; in __ppa_attach()
1030 ppb = dev->base = dev->dev->port->base; in __ppa_attach()
1031 ppb_hi = dev->dev->port->base_hi; in __ppa_attach()
1033 modes = dev->dev->port->modes; in __ppa_attach()
1038 dev->mode = PPA_NIBBLE; in __ppa_attach()
1041 dev->mode = PPA_PS2; in __ppa_attach()
1045 dev->mode = PPA_PS2; in __ppa_attach()
1052 err = ppa_init(dev); in __ppa_attach()
1053 ppa_pb_release(dev); in __ppa_attach()
1059 if (dev->mode == PPA_NIBBLE || dev->mode == PPA_PS2) in __ppa_attach()
1064 INIT_DELAYED_WORK(&dev->ppa_tq, ppa_interrupt); in __ppa_attach()
1074 *(ppa_struct **)&host->hostdata = dev; in __ppa_attach()
1075 dev->host = host; in __ppa_attach()
1076 list_add_tail(&dev->list, &ppa_hosts); in __ppa_attach()
1083 list_del_init(&dev->list); in __ppa_attach()
1086 parport_unregister_device(dev->dev); in __ppa_attach()
1088 kfree(dev); in __ppa_attach()
1099 ppa_struct *dev; in ppa_detach() local
1100 list_for_each_entry(dev, &ppa_hosts, list) { in ppa_detach()
1101 if (dev->dev->port == pb) { in ppa_detach()
1102 list_del_init(&dev->list); in ppa_detach()
1103 scsi_remove_host(dev->host); in ppa_detach()
1104 scsi_host_put(dev->host); in ppa_detach()
1105 parport_unregister_device(dev->dev); in ppa_detach()
1106 kfree(dev); in ppa_detach()