Lines Matching defs:bktr
4 /* $FreeBSD: src/sys/dev/bktr/bktr_card.c,v 1.16 2000/10/31 13:09:56 roger Exp$ */
79 #include <dev/pci/bktr/bktr_reg.h>
80 #include <dev/pci/bktr/bktr_core.h>
81 #include <dev/pci/bktr/bktr_tuner.h>
82 #include <dev/pci/bktr/bktr_card.h>
83 #include <dev/pci/bktr/bktr_audio.h>
87 #include <dev/bktr/bktr_reg.h>
88 #include <dev/bktr/bktr_core.h>
89 #include <dev/bktr/bktr_tuner.h>
90 #include <dev/bktr/bktr_card.h>
91 #include <dev/bktr/bktr_audio.h>
379 writeEEProm(bktr_ptr_t bktr, int offset, int count,
391 readEEProm(bktr_ptr_t bktr, int offset, int count, u_char *data)
399 addr = (int)(bktr->card.eepromAddr & 0xff);
403 xmax = (int)(bktr->card.eepromSize * EEPROMBLOCKSIZE);
408 if (i2cWrite(bktr, addr, offset, -1) == -1)
413 if ((byte = i2cRead(bktr, (addr | 1))) == -1)
432 signCard(bktr_ptr_t bktr, int offset, int count, u_char* sig)
440 if (i2cRead(bktr, (2 * x) + 1) != ABSENT) {
461 static int check_for_i2c_devices(bktr_ptr_t bktr) {
466 temp_read = i2cRead(bktr, (2 * x) + 1);
481 static int locate_tuner_address(bktr_ptr_t bktr) {
482 if (i2cRead(bktr, 0xc1) != ABSENT) return 0xc0;
483 if (i2cRead(bktr, 0xc3) != ABSENT) return 0xc2;
484 if (i2cRead(bktr, 0xc5) != ABSENT) return 0xc4;
485 if (i2cRead(bktr, 0xc7) != ABSENT) return 0xc6;
496 static int locate_eeprom_address(bktr_ptr_t bktr) {
497 if (i2cRead(bktr, 0xa0) != ABSENT) return 0xa0;
498 if (i2cRead(bktr, 0xac) != ABSENT) return 0xac;
499 if (i2cRead(bktr, 0xae) != ABSENT) return 0xae;
570 probeCard(bktr_ptr_t bktr, int verbose, int unit)
581 OUTL(bktr, BKTR_GPIO_OUT_EN, 0);
583 printf("%s: GPIO is 0x%08x\n", bktr_name(bktr),
584 INL(bktr, BKTR_GPIO_DATA));
591 OUTL(bktr, BKTR_GPIO_OUT_EN, INL(bktr, BKTR_GPIO_OUT_EN) | (1<<5));
592 OUTL(bktr, BKTR_GPIO_DATA, INL(bktr, BKTR_GPIO_DATA) | (1<<5)); /* write '1' */
594 OUTL(bktr, BKTR_GPIO_DATA, INL(bktr, BKTR_GPIO_DATA) & ~(1<<5)); /* write '0' */
596 OUTL(bktr, BKTR_GPIO_DATA, INL(bktr, BKTR_GPIO_DATA) | (1<<5)); /* write '1' */
601 any_i2c_devices = check_for_i2c_devices(bktr);
606 bktr->card = cards[(card = BKTR_OVERRIDE_CARD)];
609 if (bktr->bt848_card != -1) {
610 bktr->card = cards[(card = bktr->bt848_card)];
625 if ((bktr->id==BROOKTREE_878) || (bktr->id==BROOKTREE_879)) {
627 eeprom_i2c_address = locate_eeprom_address(bktr);
634 bktr->card = cards[(card = CARD_UNKNOWN)];
635 bktr->card.eepromAddr = eeprom_i2c_address;
636 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
638 if(readEEProm(bktr, 0, 256, (u_char *) &eeprom))
639 printf("%s: error reading EEPROM\n", bktr_name(bktr));
650 printf("%s: subsystem 0x%04x 0x%04x\n", bktr_name(bktr),
654 bktr->card = cards[(card = CARD_AVER_MEDIA)];
655 bktr->card.eepromAddr = eeprom_i2c_address;
656 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
661 bktr->card = cards[(card = CARD_HAUPPAUGE)];
662 bktr->card.eepromAddr = eeprom_i2c_address;
663 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
669 bktr->card = cards[(card = CARD_FLYVIDEO)];
670 bktr->card.eepromAddr = eeprom_i2c_address;
671 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
676 bktr->card = cards[(card = CARD_STB)];
677 bktr->card.eepromAddr = eeprom_i2c_address;
678 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
683 bktr->card = cards[(card = CARD_ASKEY_DYNALINK_MAGIC_TVIEW)];
684 bktr->card.eepromAddr = eeprom_i2c_address;
685 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
693 bktr->card = cards[(card = CARD_LEADTEK)];
694 bktr->card.eepromAddr = eeprom_i2c_address;
695 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
700 bktr->card = cards[(card = CARD_MIRO)];
701 bktr->card.eepromAddr = eeprom_i2c_address;
702 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
709 bktr->card = cards[(card = CARD_TERRATVALUE)];
710 bktr->card.eepromAddr = eeprom_i2c_address;
711 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
716 bktr->card = cards[(card = CARD_TERRATVPLUS)];
717 bktr->card.eepromAddr = eeprom_i2c_address;
718 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
725 bktr_name(bktr), subsystem_vendor_id, subsystem_id);
730 bktr_name(bktr));
740 bktr->card = cards[(card = CARD_INTEL)];
741 bktr->card.eepromAddr = 0;
742 bktr->card.eepromSize = 0;
750 if ((bktr->id==BROOKTREE_848) ||
751 (bktr->id==BROOKTREE_848A) ||
752 (bktr->id==BROOKTREE_849A)) {
755 if ((status = i2cRead(bktr, PFC8582_RADDR)) != ABSENT) {
758 bktr->card = cards[(card = CARD_UNKNOWN)];
759 bktr->card.eepromAddr = PFC8582_WADDR;
760 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
761 readEEProm(bktr, 0, 128, (u_char *) &eeprom);
765 bktr->card = cards[(card = CARD_HAUPPAUGE)];
766 bktr->card.eepromAddr = PFC8582_WADDR;
767 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
774 bktr->card = cards[(card = CARD_OSPREY)];
775 bktr->card.eepromAddr = PFC8582_WADDR;
776 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
780 bktr_name(bktr));
781 printf("%s: %x %x %x %x\n", bktr_name(bktr),
786 if ((status = i2cRead(bktr, X24C01_RADDR)) != ABSENT) {
787 bktr->card = cards[(card = CARD_STB)];
788 bktr->card.eepromAddr = X24C01_WADDR;
789 bktr->card.eepromSize = (u_char)(128 / EEPROMBLOCKSIZE);
795 signCard(bktr, 1, 128, (u_char *) &probe_signature);
798 printf("%s: card signature: ", bktr_name(bktr));
819 bktr->card = cards[card = bt848_card_signature[i].card];
820 eeprom_i2c_address = locate_eeprom_address(bktr);
822 bktr->card.eepromAddr = eeprom_i2c_address;
823 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
825 bktr->card.eepromAddr = 0;
826 bktr->card.eepromSize = 0;
828 tuner_i2c_address = locate_tuner_address(bktr);
829 select_tuner(bktr, bt848_card_signature[i].tuner);
835 bktr->card = cards[(card = CARD_MIRO)];
840 eeprom_i2c_address = locate_eeprom_address(bktr);
842 bktr->card.eepromAddr = eeprom_i2c_address;
843 bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
845 bktr->card.eepromAddr = 0;
846 bktr->card.eepromSize = 0;
853 tuner_i2c_address = locate_tuner_address(bktr);
855 select_tuner(bktr, NO_TUNER);
860 select_tuner(bktr, BKTR_OVERRIDE_TUNER);
863 if (bktr->bt848_tuner != -1) {
864 select_tuner(bktr, bktr->bt848_tuner & 0xff);
870 select_tuner(bktr, NO_TUNER);
878 switch (((INL(bktr, BKTR_GPIO_DATA) >> 10)-1)&7) {
879 case 0: select_tuner(bktr, TEMIC_PAL); break;
880 case 1: select_tuner(bktr, PHILIPS_PAL); break;
881 case 2: select_tuner(bktr, PHILIPS_NTSC); break;
882 case 3: select_tuner(bktr, PHILIPS_SECAM); break;
883 case 4: select_tuner(bktr, NO_TUNER); break;
884 case 5: select_tuner(bktr, PHILIPS_PALI); break;
885 case 6: select_tuner(bktr, TEMIC_NTSC); break;
886 case 7: select_tuner(bktr, TEMIC_PALI); break;
949 if (bktr->card.eepromAddr != 0) {
959 readEEProm(bktr, 0, 128, (u_char *) &eeprom);
979 if (no_audio_mux) bktr->audio_mux_present = 0;
983 bktr_name(bktr),
997 select_tuner(bktr, PHILIPS_NTSC);
1002 select_tuner(bktr, PHILIPS_SECAM);
1007 select_tuner(bktr, PHILIPS_FR1236_SECAM);
1013 select_tuner(bktr, PHILIPS_FR1236_NTSC);
1021 select_tuner(bktr, PHILIPS_PALI);
1025 select_tuner(bktr, TEMIC_NTSC);
1029 select_tuner(bktr, TEMIC_PAL);
1033 select_tuner(bktr, TEMIC_PALI);
1037 select_tuner(bktr, PHILIPS_FR1216_PAL);
1041 bktr->msp_use_mono_source = 1;
1042 select_tuner(bktr, PHILIPS_FR1216_PAL);
1047 bktr_name(bktr), tuner_code);
1058 if (bktr->card.eepromAddr != 0) {
1087 readEEProm(bktr, 0, 128, (u_char *) &eeprom);
1097 select_tuner(bktr, tuner);
1104 select_tuner(bktr, tuner);
1110 select_tuner(bktr, tuner);
1115 bktr_name(bktr), tuner_make, tuner_format);
1121 select_tuner(bktr, PHILIPS_FR1216_PAL);
1123 select_tuner(bktr, PHILIPS_FR1236_NTSC);
1129 select_tuner(bktr, PHILIPS_PAL);
1142 if (i2cRead(bktr, 0xc1) != ABSENT) {
1143 select_tuner(bktr, TEMIC_NTSC);
1148 if (i2cRead(bktr, 0xc7) != ABSENT) {
1149 select_tuner(bktr, PHILIPS_NTSC);
1156 select_tuner(bktr, DEFAULT_TUNER);
1161 bktr->card.dbx = BKTR_OVERRIDE_DBX;
1170 if (i2cRead(bktr, TDA9850_RADDR) != ABSENT)
1171 bktr->card.dbx = 1;
1188 OUTL(bktr, BKTR_GPIO_OUT_EN, INL(bktr, BKTR_GPIO_OUT_EN) | (1<<5));
1189 OUTL(bktr, BKTR_GPIO_DATA, INL(bktr, BKTR_GPIO_DATA) | (1<<5)); /* write '1' */
1191 OUTL(bktr, BKTR_GPIO_DATA, INL(bktr, BKTR_GPIO_DATA) & ~(1<<5)); /* write '0' */
1193 OUTL(bktr, BKTR_GPIO_DATA, INL(bktr, BKTR_GPIO_DATA) | (1<<5)); /* write '1' */
1199 bktr->card.msp3400c = BKTR_OVERRIDE_MSP;
1208 if (i2cRead(bktr, MSP3400C_RADDR) != ABSENT) {
1209 bktr->card.msp3400c = 1;
1214 if (bktr->card.msp3400c) {
1215 bktr->msp_addr = MSP3400C_WADDR;
1216 msp_read_id(bktr);
1217 printf("%s: Detected a MSP%s at 0x%x\n", bktr_name(bktr),
1218 bktr->msp_version_string,
1219 bktr->msp_addr);
1224 if (i2cRead(bktr, DPL3518A_RADDR) != ABSENT) {
1225 bktr->card.dpl3518a = 1;
1228 if (bktr->card.dpl3518a) {
1229 bktr->dpl_addr = DPL3518A_WADDR;
1230 dpl_read_id(bktr);
1231 printf("%s: Detected a DPL%s at 0x%x\n", bktr_name(bktr),
1232 bktr->dpl_version_string,
1233 bktr->dpl_addr);
1240 bktr->remote_control = 0; /* initial value */
1243 if (i2cRead(bktr, HAUP_REMOTE_EXT_RADDR) != ABSENT)
1245 bktr->remote_control = 1;
1246 bktr->remote_control_addr = HAUP_REMOTE_EXT_RADDR;
1248 else if (i2cRead(bktr, HAUP_REMOTE_INT_RADDR) != ABSENT)
1250 bktr->remote_control = 1;
1251 bktr->remote_control_addr = HAUP_REMOTE_INT_RADDR;
1256 if (bktr->remote_control) {
1259 i2cRead(bktr, bktr->remote_control_addr);
1264 bktr->xtal_pll_mode = BT848_USE_PLL;
1268 bktr->xtal_pll_mode = BT848_USE_XTALS;
1272 bktr->xtal_pll_mode = BT848_USE_PLL;
1276 bktr->xtal_pll_mode = BT848_USE_PLL;
1283 if ((bktr->id==BROOKTREE_878 || bktr->id==BROOKTREE_879))
1284 bktr->xtal_pll_mode = BT848_USE_PLL;
1292 bktr->card.tuner_pllAddr = tuner_i2c_address;
1295 printf("%s: %s", bktr_name(bktr), bktr->card.name);
1296 if (bktr->card.tuner)
1297 printf(", %s tuner", bktr->card.tuner->name);
1298 if (bktr->card.dbx)
1300 if (bktr->card.msp3400c)
1302 if (bktr->card.dpl3518a)
1304 if (bktr->remote_control)