Lines Matching +full:chip +full:- +full:id
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
70 u_int16_t pc_subvendor; /* card vendor ID */
71 u_int16_t pc_subdevice; /* card device ID, assigned by
73 u_int16_t pc_vendor; /* chip vendor ID */
74 u_int16_t pc_device; /* chip device ID, assigned by
75 chip vendor */
76 u_int8_t pc_class; /* chip PCI class */
77 u_int8_t pc_subclass; /* chip PCI subclass */
78 u_int8_t pc_progif; /* chip PCI programming interface */
79 u_int8_t pc_revid; /* chip revision ID */
88 u_int16_t pc_vendor; /* PCI Vendor ID */
89 u_int16_t pc_device; /* PCI Device ID */
132 error = securelevel_gt(td->td_ucred, 0);
175 && (match_buf->pc_sel.pc_domain !=
180 && (match_buf->pc_sel.pc_bus != matches[i].pc_sel.pc_bus))
184 && (match_buf->pc_sel.pc_dev != matches[i].pc_sel.pc_dev))
188 && (match_buf->pc_sel.pc_func != matches[i].pc_sel.pc_func))
192 && (match_buf->pc_vendor != matches[i].pc_vendor))
196 && (match_buf->pc_device != matches[i].pc_device))
200 && (match_buf->pc_class != matches[i].pc_class))
204 && (match_buf->pd_unit != matches[i].pd_unit))
208 && (strncmp(matches[i].pd_name, match_buf->pd_name,
209 sizeof(match_buf->pd_name)) != 0))
241 && (match_buf->pc_sel.pc_domain !=
246 && (match_buf->pc_sel.pc_bus != matches[i].pc_sel.pc_bus))
250 && (match_buf->pc_sel.pc_dev != matches[i].pc_sel.pc_dev))
254 && (match_buf->pc_sel.pc_func != matches[i].pc_sel.pc_func))
258 && (match_buf->pc_vendor != matches[i].pc_vendor))
262 && (match_buf->pc_device != matches[i].pc_device))
266 && (match_buf->pc_class != matches[i].pc_class))
270 && (match_buf->pd_unit != matches[i].pd_unit))
274 && (strncmp(matches[i].pd_name, match_buf->pd_name,
275 sizeof(match_buf->pd_name)) != 0))
310 u_int16_t pc_subvendor; /* card vendor ID */
311 u_int16_t pc_subdevice; /* card device ID, assigned by
313 u_int16_t pc_vendor; /* chip vendor ID */
314 u_int16_t pc_device; /* chip device ID, assigned by
315 chip vendor */
316 u_int8_t pc_class; /* chip PCI class */
317 u_int8_t pc_subclass; /* chip PCI subclass */
318 u_int8_t pc_progif; /* chip PCI programming interface */
319 u_int8_t pc_revid; /* chip revision ID */
328 u_int16_t pc_vendor; /* PCI Vendor ID */
329 u_int16_t pc_device; /* PCI Device ID */
345 uint16_t pc_subvendor; /* card vendor ID */
346 uint16_t pc_subdevice; /* card device ID, assigned by
348 uint16_t pc_vendor; /* chip vendor ID */
349 uint16_t pc_device; /* chip device ID, assigned by
350 chip vendor */
351 uint8_t pc_class; /* chip PCI class */
352 uint8_t pc_subclass; /* chip PCI subclass */
353 uint8_t pc_progif; /* chip PCI programming interface */
354 uint8_t pc_revid; /* chip revision ID */
363 uint16_t pc_vendor; /* PCI Vendor ID */
364 uint16_t pc_device; /* PCI Device ID */
386 if (match_buf->pc_sel.pc_domain != 0)
401 && (match_buf->pc_sel.pc_bus != matches[i].pc_sel.pc_bus))
405 && (match_buf->pc_sel.pc_dev != matches[i].pc_sel.pc_dev))
409 && (match_buf->pc_sel.pc_func != matches[i].pc_sel.pc_func))
413 && (match_buf->pc_vendor != matches[i].pc_vendor))
417 && (match_buf->pc_device != matches[i].pc_device))
421 && (match_buf->pc_class != matches[i].pc_class))
425 && (match_buf->pd_unit != matches[i].pd_unit))
429 && (strncmp(matches[i].pd_name, match_buf->pd_name,
430 sizeof(match_buf->pd_name)) != 0))
450 if (match_buf->pc_sel.pc_domain != 0)
465 (match_buf->pc_sel.pc_bus != matches[i].pc_sel.pc_bus))
469 (match_buf->pc_sel.pc_dev != matches[i].pc_sel.pc_dev))
473 (match_buf->pc_sel.pc_func != matches[i].pc_sel.pc_func))
477 (match_buf->pc_vendor != matches[i].pc_vendor))
481 (match_buf->pc_device != matches[i].pc_device))
485 (match_buf->pc_class != matches[i].pc_class))
489 ((u_int32_t)match_buf->pd_unit != matches[i].pd_unit))
493 (strncmp(matches[i].pd_name, match_buf->pd_name,
494 sizeof(match_buf->pd_name)) != 0))
567 if (vpd->vpd_reg == 0 || vpd->vpd_ident == NULL)
572 * identifier element is always present followed by the read-only
573 * and read-write keywords.
575 len = sizeof(struct pci_vpd_element) + strlen(vpd->vpd_ident);
576 for (i = 0; i < vpd->vpd_rocnt; i++)
577 len += sizeof(struct pci_vpd_element) + vpd->vpd_ros[i].len;
578 for (i = 0; i < vpd->vpd_wcnt; i++)
579 len += sizeof(struct pci_vpd_element) + vpd->vpd_w[i].len;
581 if (lvio->plvi_len == 0) {
582 lvio->plvi_len = len;
585 if (lvio->plvi_len < len) {
586 lvio->plvi_len = len;
594 datalen = strlen(vpd->vpd_ident);
596 vpd_user = lvio->plvi_data;
604 error = copyout(vpd->vpd_ident, vpd_user->pve_data, datalen);
609 for (i = 0; i < vpd->vpd_rocnt; i++) {
610 vpd_element.pve_keyword[0] = vpd->vpd_ros[i].keyword[0];
611 vpd_element.pve_keyword[1] = vpd->vpd_ros[i].keyword[1];
612 vpd_element.pve_datalen = vpd->vpd_ros[i].len;
616 error = copyout(vpd->vpd_ros[i].value, vpd_user->pve_data,
617 vpd->vpd_ros[i].len);
623 for (i = 0; i < vpd->vpd_wcnt; i++) {
624 vpd_element.pve_keyword[0] = vpd->vpd_w[i].keyword[0];
625 vpd_element.pve_keyword[1] = vpd->vpd_w[i].keyword[1];
626 vpd_element.pve_datalen = vpd->vpd_w[i].len;
630 error = copyout(vpd->vpd_w[i].value, vpd_user->pve_data,
631 vpd->vpd_w[i].len);
636 KASSERT((char *)vpd_user - (char *)lvio->plvi_data == len,
638 lvio->plvi_len = len;
713 cio->pat_buf_len = cio32->pat_buf_len;
714 cio->num_patterns = cio32->num_patterns;
715 cio->patterns = (void *)(uintptr_t)cio32->patterns;
716 cio->match_buf_len = cio32->match_buf_len;
717 cio->num_matches = cio32->num_matches;
718 cio->matches = (void *)(uintptr_t)cio32->matches;
719 cio->offset = cio32->offset;
720 cio->generation = cio32->generation;
721 cio->status = cio32->status;
746 d_cio->status = cio->status;
747 d_cio->generation = cio->generation;
748 d_cio->offset = cio->offset;
749 d_cio->num_matches = cio->num_matches;
759 cio32->status = cio->status;
760 cio32->generation = cio->generation;
761 cio32->offset = cio->offset;
762 cio32->num_matches = cio->num_matches;
781 pcup->pc = *pcp;
786 pcup->pc32.pc_sel = pcp->pc_sel;
787 pcup->pc32.pc_hdr = pcp->pc_hdr;
788 pcup->pc32.pc_subvendor = pcp->pc_subvendor;
789 pcup->pc32.pc_subdevice = pcp->pc_subdevice;
790 pcup->pc32.pc_vendor = pcp->pc_vendor;
791 pcup->pc32.pc_device = pcp->pc_device;
792 pcup->pc32.pc_class = pcp->pc_class;
793 pcup->pc32.pc_subclass = pcp->pc_subclass;
794 pcup->pc32.pc_progif = pcp->pc_progif;
795 pcup->pc32.pc_revid = pcp->pc_revid;
796 strlcpy(pcup->pc32.pd_name, pcp->pd_name,
797 sizeof(pcup->pc32.pd_name));
798 pcup->pc32.pd_unit = (uint32_t)pcp->pd_unit;
805 pcup->pco32.pc_sel.pc_bus = pcp->pc_sel.pc_bus;
806 pcup->pco32.pc_sel.pc_dev = pcp->pc_sel.pc_dev;
807 pcup->pco32.pc_sel.pc_func = pcp->pc_sel.pc_func;
808 pcup->pco32.pc_hdr = pcp->pc_hdr;
809 pcup->pco32.pc_subvendor = pcp->pc_subvendor;
810 pcup->pco32.pc_subdevice = pcp->pc_subdevice;
811 pcup->pco32.pc_vendor = pcp->pc_vendor;
812 pcup->pco32.pc_device = pcp->pc_device;
813 pcup->pco32.pc_class = pcp->pc_class;
814 pcup->pco32.pc_subclass = pcp->pc_subclass;
815 pcup->pco32.pc_progif = pcp->pc_progif;
816 pcup->pco32.pc_revid = pcp->pc_revid;
817 strlcpy(pcup->pco32.pd_name, pcp->pd_name,
818 sizeof(pcup->pco32.pd_name));
819 pcup->pco32.pd_unit = (uint32_t)pcp->pd_unit;
824 pcup->pco.pc_sel.pc_bus = pcp->pc_sel.pc_bus;
825 pcup->pco.pc_sel.pc_dev = pcp->pc_sel.pc_dev;
826 pcup->pco.pc_sel.pc_func = pcp->pc_sel.pc_func;
827 pcup->pco.pc_hdr = pcp->pc_hdr;
828 pcup->pco.pc_subvendor = pcp->pc_subvendor;
829 pcup->pco.pc_subdevice = pcp->pc_subdevice;
830 pcup->pco.pc_vendor = pcp->pc_vendor;
831 pcup->pco.pc_device = pcp->pc_device;
832 pcup->pco.pc_class = pcp->pc_class;
833 pcup->pco.pc_subclass = pcp->pc_subclass;
834 pcup->pco.pc_progif = pcp->pc_progif;
835 pcup->pco.pc_revid = pcp->pc_revid;
836 strlcpy(pcup->pco.pd_name, pcp->pd_name,
837 sizeof(pcup->pco.pd_name));
838 pcup->pco.pd_unit = pcp->pd_unit;
864 map = &td->td_proc->p_vmspace->vm_map;
865 if ((pbm->pbm_flags & ~(PCIIO_BAR_MMAP_FIXED | PCIIO_BAR_MMAP_EXCL |
867 pbm->pbm_memattr != (vm_memattr_t)pbm->pbm_memattr ||
868 !pmap_is_valid_memattr(map->pmap, pbm->pbm_memattr))
872 pm = pci_find_bar(pcidev, pbm->pbm_reg);
877 if (!PCI_BAR_MEM(pm->pm_value))
880 pm->pm_value & PCIM_BAR_MEM_BASE, &membase);
885 plen = round_page(membase + ((pci_addr_t)1 << pm->pm_size)) -
887 prot = VM_PROT_READ | (((pbm->pbm_flags & PCIIO_BAR_MMAP_RW) != 0) ?
895 obj = vm_pager_allocate(OBJT_SG, sg, plen, prot, 0, td->td_ucred);
900 obj->memattr = pbm->pbm_memattr;
903 if ((pbm->pbm_flags & PCIIO_BAR_MMAP_FIXED) != 0) {
904 addr = (uintptr_t)pbm->pbm_map_base;
907 if ((pbm->pbm_flags & PCIIO_BAR_MMAP_EXCL) != 0)
915 pbm->pbm_map_base = (void *)addr;
916 pbm->pbm_map_length = plen;
917 pbm->pbm_bar_off = membase - pbase;
918 pbm->pbm_bar_length = (pci_addr_t)1 << pm->pm_size;
933 if (pbi->pbi_op != PCIBARIO_READ &&
934 pbi->pbi_op != PCIBARIO_WRITE)
937 bar = PCIR_BAR(pbi->pbi_bar);
942 offset = pbi->pbi_offset;
943 width = pbi->pbi_width;
946 ((pci_addr_t)1 << pm->pm_size) < offset + width)
949 type = PCI_BAR_MEM(pm->pm_value) ? SYS_RES_MEMORY : SYS_RES_IOPORT;
961 switch (pbi->pbi_op) {
963 switch (pbi->pbi_width) {
965 pbi->pbi_value = bus_read_1(res, offset);
968 pbi->pbi_value = bus_read_2(res, offset);
971 pbi->pbi_value = bus_read_4(res, offset);
975 pbi->pbi_value = bus_read_8(res, offset);
984 switch (pbi->pbi_width) {
986 bus_write_1(res, offset, pbi->pbi_value);
989 bus_write_2(res, offset, pbi->pbi_value);
992 bus_write_4(res, offset, pbi->pbi_value);
996 bus_write_8(res, offset, pbi->pbi_value);
1037 * Interpret read-only opened /dev/pci as a promise that no
1039 * including side-effects due to reading devices registers.
1085 cio->num_matches = 0;
1093 if ((cio->offset != 0)
1094 && (cio->generation != pci_generation)){
1095 cio->status = PCI_GETCONF_LIST_CHANGED;
1104 if (cio->offset >= pci_numdevs) {
1105 cio->status = PCI_GETCONF_LAST_DEVICE;
1120 iolen = min(cio->match_buf_len - (cio->match_buf_len % confsz),
1133 if ((cio->num_patterns > 0) && (cio->num_patterns < pci_numdevs)
1134 && (cio->pat_buf_len > 0)) {
1148 if (cio->num_patterns * pci_match_conf_size(cmd) !=
1149 cio->pat_buf_len) {
1151 cio->status = PCI_GETCONF_ERROR;
1159 pattern_buf = malloc(cio->pat_buf_len, M_TEMP,
1161 error = copyin(cio->patterns, pattern_buf,
1162 cio->pat_buf_len);
1167 num_patterns = cio->num_patterns;
1168 } else if ((cio->num_patterns > 0)
1169 || (cio->pat_buf_len > 0)) {
1173 cio->status = PCI_GETCONF_ERROR;
1182 for (cio->num_matches = 0, i = 0,
1186 if (i < cio->offset)
1191 if (dinfo->cfg.dev)
1192 name = device_get_name(dinfo->cfg.dev);
1194 strncpy(dinfo->conf.pd_name, name,
1195 sizeof(dinfo->conf.pd_name));
1196 dinfo->conf.pd_name[PCI_MAXNAMELEN] = 0;
1197 dinfo->conf.pd_unit =
1198 device_get_unit(dinfo->cfg.dev);
1200 dinfo->conf.pd_name[0] = '\0';
1201 dinfo->conf.pd_unit = 0;
1206 &dinfo->conf) == 0) {
1215 if (cio->num_matches >= ionum) {
1220 pci_conf_for_copyout(&dinfo->conf, &pcu, cmd);
1222 (caddr_t)cio->matches +
1223 confsz * cio->num_matches, confsz);
1226 cio->num_matches++;
1234 cio->offset = i;
1240 cio->generation = pci_generation;
1249 cio->status = PCI_GETCONF_LAST_DEVICE;
1251 cio->status = PCI_GETCONF_MORE_DEVS;
1265 iodata.pi_sel.pc_bus = io_freebsd6->pi_sel.pc_bus;
1266 iodata.pi_sel.pc_dev = io_freebsd6->pi_sel.pc_dev;
1267 iodata.pi_sel.pc_func = io_freebsd6->pi_sel.pc_func;
1268 iodata.pi_reg = io_freebsd6->pi_reg;
1269 iodata.pi_width = io_freebsd6->pi_width;
1270 iodata.pi_data = io_freebsd6->pi_data;
1277 switch(io->pi_width) {
1282 if (io->pi_reg < 0 ||
1283 io->pi_reg & (io->pi_width - 1)) {
1288 * Assume that the user-level bus number is
1293 pcidev = pci_find_dbsf(io->pi_sel.pc_domain,
1294 io->pi_sel.pc_bus, io->pi_sel.pc_dev,
1295 io->pi_sel.pc_func);
1303 io->pi_reg,
1304 io->pi_data,
1305 io->pi_width);
1308 io_freebsd6->pi_data =
1310 io->pi_reg,
1311 io->pi_width);
1314 io->pi_data =
1316 io->pi_reg,
1317 io->pi_width);
1322 io_freebsd6->pi_data = -1;
1339 * Assume that the user-level bus number is
1342 pcidev = pci_find_dbsf(bio->pbi_sel.pc_domain,
1343 bio->pbi_sel.pc_bus, bio->pbi_sel.pc_dev,
1344 bio->pbi_sel.pc_func);
1349 pm = pci_find_bar(pcidev, bio->pbi_reg);
1354 bio->pbi_base = pm->pm_value;
1355 bio->pbi_length = (pci_addr_t)1 << pm->pm_size;
1356 bio->pbi_enabled = pci_bar_enabled(pcidev, pm);
1362 pcidev = pci_find_dbsf(io->pi_sel.pc_domain, io->pi_sel.pc_bus,
1363 io->pi_sel.pc_dev, io->pi_sel.pc_func);
1365 io->pi_data = device_is_attached(pcidev);
1373 * Assume that the user-level bus number is
1376 pcidev = pci_find_dbsf(lvio->plvi_sel.pc_domain,
1377 lvio->plvi_sel.pc_bus, lvio->plvi_sel.pc_dev,
1378 lvio->plvi_sel.pc_func);
1389 (pbm->pbm_flags & PCIIO_BAR_MMAP_RW) != 0) {
1393 pcidev = pci_find_dbsf(pbm->pbm_sel.pc_domain,
1394 pbm->pbm_sel.pc_bus, pbm->pbm_sel.pc_dev,
1395 pbm->pbm_sel.pc_func);
1402 pcidev = pci_find_dbsf(pbi->pbi_sel.pc_domain,
1403 pbi->pbi_sel.pc_bus, pbi->pbi_sel.pc_dev,
1404 pbi->pbi_sel.pc_func);