Lines Matching refs:p
666 u_char *p, *q; in parse_device() local
668 p = (u_char *)tuple->TupleData; in parse_device()
669 q = p + tuple->TupleDataLen; in parse_device()
674 if (*p == 0xff) in parse_device()
676 device->dev[i].type = (*p >> 4); in parse_device()
677 device->dev[i].wp = (*p & 0x08) ? 1 : 0; in parse_device()
678 switch (*p & 0x07) { in parse_device()
695 if (++p == q) in parse_device()
697 device->dev[i].speed = SPEED_CVT(*p); in parse_device()
698 while (*p & 0x80) in parse_device()
699 if (++p == q) in parse_device()
706 if (++p == q) in parse_device()
708 if (*p == 0xff) in parse_device()
710 scale = *p & 7; in parse_device()
713 device->dev[i].size = ((*p >> 3) + 1) * (512 << (scale*2)); in parse_device()
715 if (++p == q) in parse_device()
725 u_char *p; in parse_checksum() local
728 p = (u_char *) tuple->TupleData; in parse_checksum()
729 csum->addr = tuple->CISOffset + get_unaligned_le16(p) - 2; in parse_checksum()
730 csum->len = get_unaligned_le16(p + 2); in parse_checksum()
731 csum->sum = *(p + 4); in parse_checksum()
747 u_char *p; in parse_longlink_mfc() local
750 p = (u_char *)tuple->TupleData; in parse_longlink_mfc()
752 link->nfn = *p; p++; in parse_longlink_mfc()
756 link->fn[i].space = *p; p++; in parse_longlink_mfc()
757 link->fn[i].addr = get_unaligned_le32(p); in parse_longlink_mfc()
758 p += 4; in parse_longlink_mfc()
764 static int parse_strings(u_char *p, u_char *q, int max, in parse_strings() argument
769 if (p == q) in parse_strings()
773 if (*p == 0xff) in parse_strings()
778 s[j++] = (*p == 0xff) ? '\0' : *p; in parse_strings()
779 if ((*p == '\0') || (*p == 0xff)) in parse_strings()
781 if (++p == q) in parse_strings()
784 if ((*p == 0xff) || (++p == q)) in parse_strings()
798 u_char *p, *q; in parse_vers_1() local
800 p = (u_char *)tuple->TupleData; in parse_vers_1()
801 q = p + tuple->TupleDataLen; in parse_vers_1()
803 vers_1->major = *p; p++; in parse_vers_1()
804 vers_1->minor = *p; p++; in parse_vers_1()
805 if (p >= q) in parse_vers_1()
808 return parse_strings(p, q, CISTPL_VERS_1_MAX_PROD_STRINGS, in parse_vers_1()
815 u_char *p, *q; in parse_altstr() local
817 p = (u_char *)tuple->TupleData; in parse_altstr()
818 q = p + tuple->TupleDataLen; in parse_altstr()
820 return parse_strings(p, q, CISTPL_MAX_ALTSTR_STRINGS, in parse_altstr()
827 u_char *p, *q; in parse_jedec() local
830 p = (u_char *)tuple->TupleData; in parse_jedec()
831 q = p + tuple->TupleDataLen; in parse_jedec()
834 if (p > q-2) in parse_jedec()
836 jedec->id[nid].mfr = p[0]; in parse_jedec()
837 jedec->id[nid].info = p[1]; in parse_jedec()
838 p += 2; in parse_jedec()
857 u_char *p; in parse_funcid() local
860 p = (u_char *)tuple->TupleData; in parse_funcid()
861 f->func = p[0]; in parse_funcid()
862 f->sysinit = p[1]; in parse_funcid()
869 u_char *p; in parse_funce() local
873 p = (u_char *)tuple->TupleData; in parse_funce()
874 f->type = p[0]; in parse_funce()
876 f->data[i-1] = p[i]; in parse_funce()
884 u_char *p; in parse_config() local
886 p = (u_char *)tuple->TupleData; in parse_config()
887 rasz = *p & 0x03; in parse_config()
888 rmsz = (*p & 0x3c) >> 2; in parse_config()
891 config->last_idx = *(++p); in parse_config()
892 p++; in parse_config()
895 config->base += p[i] << (8*i); in parse_config()
896 p += rasz+1; in parse_config()
900 config->rmask[i>>2] += p[i] << (8*(i%4)); in parse_config()
909 static u_char *parse_power(u_char *p, u_char *q, cistpl_power_t *pwr) in parse_power() argument
914 if (p == q) in parse_power()
916 pwr->present = *p; in parse_power()
918 p++; in parse_power()
921 if (p == q) in parse_power()
923 pwr->param[i] = POWER_CVT(*p); in parse_power()
924 scale = POWER_SCALE(*p); in parse_power()
925 while (*p & 0x80) { in parse_power()
926 if (++p == q) in parse_power()
928 if ((*p & 0x7f) < 100) in parse_power()
930 (*p & 0x7f) * scale / 100; in parse_power()
931 else if (*p == 0x7d) in parse_power()
933 else if (*p == 0x7e) in parse_power()
935 else if (*p == 0x7f) in parse_power()
940 p++; in parse_power()
942 return p; in parse_power()
946 static u_char *parse_timing(u_char *p, u_char *q, cistpl_timing_t *timing) in parse_timing() argument
950 if (p == q) in parse_timing()
952 scale = *p; in parse_timing()
954 if (++p == q) in parse_timing()
956 timing->wait = SPEED_CVT(*p); in parse_timing()
962 if (++p == q) in parse_timing()
964 timing->ready = SPEED_CVT(*p); in parse_timing()
970 if (++p == q) in parse_timing()
972 timing->reserved = SPEED_CVT(*p); in parse_timing()
976 p++; in parse_timing()
977 return p; in parse_timing()
981 static u_char *parse_io(u_char *p, u_char *q, cistpl_io_t *io) in parse_io() argument
985 if (p == q) in parse_io()
987 io->flags = *p; in parse_io()
989 if (!(*p & 0x80)) { in parse_io()
993 return p+1; in parse_io()
996 if (++p == q) in parse_io()
998 io->nwin = (*p & 0x0f) + 1; in parse_io()
999 bsz = (*p & 0x30) >> 4; in parse_io()
1002 lsz = (*p & 0xc0) >> 6; in parse_io()
1005 p++; in parse_io()
1010 for (j = 0; j < bsz; j++, p++) { in parse_io()
1011 if (p == q) in parse_io()
1013 io->win[i].base += *p << (j*8); in parse_io()
1015 for (j = 0; j < lsz; j++, p++) { in parse_io()
1016 if (p == q) in parse_io()
1018 io->win[i].len += *p << (j*8); in parse_io()
1021 return p; in parse_io()
1025 static u_char *parse_mem(u_char *p, u_char *q, cistpl_mem_t *mem) in parse_mem() argument
1030 if (p == q) in parse_mem()
1033 mem->nwin = (*p & 0x07) + 1; in parse_mem()
1034 lsz = (*p & 0x18) >> 3; in parse_mem()
1035 asz = (*p & 0x60) >> 5; in parse_mem()
1036 has_ha = (*p & 0x80); in parse_mem()
1037 if (++p == q) in parse_mem()
1042 for (j = 0; j < lsz; j++, p++) { in parse_mem()
1043 if (p == q) in parse_mem()
1045 len += *p << (j*8); in parse_mem()
1047 for (j = 0; j < asz; j++, p++) { in parse_mem()
1048 if (p == q) in parse_mem()
1050 ca += *p << (j*8); in parse_mem()
1053 for (j = 0; j < asz; j++, p++) { in parse_mem()
1054 if (p == q) in parse_mem()
1056 ha += *p << (j*8); in parse_mem()
1062 return p; in parse_mem()
1066 static u_char *parse_irq(u_char *p, u_char *q, cistpl_irq_t *irq) in parse_irq() argument
1068 if (p == q) in parse_irq()
1070 irq->IRQInfo1 = *p; p++; in parse_irq()
1072 if (p+2 > q) in parse_irq()
1074 irq->IRQInfo2 = (p[1]<<8) + p[0]; in parse_irq()
1075 p += 2; in parse_irq()
1077 return p; in parse_irq()
1084 u_char *p, *q, features; in parse_cftable_entry() local
1086 p = tuple->TupleData; in parse_cftable_entry()
1087 q = p + tuple->TupleDataLen; in parse_cftable_entry()
1088 entry->index = *p & 0x3f; in parse_cftable_entry()
1090 if (*p & 0x40) in parse_cftable_entry()
1092 if (*p & 0x80) { in parse_cftable_entry()
1093 if (++p == q) in parse_cftable_entry()
1095 if (*p & 0x10) in parse_cftable_entry()
1097 if (*p & 0x20) in parse_cftable_entry()
1099 if (*p & 0x40) in parse_cftable_entry()
1101 if (*p & 0x80) in parse_cftable_entry()
1103 entry->interface = *p & 0x0f; in parse_cftable_entry()
1108 if (++p == q) in parse_cftable_entry()
1110 features = *p; p++; in parse_cftable_entry()
1114 p = parse_power(p, q, &entry->vcc); in parse_cftable_entry()
1115 if (p == NULL) in parse_cftable_entry()
1120 p = parse_power(p, q, &entry->vpp1); in parse_cftable_entry()
1121 if (p == NULL) in parse_cftable_entry()
1126 p = parse_power(p, q, &entry->vpp2); in parse_cftable_entry()
1127 if (p == NULL) in parse_cftable_entry()
1134 p = parse_timing(p, q, &entry->timing); in parse_cftable_entry()
1135 if (p == NULL) in parse_cftable_entry()
1145 p = parse_io(p, q, &entry->io); in parse_cftable_entry()
1146 if (p == NULL) in parse_cftable_entry()
1153 p = parse_irq(p, q, &entry->irq); in parse_cftable_entry()
1154 if (p == NULL) in parse_cftable_entry()
1165 entry->mem.win[0].len = get_unaligned_le16(p) << 8; in parse_cftable_entry()
1168 p += 2; in parse_cftable_entry()
1169 if (p > q) in parse_cftable_entry()
1174 entry->mem.win[0].len = get_unaligned_le16(p) << 8; in parse_cftable_entry()
1175 entry->mem.win[0].card_addr = get_unaligned_le16(p + 2) << 8; in parse_cftable_entry()
1177 p += 4; in parse_cftable_entry()
1178 if (p > q) in parse_cftable_entry()
1182 p = parse_mem(p, q, &entry->mem); in parse_cftable_entry()
1183 if (p == NULL) in parse_cftable_entry()
1190 if (p == q) in parse_cftable_entry()
1192 entry->flags |= (*p << 8); in parse_cftable_entry()
1193 while (*p & 0x80) in parse_cftable_entry()
1194 if (++p == q) in parse_cftable_entry()
1196 p++; in parse_cftable_entry()
1199 entry->subtuples = q-p; in parse_cftable_entry()
1207 u_char *p, *q; in parse_device_geo() local
1210 p = (u_char *)tuple->TupleData; in parse_device_geo()
1211 q = p + tuple->TupleDataLen; in parse_device_geo()
1214 if (p > q-6) in parse_device_geo()
1216 geo->geo[n].buswidth = p[0]; in parse_device_geo()
1217 geo->geo[n].erase_block = 1 << (p[1]-1); in parse_device_geo()
1218 geo->geo[n].read_block = 1 << (p[2]-1); in parse_device_geo()
1219 geo->geo[n].write_block = 1 << (p[3]-1); in parse_device_geo()
1220 geo->geo[n].partition = 1 << (p[4]-1); in parse_device_geo()
1221 geo->geo[n].interleave = 1 << (p[5]-1); in parse_device_geo()
1222 p += 6; in parse_device_geo()
1231 u_char *p, *q; in parse_vers_2() local
1236 p = tuple->TupleData; in parse_vers_2()
1237 q = p + tuple->TupleDataLen; in parse_vers_2()
1239 v2->vers = p[0]; in parse_vers_2()
1240 v2->comply = p[1]; in parse_vers_2()
1241 v2->dindex = get_unaligned_le16(p + 2); in parse_vers_2()
1242 v2->vspec8 = p[6]; in parse_vers_2()
1243 v2->vspec9 = p[7]; in parse_vers_2()
1244 v2->nhdr = p[8]; in parse_vers_2()
1245 p += 9; in parse_vers_2()
1246 return parse_strings(p, q, 2, v2->str, &v2->vendor, NULL); in parse_vers_2()
1252 u_char *p, *q; in parse_org() local
1255 p = tuple->TupleData; in parse_org()
1256 q = p + tuple->TupleDataLen; in parse_org()
1257 if (p == q) in parse_org()
1259 org->data_org = *p; in parse_org()
1260 if (++p == q) in parse_org()
1263 org->desc[i] = *p; in parse_org()
1264 if (*p == '\0') in parse_org()
1266 if (++p == q) in parse_org()
1275 u_char *p; in parse_format() local
1280 p = tuple->TupleData; in parse_format()
1282 fmt->type = p[0]; in parse_format()
1283 fmt->edc = p[1]; in parse_format()
1284 fmt->offset = get_unaligned_le32(p + 2); in parse_format()
1285 fmt->length = get_unaligned_le32(p + 6); in parse_format()
1382 cisparse_t *p; in pccard_validate_cis() local
1404 p = kmalloc(sizeof(*p), GFP_KERNEL); in pccard_validate_cis()
1405 if (p == NULL) { in pccard_validate_cis()
1421 (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p)) || in pccard_validate_cis()
1422 (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p))) in pccard_validate_cis()
1428 if ((pccard_read_tuple(s, BIND_FN_ALL, CISTPL_MANFID, p) == 0) || in pccard_validate_cis()
1429 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_VERS_1, p) == 0) || in pccard_validate_cis()
1430 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_VERS_2, p) != -ENOSPC)) in pccard_validate_cis()
1479 kfree(p); in pccard_validate_cis()