Lines Matching refs:dev

31 	struct pardevice *dev;	/* Parport device entry         */  member
65 static void got_it(ppa_struct *dev) in got_it() argument
67 dev->base = dev->dev->port->base; in got_it()
68 if (dev->cur_cmd) in got_it()
69 ppa_scsi_pointer(dev->cur_cmd)->phase = 1; in got_it()
71 wake_up(dev->waiting); in got_it()
76 ppa_struct *dev = (ppa_struct *) ref; in ppa_wakeup() local
80 if (dev->wanted) { in ppa_wakeup()
81 parport_claim(dev->dev); in ppa_wakeup()
82 got_it(dev); in ppa_wakeup()
83 dev->wanted = 0; in ppa_wakeup()
89 static int ppa_pb_claim(ppa_struct *dev) in ppa_pb_claim() argument
94 if (parport_claim(dev->dev) == 0) { in ppa_pb_claim()
95 got_it(dev); in ppa_pb_claim()
98 dev->wanted = res; in ppa_pb_claim()
103 static void ppa_pb_dismiss(ppa_struct *dev) in ppa_pb_dismiss() argument
108 wanted = dev->wanted; in ppa_pb_dismiss()
109 dev->wanted = 0; in ppa_pb_dismiss()
112 parport_release(dev->dev); in ppa_pb_dismiss()
115 static inline void ppa_pb_release(ppa_struct *dev) in ppa_pb_release() argument
117 parport_release(dev->dev); in ppa_pb_release()
134 ppa_struct *dev = ppa_dev(host); in ppa_write_info() local
139 dev->mode = x; in ppa_write_info()
144 dev->recon_tmo = x; in ppa_write_info()
154 ppa_struct *dev = ppa_dev(host); in ppa_show_info() local
157 seq_printf(m, "Parport : %s\n", dev->dev->port->name); in ppa_show_info()
158 seq_printf(m, "Mode : %s\n", PPA_MODE_STRING[dev->mode]); in ppa_show_info()
160 seq_printf(m, "recon_tmo : %lu\n", dev->recon_tmo); in ppa_show_info()
165 static int device_check(ppa_struct *dev, bool autodetect);
170 static inline void ppa_fail_func(ppa_struct *dev, int error_code) in ppa_fail_func() argument
172 static inline void ppa_fail(ppa_struct *dev, int error_code) in ppa_fail_func()
176 if (dev->cur_cmd) { in ppa_fail_func()
177 dev->cur_cmd->result = error_code << 16; in ppa_fail_func()
178 dev->failed = 1; in ppa_fail_func()
189 static unsigned char ppa_wait(ppa_struct *dev) in ppa_wait() argument
192 unsigned short ppb = dev->base; in ppa_wait()
213 ppa_fail(dev, DID_TIME_OUT); in ppa_wait()
233 static inline void ecp_sync(ppa_struct *dev) in ecp_sync() argument
235 int i, ppb_hi = dev->dev->port->base_hi; in ecp_sync()
287 static int ppa_out(ppa_struct *dev, char *buffer, int len) in ppa_out() argument
290 unsigned short ppb = dev->base; in ppa_out()
292 r = ppa_wait(dev); in ppa_out()
295 ppa_fail(dev, DID_ERROR); in ppa_out()
298 switch (dev->mode) { in ppa_out()
310 if (dev->mode == PPA_EPP_32 && !(((long) buffer | len) & 0x03)) in ppa_out()
312 else if (dev->mode == PPA_EPP_16 && !(((long) buffer | len) & 0x01)) in ppa_out()
319 ecp_sync(dev); in ppa_out()
329 static int ppa_in(ppa_struct *dev, char *buffer, int len) in ppa_in() argument
332 unsigned short ppb = dev->base; in ppa_in()
334 r = ppa_wait(dev); in ppa_in()
337 ppa_fail(dev, DID_ERROR); in ppa_in()
340 switch (dev->mode) { in ppa_in()
360 if (dev->mode == PPA_EPP_32 && !(((long) buffer | len) & 0x03)) in ppa_in()
362 else if (dev->mode == PPA_EPP_16 && !(((long) buffer | len) & 0x01)) in ppa_in()
369 ecp_sync(dev); in ppa_in()
391 static void ppa_disconnect(ppa_struct *dev) in ppa_disconnect() argument
393 unsigned short ppb = dev->base; in ppa_disconnect()
410 static inline void ppa_connect(ppa_struct *dev, int flag) in ppa_connect() argument
412 unsigned short ppb = dev->base; in ppa_connect()
417 if ((flag == CONNECT_EPP_MAYBE) && IN_EPP_MODE(dev->mode)) in ppa_connect()
423 static int ppa_select(ppa_struct *dev, int target) in ppa_select() argument
426 unsigned short ppb = dev->base; in ppa_select()
467 static int ppa_init(ppa_struct *dev) in ppa_init() argument
470 unsigned short ppb = dev->base; in ppa_init()
471 bool autodetect = dev->mode == PPA_AUTODETECT; in ppa_init()
474 int modes = dev->dev->port->modes; in ppa_init()
475 int ppb_hi = dev->dev->port->base_hi; in ppa_init()
480 dev->mode = PPA_NIBBLE; in ppa_init()
483 dev->mode = PPA_PS2; in ppa_init()
487 dev->mode = PPA_PS2; in ppa_init()
493 ppa_disconnect(dev); in ppa_init()
494 ppa_connect(dev, CONNECT_NORMAL); in ppa_init()
509 ppa_disconnect(dev); in ppa_init()
515 return device_check(dev, autodetect); in ppa_init()
520 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_send_command() local
523 w_ctr(dev->base, 0x0c); in ppa_send_command()
526 if (!ppa_out(dev, &cmd->cmnd[k], 1)) in ppa_send_command()
547 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_completion() local
548 unsigned short ppb = dev->base; in ppa_completion()
573 ppa_fail(dev, DID_ERROR); in ppa_completion()
591 unsigned long k = dev->recon_tmo; in ppa_completion()
605 status = ppa_out(dev, scsi_pointer->ptr, fast); in ppa_completion()
607 status = ppa_in(dev, scsi_pointer->ptr, fast); in ppa_completion()
613 ppa_fail(dev, DID_BUS_BUSY); in ppa_completion()
643 ppa_struct *dev = container_of(work, ppa_struct, ppa_tq.work); in ppa_interrupt() local
644 struct scsi_cmnd *cmd = dev->cur_cmd; in ppa_interrupt()
650 if (ppa_engine(dev, cmd)) { in ppa_interrupt()
651 schedule_delayed_work(&dev->ppa_tq, 1); in ppa_interrupt()
690 ppa_disconnect(dev); in ppa_interrupt()
692 ppa_pb_dismiss(dev); in ppa_interrupt()
694 dev->cur_cmd = NULL; in ppa_interrupt()
699 static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) in ppa_engine() argument
702 unsigned short ppb = dev->base; in ppa_engine()
709 if (dev->failed) in ppa_engine()
714 if (time_after(jiffies, dev->jstart + HZ)) { in ppa_engine()
719 ppa_fail(dev, DID_BUS_BUSY); in ppa_engine()
727 ppa_connect(dev, CONNECT_EPP_MAYBE); in ppa_engine()
738 if (time_after(jiffies, dev->jstart + (1 * HZ))) { in ppa_engine()
740 ppa_fail(dev, DID_BUS_BUSY); in ppa_engine()
743 ppa_disconnect(dev); in ppa_engine()
752 if (!ppa_select(dev, scmd_id(cmd))) { in ppa_engine()
753 ppa_fail(dev, DID_NO_CONNECT); in ppa_engine()
800 if (ppa_wait(dev) != (unsigned char) 0xf0) { in ppa_engine()
801 ppa_fail(dev, DID_ERROR); in ppa_engine()
804 if (ppa_in(dev, &l, 1)) { /* read status byte */ in ppa_engine()
806 if (ppa_wait(dev) == (unsigned char) 0xf0) in ppa_engine()
807 ppa_in(dev, &h, 1); in ppa_engine()
821 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_queuecommand_lck() local
823 if (dev->cur_cmd) { in ppa_queuecommand_lck()
827 dev->failed = 0; in ppa_queuecommand_lck()
828 dev->jstart = jiffies; in ppa_queuecommand_lck()
829 dev->cur_cmd = cmd; in ppa_queuecommand_lck()
833 schedule_delayed_work(&dev->ppa_tq, 0); in ppa_queuecommand_lck()
835 ppa_pb_claim(dev); in ppa_queuecommand_lck()
848 static int ppa_biosparam(struct scsi_device *sdev, struct block_device *dev, in DEF_SCSI_QCMD()
866 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_abort() local
875 dev->cur_cmd = NULL; /* Forget the problem */ in ppa_abort()
892 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_reset() local
895 ppa_disconnect(dev); in ppa_reset()
896 dev->cur_cmd = NULL; /* Forget the problem */ in ppa_reset()
898 ppa_connect(dev, CONNECT_NORMAL); in ppa_reset()
899 ppa_reset_pulse(dev->base); in ppa_reset()
901 ppa_disconnect(dev); in ppa_reset()
906 static int device_check(ppa_struct *dev, bool autodetect) in device_check() argument
912 int loop, old_mode, status, k, ppb = dev->base; in device_check()
915 old_mode = dev->mode; in device_check()
919 dev->mode = PPA_EPP_8; in device_check()
922 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
924 if (!ppa_select(dev, loop)) { in device_check()
925 ppa_disconnect(dev); in device_check()
929 loop, PPA_MODE_STRING[dev->mode]); in device_check()
935 status = ppa_out(dev, cmd, 1); in device_check()
938 ppa_disconnect(dev); in device_check()
939 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
945 ppa_disconnect(dev); in device_check()
947 if (dev->mode != old_mode) { in device_check()
948 dev->mode = old_mode; in device_check()
964 ppa_disconnect(dev); in device_check()
965 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
968 ppa_disconnect(dev); in device_check()
970 if (dev->mode != old_mode) { in device_check()
971 dev->mode = old_mode; in device_check()
976 ppa_disconnect(dev); in device_check()
978 loop, PPA_MODE_STRING[dev->mode]); in device_check()
979 ppa_connect(dev, CONNECT_EPP_MAYBE); in device_check()
982 ppa_disconnect(dev); in device_check()
1026 ppa_struct *dev, *par = NULL; in find_parent() local
1032 list_for_each_entry(dev, &ppa_hosts, list) { in find_parent()
1033 if (dev->dev_no != cnt) in find_parent()
1036 par = dev; in find_parent()
1047 ppa_struct *dev, *temp; in __ppa_attach() local
1052 dev = kzalloc(sizeof(ppa_struct), GFP_KERNEL); in __ppa_attach()
1053 if (!dev) in __ppa_attach()
1055 dev->base = -1; in __ppa_attach()
1056 dev->mode = mode < PPA_UNKNOWN ? mode : PPA_AUTODETECT; in __ppa_attach()
1057 dev->recon_tmo = PPA_RECON_TMO; in __ppa_attach()
1061 dev->dev_no = temp->dev_no + 1; in __ppa_attach()
1064 ppa_cb.private = dev; in __ppa_attach()
1067 dev->dev = parport_register_dev_model(pb, "ppa", &ppa_cb, dev->dev_no); in __ppa_attach()
1069 if (!dev->dev) in __ppa_attach()
1076 dev->waiting = &waiting; in __ppa_attach()
1078 if (ppa_pb_claim(dev)) in __ppa_attach()
1080 if (dev->wanted) { in __ppa_attach()
1084 ppa_pb_dismiss(dev); in __ppa_attach()
1085 dev->waiting = NULL; in __ppa_attach()
1089 dev->waiting = NULL; in __ppa_attach()
1091 dev->base = dev->dev->port->base; in __ppa_attach()
1092 w_ctr(dev->base, 0x0c); in __ppa_attach()
1096 err = ppa_init(dev); in __ppa_attach()
1097 ppa_pb_release(dev); in __ppa_attach()
1103 if (dev->mode == PPA_NIBBLE || dev->mode == PPA_PS2) in __ppa_attach()
1108 INIT_DELAYED_WORK(&dev->ppa_tq, ppa_interrupt); in __ppa_attach()
1118 *(ppa_struct **)&host->hostdata = dev; in __ppa_attach()
1119 dev->host = host; in __ppa_attach()
1120 list_add_tail(&dev->list, &ppa_hosts); in __ppa_attach()
1127 list_del_init(&dev->list); in __ppa_attach()
1130 parport_unregister_device(dev->dev); in __ppa_attach()
1132 kfree(dev); in __ppa_attach()
1143 ppa_struct *dev; in ppa_detach() local
1144 list_for_each_entry(dev, &ppa_hosts, list) { in ppa_detach()
1145 if (dev->dev->port == pb) { in ppa_detach()
1146 list_del_init(&dev->list); in ppa_detach()
1147 scsi_remove_host(dev->host); in ppa_detach()
1148 scsi_host_put(dev->host); in ppa_detach()
1149 parport_unregister_device(dev->dev); in ppa_detach()
1150 kfree(dev); in ppa_detach()