Lines Matching refs:p

664 	u_char *p, *q;  in parse_device()  local
666 p = (u_char *)tuple->TupleData; in parse_device()
667 q = p + tuple->TupleDataLen; in parse_device()
672 if (*p == 0xff) in parse_device()
674 device->dev[i].type = (*p >> 4); in parse_device()
675 device->dev[i].wp = (*p & 0x08) ? 1 : 0; in parse_device()
676 switch (*p & 0x07) { in parse_device()
693 if (++p == q) in parse_device()
695 device->dev[i].speed = SPEED_CVT(*p); in parse_device()
696 while (*p & 0x80) in parse_device()
697 if (++p == q) in parse_device()
704 if (++p == q) in parse_device()
706 if (*p == 0xff) in parse_device()
708 scale = *p & 7; in parse_device()
711 device->dev[i].size = ((*p >> 3) + 1) * (512 << (scale*2)); in parse_device()
713 if (++p == q) in parse_device()
723 u_char *p; in parse_checksum() local
726 p = (u_char *) tuple->TupleData; in parse_checksum()
727 csum->addr = tuple->CISOffset + get_unaligned_le16(p) - 2; in parse_checksum()
728 csum->len = get_unaligned_le16(p + 2); in parse_checksum()
729 csum->sum = *(p + 4); in parse_checksum()
745 u_char *p; in parse_longlink_mfc() local
748 p = (u_char *)tuple->TupleData; in parse_longlink_mfc()
750 link->nfn = *p; p++; in parse_longlink_mfc()
754 link->fn[i].space = *p; p++; in parse_longlink_mfc()
755 link->fn[i].addr = get_unaligned_le32(p); in parse_longlink_mfc()
756 p += 4; in parse_longlink_mfc()
762 static int parse_strings(u_char *p, u_char *q, int max, in parse_strings() argument
767 if (p == q) in parse_strings()
771 if (*p == 0xff) in parse_strings()
776 s[j++] = (*p == 0xff) ? '\0' : *p; in parse_strings()
777 if ((*p == '\0') || (*p == 0xff)) in parse_strings()
779 if (++p == q) in parse_strings()
782 if ((*p == 0xff) || (++p == q)) in parse_strings()
796 u_char *p, *q; in parse_vers_1() local
798 p = (u_char *)tuple->TupleData; in parse_vers_1()
799 q = p + tuple->TupleDataLen; in parse_vers_1()
801 vers_1->major = *p; p++; in parse_vers_1()
802 vers_1->minor = *p; p++; in parse_vers_1()
803 if (p >= q) in parse_vers_1()
806 return parse_strings(p, q, CISTPL_VERS_1_MAX_PROD_STRINGS, in parse_vers_1()
813 u_char *p, *q; in parse_altstr() local
815 p = (u_char *)tuple->TupleData; in parse_altstr()
816 q = p + tuple->TupleDataLen; in parse_altstr()
818 return parse_strings(p, q, CISTPL_MAX_ALTSTR_STRINGS, in parse_altstr()
825 u_char *p, *q; in parse_jedec() local
828 p = (u_char *)tuple->TupleData; in parse_jedec()
829 q = p + tuple->TupleDataLen; in parse_jedec()
832 if (p > q-2) in parse_jedec()
834 jedec->id[nid].mfr = p[0]; in parse_jedec()
835 jedec->id[nid].info = p[1]; in parse_jedec()
836 p += 2; in parse_jedec()
855 u_char *p; in parse_funcid() local
858 p = (u_char *)tuple->TupleData; in parse_funcid()
859 f->func = p[0]; in parse_funcid()
860 f->sysinit = p[1]; in parse_funcid()
867 u_char *p; in parse_funce() local
871 p = (u_char *)tuple->TupleData; in parse_funce()
872 f->type = p[0]; in parse_funce()
874 f->data[i-1] = p[i]; in parse_funce()
882 u_char *p; in parse_config() local
884 p = (u_char *)tuple->TupleData; in parse_config()
885 rasz = *p & 0x03; in parse_config()
886 rmsz = (*p & 0x3c) >> 2; in parse_config()
889 config->last_idx = *(++p); in parse_config()
890 p++; in parse_config()
893 config->base += p[i] << (8*i); in parse_config()
894 p += rasz+1; in parse_config()
898 config->rmask[i>>2] += p[i] << (8*(i%4)); in parse_config()
907 static u_char *parse_power(u_char *p, u_char *q, cistpl_power_t *pwr) in parse_power() argument
912 if (p == q) in parse_power()
914 pwr->present = *p; in parse_power()
916 p++; in parse_power()
919 if (p == q) in parse_power()
921 pwr->param[i] = POWER_CVT(*p); in parse_power()
922 scale = POWER_SCALE(*p); in parse_power()
923 while (*p & 0x80) { in parse_power()
924 if (++p == q) in parse_power()
926 if ((*p & 0x7f) < 100) in parse_power()
928 (*p & 0x7f) * scale / 100; in parse_power()
929 else if (*p == 0x7d) in parse_power()
931 else if (*p == 0x7e) in parse_power()
933 else if (*p == 0x7f) in parse_power()
938 p++; in parse_power()
940 return p; in parse_power()
944 static u_char *parse_timing(u_char *p, u_char *q, cistpl_timing_t *timing) in parse_timing() argument
948 if (p == q) in parse_timing()
950 scale = *p; in parse_timing()
952 if (++p == q) in parse_timing()
954 timing->wait = SPEED_CVT(*p); in parse_timing()
960 if (++p == q) in parse_timing()
962 timing->ready = SPEED_CVT(*p); in parse_timing()
968 if (++p == q) in parse_timing()
970 timing->reserved = SPEED_CVT(*p); in parse_timing()
974 p++; in parse_timing()
975 return p; in parse_timing()
979 static u_char *parse_io(u_char *p, u_char *q, cistpl_io_t *io) in parse_io() argument
983 if (p == q) in parse_io()
985 io->flags = *p; in parse_io()
987 if (!(*p & 0x80)) { in parse_io()
991 return p+1; in parse_io()
994 if (++p == q) in parse_io()
996 io->nwin = (*p & 0x0f) + 1; in parse_io()
997 bsz = (*p & 0x30) >> 4; in parse_io()
1000 lsz = (*p & 0xc0) >> 6; in parse_io()
1003 p++; in parse_io()
1008 for (j = 0; j < bsz; j++, p++) { in parse_io()
1009 if (p == q) in parse_io()
1011 io->win[i].base += *p << (j*8); in parse_io()
1013 for (j = 0; j < lsz; j++, p++) { in parse_io()
1014 if (p == q) in parse_io()
1016 io->win[i].len += *p << (j*8); in parse_io()
1019 return p; in parse_io()
1023 static u_char *parse_mem(u_char *p, u_char *q, cistpl_mem_t *mem) in parse_mem() argument
1028 if (p == q) in parse_mem()
1031 mem->nwin = (*p & 0x07) + 1; in parse_mem()
1032 lsz = (*p & 0x18) >> 3; in parse_mem()
1033 asz = (*p & 0x60) >> 5; in parse_mem()
1034 has_ha = (*p & 0x80); in parse_mem()
1035 if (++p == q) in parse_mem()
1040 for (j = 0; j < lsz; j++, p++) { in parse_mem()
1041 if (p == q) in parse_mem()
1043 len += *p << (j*8); in parse_mem()
1045 for (j = 0; j < asz; j++, p++) { in parse_mem()
1046 if (p == q) in parse_mem()
1048 ca += *p << (j*8); in parse_mem()
1051 for (j = 0; j < asz; j++, p++) { in parse_mem()
1052 if (p == q) in parse_mem()
1054 ha += *p << (j*8); in parse_mem()
1060 return p; in parse_mem()
1064 static u_char *parse_irq(u_char *p, u_char *q, cistpl_irq_t *irq) in parse_irq() argument
1066 if (p == q) in parse_irq()
1068 irq->IRQInfo1 = *p; p++; in parse_irq()
1070 if (p+2 > q) in parse_irq()
1072 irq->IRQInfo2 = (p[1]<<8) + p[0]; in parse_irq()
1073 p += 2; in parse_irq()
1075 return p; in parse_irq()
1082 u_char *p, *q, features; in parse_cftable_entry() local
1084 p = tuple->TupleData; in parse_cftable_entry()
1085 q = p + tuple->TupleDataLen; in parse_cftable_entry()
1086 entry->index = *p & 0x3f; in parse_cftable_entry()
1088 if (*p & 0x40) in parse_cftable_entry()
1090 if (*p & 0x80) { in parse_cftable_entry()
1091 if (++p == q) in parse_cftable_entry()
1093 if (*p & 0x10) in parse_cftable_entry()
1095 if (*p & 0x20) in parse_cftable_entry()
1097 if (*p & 0x40) in parse_cftable_entry()
1099 if (*p & 0x80) in parse_cftable_entry()
1101 entry->interface = *p & 0x0f; in parse_cftable_entry()
1106 if (++p == q) in parse_cftable_entry()
1108 features = *p; p++; in parse_cftable_entry()
1112 p = parse_power(p, q, &entry->vcc); in parse_cftable_entry()
1113 if (p == NULL) in parse_cftable_entry()
1118 p = parse_power(p, q, &entry->vpp1); in parse_cftable_entry()
1119 if (p == NULL) in parse_cftable_entry()
1124 p = parse_power(p, q, &entry->vpp2); in parse_cftable_entry()
1125 if (p == NULL) in parse_cftable_entry()
1132 p = parse_timing(p, q, &entry->timing); in parse_cftable_entry()
1133 if (p == NULL) in parse_cftable_entry()
1143 p = parse_io(p, q, &entry->io); in parse_cftable_entry()
1144 if (p == NULL) in parse_cftable_entry()
1151 p = parse_irq(p, q, &entry->irq); in parse_cftable_entry()
1152 if (p == NULL) in parse_cftable_entry()
1163 entry->mem.win[0].len = get_unaligned_le16(p) << 8; in parse_cftable_entry()
1166 p += 2; in parse_cftable_entry()
1167 if (p > q) in parse_cftable_entry()
1172 entry->mem.win[0].len = get_unaligned_le16(p) << 8; in parse_cftable_entry()
1173 entry->mem.win[0].card_addr = get_unaligned_le16(p + 2) << 8; in parse_cftable_entry()
1175 p += 4; in parse_cftable_entry()
1176 if (p > q) in parse_cftable_entry()
1180 p = parse_mem(p, q, &entry->mem); in parse_cftable_entry()
1181 if (p == NULL) in parse_cftable_entry()
1188 if (p == q) in parse_cftable_entry()
1190 entry->flags |= (*p << 8); in parse_cftable_entry()
1191 while (*p & 0x80) in parse_cftable_entry()
1192 if (++p == q) in parse_cftable_entry()
1194 p++; in parse_cftable_entry()
1197 entry->subtuples = q-p; in parse_cftable_entry()
1205 u_char *p, *q; in parse_device_geo() local
1208 p = (u_char *)tuple->TupleData; in parse_device_geo()
1209 q = p + tuple->TupleDataLen; in parse_device_geo()
1212 if (p > q-6) in parse_device_geo()
1214 geo->geo[n].buswidth = p[0]; in parse_device_geo()
1215 geo->geo[n].erase_block = 1 << (p[1]-1); in parse_device_geo()
1216 geo->geo[n].read_block = 1 << (p[2]-1); in parse_device_geo()
1217 geo->geo[n].write_block = 1 << (p[3]-1); in parse_device_geo()
1218 geo->geo[n].partition = 1 << (p[4]-1); in parse_device_geo()
1219 geo->geo[n].interleave = 1 << (p[5]-1); in parse_device_geo()
1220 p += 6; in parse_device_geo()
1229 u_char *p, *q; in parse_vers_2() local
1234 p = tuple->TupleData; in parse_vers_2()
1235 q = p + tuple->TupleDataLen; in parse_vers_2()
1237 v2->vers = p[0]; in parse_vers_2()
1238 v2->comply = p[1]; in parse_vers_2()
1239 v2->dindex = get_unaligned_le16(p + 2); in parse_vers_2()
1240 v2->vspec8 = p[6]; in parse_vers_2()
1241 v2->vspec9 = p[7]; in parse_vers_2()
1242 v2->nhdr = p[8]; in parse_vers_2()
1243 p += 9; in parse_vers_2()
1244 return parse_strings(p, q, 2, v2->str, &v2->vendor, NULL); in parse_vers_2()
1250 u_char *p, *q; in parse_org() local
1253 p = tuple->TupleData; in parse_org()
1254 q = p + tuple->TupleDataLen; in parse_org()
1255 if (p == q) in parse_org()
1257 org->data_org = *p; in parse_org()
1258 if (++p == q) in parse_org()
1261 org->desc[i] = *p; in parse_org()
1262 if (*p == '\0') in parse_org()
1264 if (++p == q) in parse_org()
1273 u_char *p; in parse_format() local
1278 p = tuple->TupleData; in parse_format()
1280 fmt->type = p[0]; in parse_format()
1281 fmt->edc = p[1]; in parse_format()
1282 fmt->offset = get_unaligned_le32(p + 2); in parse_format()
1283 fmt->length = get_unaligned_le32(p + 6); in parse_format()
1380 cisparse_t *p; in pccard_validate_cis() local
1402 p = kmalloc(sizeof(*p), GFP_KERNEL); in pccard_validate_cis()
1403 if (p == NULL) { in pccard_validate_cis()
1419 (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p)) || in pccard_validate_cis()
1420 (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p))) in pccard_validate_cis()
1426 if ((pccard_read_tuple(s, BIND_FN_ALL, CISTPL_MANFID, p) == 0) || in pccard_validate_cis()
1427 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_VERS_1, p) == 0) || in pccard_validate_cis()
1428 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_VERS_2, p) != -ENOSPC)) in pccard_validate_cis()
1467 kfree(p); in pccard_validate_cis()