Home | History | Annotate | Download | only in pcmcia

Lines Matching defs:pf

95 pcmcia_ccr_read(struct pcmcia_function *pf, int ccr)
98 return (bus_space_read_1(pf->pf_ccrt, pf->pf_ccrh,
99 pf->pf_ccr_offset + ccr * 2));
103 pcmcia_ccr_write(struct pcmcia_function *pf, int ccr, int val)
106 if (pf->ccr_mask & (1 << ccr)) {
107 bus_space_write_1(pf->pf_ccrt, pf->pf_ccrh,
108 pf->pf_ccr_offset + ccr * 2, val);
159 struct pcmcia_function *pf;
192 SIMPLEQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
193 if (SIMPLEQ_EMPTY(&pf->cfe_head))
197 if (pf->child != NULL) {
199 device_xname(sc->dev), device_xname(pf->child),
200 pf->number);
204 pf->sc = sc;
205 pf->child = NULL;
206 pf->cfe = NULL;
207 pf->pf_ih = NULL;
220 struct pcmcia_function *pf;
230 SIMPLEQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
231 if (SIMPLEQ_EMPTY(&pf->cfe_head))
235 && (locators[PCMCIACF_FUNCTION] != pf->number))
238 if (pf->child)
241 locs[PCMCIACF_FUNCTION] = pf->number;
246 paa.pf = pf;
248 pf->child = config_found(self, &paa, pcmcia_print,
261 struct pcmcia_function *pf;
268 SIMPLEQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
269 pf->pf_flags |= PFF_DETACHED;
270 if (SIMPLEQ_EMPTY(&pf->cfe_head))
272 if (pf->child == NULL)
275 device_xname(sc->dev), device_xname(pf->child), pf->number));
276 if ((error = config_detach(pf->child, flags)) != 0) {
278 device_xname(sc->dev), error, device_xname(pf->child),
279 pf->number);
296 struct pcmcia_function *pf;
298 SIMPLEQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
299 if (SIMPLEQ_EMPTY(&pf->cfe_head))
301 if (pf->child == child) {
303 == pf->number);
304 pf->child = NULL;
317 struct pcmcia_function *pf;
324 SIMPLEQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
325 if (SIMPLEQ_EMPTY(&pf->cfe_head))
327 if (pf->child == NULL)
330 device_xname(sc->dev), device_xname(pf->child), pf->number));
331 config_deactivate(pf->child);
339 struct pcmcia_softc *sc = pa->pf->sc;
348 aprint_normal(" function %d: %s\n", pa->pf->number, devinfo);
439 pcmcia_function_init(struct pcmcia_function *pf, struct pcmcia_config_entry *cfe)
441 if (pf->pf_flags & PFF_ENABLED)
445 pf->cfe = cfe;
472 pcmcia_function_enable(struct pcmcia_function *pf)
474 struct pcmcia_softc *sc = pf->sc;
479 if (pf->cfe == NULL)
487 pcmcia_socket_settype(sc->dev, pf->cfe->iftype);
489 if (pf->pf_flags & PFF_ENABLED) {
503 (pf->ccr_base >= (tmp->ccr_base - tmp->pf_ccr_offset)) &&
504 ((pf->ccr_base + PCMCIA_CCR_SIZE) <=
507 pf->pf_ccrt = tmp->pf_ccrt;
508 pf->pf_ccrh = tmp->pf_ccrh;
509 pf->pf_ccr_realsize = tmp->pf_ccr_realsize;
512 * pf->pf_ccr_offset = (tmp->pf_ccr_offset -
513 * tmp->ccr_base) + pf->ccr_base;
515 pf->pf_ccr_offset =
516 (tmp->pf_ccr_offset + pf->ccr_base) -
518 pf->pf_ccr_window = tmp->pf_ccr_window;
524 error = pcmcia_mem_alloc(pf, PCMCIA_CCR_SIZE, &pf->pf_pcmh);
528 error = pcmcia_mem_map(pf, PCMCIA_MEM_ATTR, pf->ccr_base,
529 PCMCIA_CCR_SIZE, &pf->pf_pcmh, &pf->pf_ccr_offset,
530 &pf->pf_ccr_window);
532 pcmcia_mem_free(pf, &pf->pf_pcmh);
538 pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE0,
539 (pf->pf_mfc_iobase >> 0) & 0xff);
540 pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE1,
541 (pf->pf_mfc_iobase >> 8) & 0xff);
542 pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE2,
543 (pf->pf_mfc_iobase >> 16) & 0xff);
544 pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE3,
545 (pf->pf_mfc_iobase >> 24) & 0xff);
546 pcmcia_ccr_write(pf, PCMCIA_CCR_IOLIMIT,
547 pf->pf_mfc_iomax - pf->pf_mfc_iobase);
551 if (pf->cfe->flags & PCMCIA_CFE_AUDIO)
553 pcmcia_ccr_write(pf, PCMCIA_CCR_STATUS, reg);
555 pcmcia_ccr_write(pf, PCMCIA_CCR_SOCKETCOPY, 0);
557 reg = (pf->cfe->number & PCMCIA_CCR_OPTION_CFINDEX);
562 if (pf->pf_ih)
566 pcmcia_ccr_write(pf, PCMCIA_CCR_OPTION, reg);
593 it8368_mode(pf, IT8368_IO_MODE, IT8368_WIDTH_16);
596 pf->pf_flags |= PFF_ENABLED;
604 printf("%s: couldn't map the CCR\n", device_xname(pf->child));
612 pcmcia_function_disable(struct pcmcia_function *pf)
614 struct pcmcia_softc *sc = pf->sc;
618 if (pf->cfe == NULL)
621 if ((pf->pf_flags & PFF_ENABLED) == 0) {
629 (pf->pf_flags & PFF_DETACHED) == 0) {
630 reg = pcmcia_ccr_read(pf, PCMCIA_CCR_OPTION);
634 pcmcia_ccr_write(pf, PCMCIA_CCR_OPTION, reg);
643 pf->pf_flags &= ~PFF_ENABLED;
646 (pf->ccr_base >= (tmp->ccr_base - tmp->pf_ccr_offset)) &&
647 ((pf->ccr_base + PCMCIA_CCR_SIZE) <=
654 pcmcia_mem_unmap(pf, pf->pf_ccr_window);
655 pcmcia_mem_free(pf, &pf->pf_pcmh);
667 pcmcia_io_map(struct pcmcia_function *pf, int width, struct pcmcia_io_handle *pcihp, int *windowp)
669 struct pcmcia_softc *sc = pf->sc;
672 if (pf->pf_flags & PFF_ENABLED)
692 if (pf->pf_mfc_iobase == 0) {
693 pf->pf_mfc_iobase = iobase;
694 pf->pf_mfc_iomax = iomax;
696 if (iobase < pf->pf_mfc_iobase)
697 pf->pf_mfc_iobase = iobase;
698 if (iomax > pf->pf_mfc_iomax)
699 pf->pf_mfc_iomax = iomax;
702 (long)pf->pf_mfc_iobase, (long)pf->pf_mfc_iomax));
709 pcmcia_io_unmap(struct pcmcia_function *pf, int window)
711 struct pcmcia_softc *sc = pf->sc;
713 if (pf->pf_flags & PFF_ENABLED)
720 pcmcia_intr_establish(struct pcmcia_function *pf, int ipl,
724 if (pf->pf_flags & PFF_ENABLED)
726 if (pf->pf_ih)
729 pf->pf_ih = pcmcia_chip_intr_establish(pf->sc->pct, pf->sc->pch,
730 pf, ipl, ih_fct, ih_arg);
731 if (!pf->pf_ih)
732 aprint_error_dev(pf->child, "interrupt establish failed\n");
733 return (pf->pf_ih);
737 pcmcia_intr_disestablish(struct pcmcia_function *pf, void *ih)
740 if (pf->pf_flags & PFF_ENABLED)
742 if (!pf->pf_ih)
745 pcmcia_chip_intr_disestablish(pf->sc->pct, pf->sc->pch, ih);
746 pf->pf_ih = 0;
750 pcmcia_config_alloc(struct pcmcia_function *pf, struct pcmcia_config_entry *cfe)
771 error = pcmcia_io_alloc(pf, start, length, align,
778 pcmcia_io_free(pf, &cfe->iospace[m].handle);
788 error = pcmcia_mem_alloc(pf, length, &cfe->memspace[n].handle);
794 pcmcia_io_free(pf, &cfe->iospace[m].handle);
796 pcmcia_mem_free(pf, &cfe->memspace[m].handle);
805 pcmcia_config_free(struct pcmcia_function *pf)
807 struct pcmcia_config_entry *cfe = pf->cfe;
811 pcmcia_io_free(pf, &cfe->iospace[m].handle);
813 pcmcia_mem_free(pf, &cfe->memspace[m].handle);
817 pcmcia_config_map(struct pcmcia_function *pf)
819 struct pcmcia_config_entry *cfe = pf->cfe;
830 error = pcmcia_io_map(pf, width, &cfe->iospace[n].handle,
837 pcmcia_io_unmap(pf, cfe->iospace[m].window);
850 error = pcmcia_mem_map(pf, width, 0, length,
858 pcmcia_io_unmap(pf, cfe->iospace[m].window);
860 pcmcia_mem_unmap(pf, cfe->memspace[m].window);
869 pcmcia_config_unmap(struct pcmcia_function *pf)
871 struct pcmcia_config_entry *cfe = pf->cfe;
875 pcmcia_io_unmap(pf, cfe->iospace[m].window);
877 pcmcia_mem_unmap(pf, cfe->memspace[m].window);
881 pcmcia_function_configure(struct pcmcia_function *pf,
887 SIMPLEQ_FOREACH(cfe, &pf->cfe_head, cfe_list) {
891 error = pcmcia_config_alloc(pf, cfe);
902 pf->cfe = cfe;
904 error = pcmcia_config_map(pf);
915 pcmcia_function_unconfigure(struct pcmcia_function *pf)
918 pcmcia_config_unmap(pf);
919 pcmcia_config_free(pf);