Lines Matching defs:piod

486 tdfx_query_fetch(u_int cmd, struct tdfx_pio_data *piod)
497 /*piod->device &= 0xf;*/
498 if((piod == NULL) ||(tdfx_count <= piod->device) ||
499 (piod->device < 0)) {
507 piod->device);
514 switch(piod->port) {
516 if(piod->size != 2) return -EINVAL;
517 copyout(&tdfx_info->vendor, piod->value, piod->size);
520 if(piod->size != 2) return -EINVAL;
521 copyout(&tdfx_info->type, piod->value, piod->size);
524 if(piod->size != 4) return -EINVAL;
525 copyout(&tdfx_info->addr0, piod->value, piod->size);
528 if(piod->size != 4) return -EINVAL;
529 copyout(&tdfx_info->addr1, piod->value, piod->size);
532 if(piod->size != 1) return -EINVAL;
535 if(piod->size != 2) return -EINVAL;
538 if(piod->size != 2) return -EINVAL;
541 if(piod->size != 4) return -EINVAL;
544 if(piod->size != 1) return -EINVAL;
547 if(piod->size != 4) return -EINVAL;
555 switch(piod->size) {
557 ret_byte = pci_read_config(tdfx_info[piod->device].dev,
558 piod->port, 1);
559 copyout(&ret_byte, piod->value, 1);
562 ret_word = pci_read_config(tdfx_info[piod->device].dev,
563 piod->port, 2);
564 copyout(&ret_word, piod->value, 2);
567 ret_dword = pci_read_config(tdfx_info[piod->device].dev,
568 piod->port, 4);
569 copyout(&ret_dword, piod->value, 4);
578 tdfx_query_update(u_int cmd, struct tdfx_pio_data *piod)
591 if((piod == NULL) || (piod->device >= (tdfx_count &
600 piod->device);
608 switch(piod->port) {
610 if(piod->size != 2) return -EINVAL;
613 if(piod->size != 4) return -EINVAL;
616 if(piod->size != 4) return -EINVAL;
619 if(piod->size != 4) return -EINVAL;
622 if(piod->size != 4) return -EINVAL;
628 retval = pci_read_config(tdfx_info->dev, piod->port & ~3, 4);
632 switch (piod->size) {
634 copyin(piod->value, &ret_byte, 1);
635 preval = ret_byte << (8 * (piod->port & 0x3));
636 mask = 0xff << (8 * (piod->port & 0x3));
639 copyin(piod->value, &ret_word, 2);
640 preval = ret_word << (8 * (piod->port & 0x3));
641 mask = 0xffff << (8 * (piod->port & 0x3));
644 copyin(piod->value, &ret_dword, 4);
653 pci_write_config(tdfx_info->dev, piod->port & ~3, retval, 4);
663 tdfx_do_pio_rd(struct tdfx_pio_data *piod)
669 (struct tdfx_softc*)devclass_get_softc(tdfx_devclass, piod->device);
672 if(((piod->port != VGA_INPUT_STATUS_1C) || (piod->port != SC_INDEX) ||
673 (piod->port != SC_DATA) || (piod->port != VGA_MISC_OUTPUT_READ)) &&
674 (piod->port < tdfx_info->pio0) && (piod->port > tdfx_info->pio0max))
678 if(piod->size != 1) {
683 workport = piod->port;
685 copyout(&ret_byte, piod->value, sizeof(u_int8_t));
690 tdfx_do_pio_wt(struct tdfx_pio_data *piod)
696 tdfx_softc*)devclass_get_softc(tdfx_devclass, piod->device);
699 if(((piod->port != SC_INDEX) && (piod->port != SC_DATA) &&
700 (piod->port != VGA_MISC_OUTPUT_READ)) /* Can't write VGA_ST_1C */ &&
701 (piod->port < tdfx_info->pio0) && (piod->port > tdfx_info->pio0max))
705 if(piod->size != 1) {
710 copyin(piod->value, &ret_byte, sizeof(u_int8_t));
711 workport = piod->port;
717 tdfx_do_query(u_int cmd, struct tdfx_pio_data *piod)
725 return tdfx_query_fetch(cmd, piod);
728 return tdfx_query_update(cmd, piod);
740 tdfx_do_pio(u_int cmd, struct tdfx_pio_data *piod)
745 return tdfx_do_pio_rd(piod);
748 return tdfx_do_pio_wt(piod);
775 struct tdfx_pio_data *piod = (struct tdfx_pio_data*)data;
778 piod);
785 if((retval = tdfx_do_query(cmd, piod)) > 0) td->td_retval[0] = retval;
790 if((tdfx_do_pio(cmd, piod)) > 0) td->td_retval[0] = retval;