Lines Matching +full:no +full:- +full:ct
19 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
112 sc->sc_dev = self; in cardbusattach()
114 sc->sc_bus = cba->cba_bus; in cardbusattach()
115 sc->sc_cacheline = cba->cba_cacheline; in cardbusattach()
116 sc->sc_max_lattimer = MIN(0xf8, cba->cba_max_lattimer); in cardbusattach()
119 aprint_normal(": bus %d", sc->sc_bus); in cardbusattach()
122 sc->sc_cacheline, sc->sc_max_lattimer); in cardbusattach()
125 sc->sc_iot = cba->cba_iot; /* CardBus I/O space tag */ in cardbusattach()
126 sc->sc_memt = cba->cba_memt; /* CardBus MEM space tag */ in cardbusattach()
127 sc->sc_dmat = cba->cba_dmat; /* DMA tag */ in cardbusattach()
128 sc->sc_cc = cba->cba_cc; in cardbusattach()
129 sc->sc_cf = cba->cba_cf; in cardbusattach()
131 sc->sc_rbus_iot = cba->cba_rbus_iot; in cardbusattach()
132 sc->sc_rbus_memt = cba->cba_rbus_memt; in cardbusattach()
154 struct cardbus_softc *sc = ca->ca_ct->ct_sc; in cardbus_read_tuples()
155 cardbus_chipset_tag_t cc = ca->ca_ct->ct_cc; in cardbus_read_tuples()
156 cardbus_function_tag_t cf = ca->ca_ct->ct_cf; in cardbus_read_tuples()
157 pcitag_t tag = ca->ca_tag; in cardbus_read_tuples()
176 device_xname(sc->sc_dev))); in cardbus_read_tuples()
178 u_int32_t e = (*cf->cardbus_conf_read)(cc, tag, i); in cardbus_read_tuples()
201 device_xname(sc->sc_dev))); in cardbus_read_tuples()
205 device_xname(sc->sc_dev), cardbus_space - 1)); in cardbus_read_tuples()
213 if (Cardbus_mapreg_map(ca->ca_ct, reg, in cardbus_read_tuples()
216 aprint_error_dev(sc->sc_dev, "failed to map memory\n"); in cardbus_read_tuples()
219 aprint_debug_dev(sc->sc_dev, "mapped %ju bytes at 0x%jx\n", in cardbus_read_tuples()
243 if (p->rom_image == in cardbus_read_tuples()
245 bus_space_read_region_1(p->romt, in cardbus_read_tuples()
246 p->romh, CARDBUS_CIS_ADDR(cis_ptr), in cardbus_read_tuples()
247 tuples, MIN(p->image_size, len)); in cardbus_read_tuples()
267 mlen = MIN(bar_size - MIN(bar_size, cis_ptr), len); in cardbus_read_tuples()
296 Cardbus_mapreg_unmap(ca->ca_ct, reg, bar_tag, bar_memh, in cardbus_read_tuples()
302 panic("%s: bad CIS space (%d)", device_xname(sc->sc_dev), in cardbus_read_tuples()
323 cis->manufacturer = tuple[2] | (tuple[3] << 8); in parse_tuple()
324 cis->product = tuple[4] | (tuple[5] << 8); in parse_tuple()
328 memcpy(cis->cis1_info_buf, tuple + 2, tuple[1]); in parse_tuple()
330 p = cis->cis1_info_buf + 2; in parse_tuple()
332 sizeof(cis->cis1_info) / sizeof(cis->cis1_info[0])) { in parse_tuple()
333 if (p >= cis->cis1_info_buf + tuple[1] || *p == '\xff') in parse_tuple()
335 cis->cis1_info[i++] = p; in parse_tuple()
354 bar_index--; in parse_tuple()
355 cis->bar[bar_index].flags = tuple[2]; in parse_tuple()
356 cis->bar[bar_index].size = in parse_tuple()
364 cis->funcid = tuple[2]; in parse_tuple()
368 switch (cis->funcid) { in parse_tuple()
373 cis->funce.serial.uart_type = tuple[3] & 0x1f; in parse_tuple()
374 cis->funce.serial.uart_present = 1; in parse_tuple()
382 sizeof(cis->funce.network.netid)) { in parse_tuple()
387 cis->funce.network.netid_present = 1; in parse_tuple()
388 memcpy(cis->funce.network.netid, in parse_tuple()
405 * If no functions are recognised, return 0.
417 cc = sc->sc_cc; in cardbus_attach_card()
418 cf = sc->sc_cf; in cardbus_attach_card()
421 device_unit(sc->sc_dev))); in cardbus_attach_card()
424 if ((cdstatus = (*cf->cardbus_ctrl)(cc, CARDBUS_CD)) == 0) { in cardbus_attach_card()
425 DPRINTF(("%s: no CardBus card on cb%d\n", __func__, in cardbus_attach_card()
426 device_unit(sc->sc_dev))); in cardbus_attach_card()
430 device_pmf_driver_set_child_register(sc->sc_dev, cardbus_child_register); in cardbus_attach_card()
431 cardbus_rescan(sc->sc_dev, "cardbus", wildcard); in cardbus_attach_card()
448 cardbus_devfunc_t ct; in cardbus_rescan() local
450 cc = sc->sc_cc; in cardbus_rescan()
451 cf = sc->sc_cf; in cardbus_rescan()
454 if ((cdstatus = (*cf->cardbus_ctrl)(cc, CARDBUS_CD)) == 0) { in cardbus_rescan()
455 DPRINTF(("%s: no CardBus card on cb%d\n", __func__, in cardbus_rescan()
456 device_unit(sc->sc_dev))); in cardbus_rescan()
467 tag = cardbus_make_tag(cc, cf, sc->sc_bus, function); in cardbus_rescan()
499 DPRINTF(("%s bhlc 0x%08x -> ", device_xname(sc->sc_dev), bhlc)); in cardbus_rescan()
511 if (sc->sc_funcs[function]) in cardbus_rescan()
514 tag = cardbus_make_tag(cc, cf, sc->sc_bus, function); in cardbus_rescan()
543 DPRINTF(("%s func%d icr 0x%08x bhlc 0x%08x -> ", in cardbus_rescan()
544 device_xname(sc->sc_dev), function, icr, bhlc)); in cardbus_rescan()
546 bhlc |= (sc->sc_cacheline & PCI_CACHELINE_MASK) << in cardbus_rescan()
565 MIN(sc->sc_max_lattimer, MAX(0x10, 8 * PCI_MIN_GNT(icr))); in cardbus_rescan()
576 * We need to allocate the ct here, since we might in cardbus_rescan()
579 ct = malloc(sizeof(struct cardbus_devfunc), in cardbus_rescan()
581 ct->ct_bhlc = bhlc; in cardbus_rescan()
582 ct->ct_cc = sc->sc_cc; in cardbus_rescan()
583 ct->ct_cf = sc->sc_cf; in cardbus_rescan()
584 ct->ct_bus = sc->sc_bus; in cardbus_rescan()
585 ct->ct_func = function; in cardbus_rescan()
586 ct->ct_sc = sc; in cardbus_rescan()
587 sc->sc_funcs[function] = ct; in cardbus_rescan()
591 ca.ca_ct = ct; in cardbus_rescan()
593 ca.ca_iot = sc->sc_iot; in cardbus_rescan()
594 ca.ca_memt = sc->sc_memt; in cardbus_rescan()
595 ca.ca_dmat = sc->sc_dmat; in cardbus_rescan()
597 ca.ca_rbus_iot = sc->sc_rbus_iot; in cardbus_rescan()
598 ca.ca_rbus_memt= sc->sc_rbus_memt; in cardbus_rescan()
601 ca.ca_bus = sc->sc_bus; in cardbus_rescan()
626 if ((csc = config_found(sc->sc_dev, &ca, cardbusprint, in cardbus_rescan()
631 sc->sc_funcs[function] = NULL; in cardbus_rescan()
632 free(ct, M_DEVBUF); in cardbus_rescan()
635 ct->ct_device = csc; in cardbus_rescan()
640 * if no functions were attached). in cardbus_rescan()
655 pci_devinfo(ca->ca_id, ca->ca_class, 1, devinfo, in cardbusprint()
658 if (ca->ca_cis.cis1_info[i] == NULL) in cardbusprint()
662 aprint_normal("%s", ca->ca_cis.cis1_info[i]); in cardbusprint()
666 ca->ca_cis.manufacturer, ca->ca_cis.product); in cardbusprint()
669 aprint_normal(" function %d", ca->ca_function); in cardbusprint()
686 struct cardbus_devfunc *ct; in cardbus_detach_card() local
689 ct = sc->sc_funcs[f]; in cardbus_detach_card()
690 if (!ct) in cardbus_detach_card()
693 DPRINTF(("%s: detaching %s\n", device_xname(sc->sc_dev), in cardbus_detach_card()
694 device_xname(ct->ct_device))); in cardbus_detach_card()
697 if (config_detach(ct->ct_device, 0) != 0) { in cardbus_detach_card()
698 aprint_error_dev(sc->sc_dev, in cardbus_detach_card()
700 device_xname(ct->ct_device), ct->ct_func); in cardbus_detach_card()
704 sc->sc_poweron_func = 0; in cardbus_detach_card()
705 (*sc->sc_cf->cardbus_power)(sc->sc_cc, in cardbus_detach_card()
713 struct cardbus_devfunc *ct; in cardbus_childdetached() local
715 ct = sc->sc_funcs[device_locator(child, CARDBUSCF_FUNCTION)]; in cardbus_childdetached()
716 KASSERT(ct->ct_device == child); in cardbus_childdetached()
718 sc->sc_poweron_func &= ~(1 << ct->ct_func); in cardbus_childdetached()
719 sc->sc_funcs[ct->ct_func] = NULL; in cardbus_childdetached()
720 free(ct, M_DEVBUF); in cardbus_childdetached()
724 Cardbus_intr_establish(cardbus_devfunc_t ct, in Cardbus_intr_establish() argument
727 return cardbus_intr_establish(ct->ct_cc, ct->ct_cf, level, func, in Cardbus_intr_establish()
743 DPRINTF(("- cardbus_intr_establish\n")); in cardbus_intr_establish()
744 return ((*cf->cardbus_intr_establish)(cc, level, func, arg)); in cardbus_intr_establish()
748 Cardbus_intr_disestablish(cardbus_devfunc_t ct, void *handler) in Cardbus_intr_disestablish() argument
750 cardbus_intr_disestablish(ct->ct_cc, ct->ct_cf, handler); in Cardbus_intr_disestablish()
764 DPRINTF(("- pccard_intr_disestablish\n")); in cardbus_intr_disestablish()
765 (*cf->cardbus_intr_disestablish)(cc, handler); in cardbus_intr_disestablish()
770 * but we don't have a ct when these functions are called.
776 if (sc->sc_poweron_func == 0) { in enable_function()
784 sc->sc_poweron_func |= (1 << function); in enable_function()
785 (*sc->sc_cf->cardbus_power)(sc->sc_cc, CARDBUS_VCC_3V); in enable_function()
787 /* No cards other than 3.3V cards. */ in enable_function()
790 (*sc->sc_cf->cardbus_ctrl)(sc->sc_cc, CARDBUS_RESET); in enable_function()
792 sc->sc_poweron_func |= (1 << function); in enable_function()
799 cardbus_devfunc_t ct; in disable_function() local
803 sc->sc_poweron_func &= ~(1 << function); in disable_function()
804 if (sc->sc_poweron_func != 0) in disable_function()
806 for (i = 0; i < __arraycount(sc->sc_funcs); i++) { in disable_function()
807 if ((ct = sc->sc_funcs[i]) == NULL) in disable_function()
809 dv = ct->ct_device; in disable_function()
811 "pmf-no-powerdown", &no_powerdown) && no_powerdown) in disable_function()
814 /* power-off because no functions are enabled */ in disable_function()
815 (*sc->sc_cf->cardbus_power)(sc->sc_cc, CARDBUS_VCC_0V); in disable_function()
821 * This function enables a function on a card. When no power is
827 cardbus_chipset_tag_t cc = sc->sc_cc; in cardbus_function_enable()
828 cardbus_function_tag_t cf = sc->sc_cf; in cardbus_function_enable()
829 cardbus_devfunc_t ct; in cardbus_function_enable() local
842 tag = cardbus_make_tag(cc, cf, sc->sc_bus, func); in cardbus_function_enable()
850 if ((ct = sc->sc_funcs[func]) != NULL) in cardbus_function_enable()
851 Cardbus_conf_write(ct, tag, PCI_BHLC_REG, ct->ct_bhlc); in cardbus_function_enable()
853 DPRINTF(("%x\n", sc->sc_poweron_func)); in cardbus_function_enable()
861 * This function disable a function on a card. When no functions are
973 cardbus_get_powerstate_int(cardbus_devfunc_t ct, pcitag_t tag, in cardbus_get_powerstate_int() argument
977 cardbus_chipset_tag_t cc = ct->ct_cc; in cardbus_get_powerstate_int()
978 cardbus_function_tag_t cf = ct->ct_cf; in cardbus_get_powerstate_int()
995 cardbus_get_powerstate(cardbus_devfunc_t ct, pcitag_t tag, pcireg_t *state) in cardbus_get_powerstate() argument
997 cardbus_chipset_tag_t cc = ct->ct_cc; in cardbus_get_powerstate()
998 cardbus_function_tag_t cf = ct->ct_cf; in cardbus_get_powerstate()
1005 return cardbus_get_powerstate_int(ct, tag, state, offset); in cardbus_get_powerstate()
1009 cardbus_set_powerstate_int(cardbus_devfunc_t ct, pcitag_t tag, in cardbus_set_powerstate_int() argument
1012 cardbus_chipset_tag_t cc = ct->ct_cc; in cardbus_set_powerstate_int()
1013 cardbus_function_tag_t cf = ct->ct_cf; in cardbus_set_powerstate_int()
1065 cardbus_set_powerstate(cardbus_devfunc_t ct, pcitag_t tag, pcireg_t state) in cardbus_set_powerstate() argument
1067 cardbus_chipset_tag_t cc = ct->ct_cc; in cardbus_set_powerstate()
1068 cardbus_function_tag_t cf = ct->ct_cf; in cardbus_set_powerstate()
1076 return cardbus_set_powerstate_int(ct, tag, state, offset, value); in cardbus_set_powerstate()
1082 "TPL_NULL", "TPL_DEVICE", "Reserved", "Reserved", /* 0-3 */
1083 "CONFIG_CB", "CFTABLE_ENTRY_CB", "Reserved", "BAR", /* 4-7 */
1084 "Reserved", "Reserved", "Reserved", "Reserved", /* 8-B */
1085 "Reserved", "Reserved", "Reserved", "Reserved", /* C-F */
1086 "CHECKSUM", "LONGLINK_A", "LONGLINK_C", "LINKTARGET", /* 10-13 */
1090 "MANFID", "FUNCID", "FUNCE", "SWIL", /* 20-23 */
1091 "Reserved", "Reserved", "Reserved", "Reserved", /* 24-27 */
1092 "Reserved", "Reserved", "Reserved", "Reserved", /* 28-2B */
1093 "Reserved", "Reserved", "Reserved", "Reserved", /* 2C-2F */
1094 "Reserved", "Reserved", "Reserved", "Reserved", /* 30-33 */
1095 "Reserved", "Reserved", "Reserved", "Reserved", /* 34-37 */
1096 "Reserved", "Reserved", "Reserved", "Reserved", /* 38-3B */
1097 "Reserved", "Reserved", "Reserved", "Reserved", /* 3C-3F */
1145 pcs->reg[off] = cardbus_conf_read(cc, cf, tag, (off * 4)); in cardbus_conf_capture()
1155 for (off = 15; off >= 0; off--) { in cardbus_conf_restore()
1157 if (val != pcs->reg[off]) in cardbus_conf_restore()
1158 cardbus_conf_write(cc, cf,tag, (off * 4), pcs->reg[off]); in cardbus_conf_restore()
1178 cardbus_conf_capture(priv->p_cc, priv->p_cf, priv->p_tag, in cardbus_child_suspend()
1179 &priv->p_cardbusconf); in cardbus_child_suspend()
1181 if (priv->p_has_pm && in cardbus_child_suspend()
1182 cardbus_set_powerstate_int(priv->p_ct, priv->p_tag, in cardbus_child_suspend()
1183 PCI_PMCSR_STATE_D3, priv->p_pm_offset, priv->p_pm_cap)) { in cardbus_child_suspend()
1188 Cardbus_function_disable(priv->p_ct); in cardbus_child_suspend()
1198 Cardbus_function_enable(priv->p_ct); in cardbus_child_resume()
1200 if (priv->p_has_pm && in cardbus_child_resume()
1201 cardbus_set_powerstate_int(priv->p_ct, priv->p_tag, in cardbus_child_resume()
1202 PCI_PMCSR_STATE_D0, priv->p_pm_offset, priv->p_pm_cap)) { in cardbus_child_resume()
1207 cardbus_conf_restore(priv->p_cc, priv->p_cf, priv->p_tag, in cardbus_child_resume()
1208 &priv->p_cardbusconf); in cardbus_child_resume()
1226 struct cardbus_devfunc *ct; in cardbus_child_register() local
1231 ct = sc->sc_funcs[device_locator(child, CARDBUSCF_FUNCTION)]; in cardbus_child_register()
1235 priv->p_ct = ct; in cardbus_child_register()
1236 priv->p_cc = ct->ct_cc; in cardbus_child_register()
1237 priv->p_cf = ct->ct_cf; in cardbus_child_register()
1238 priv->p_tag = cardbus_make_tag(priv->p_cc, priv->p_cf, ct->ct_bus, in cardbus_child_register()
1239 ct->ct_func); in cardbus_child_register()
1241 if (cardbus_get_capability(priv->p_cc, priv->p_cf, priv->p_tag, in cardbus_child_register()
1243 priv->p_has_pm = true; in cardbus_child_register()
1244 priv->p_pm_offset = off; in cardbus_child_register()
1245 priv->p_pm_cap = reg; in cardbus_child_register()
1247 priv->p_has_pm = false; in cardbus_child_register()
1248 priv->p_pm_offset = -1; in cardbus_child_register()