Annotation of sys/arch/arm/xscale/pxapcicvar.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: pxapcicvar.h,v 1.7 2005/12/14 15:08:51 uwe Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2005 Dale Rahn <drahn@openbsd.org>
! 5: *
! 6: * Permission to use, copy, modify, and distribute this software for any
! 7: * purpose with or without fee is hereby granted, provided that the above
! 8: * copyright notice and this permission notice appear in all copies.
! 9: *
! 10: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 11: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 12: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 13: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 14: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 15: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 16: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 17: */
! 18:
! 19: struct pxapcic_socket {
! 20: struct pxapcic_softc *sc;
! 21: int socket; /* socket number */
! 22: struct device *pcmcia;
! 23: struct proc *event_thread;
! 24:
! 25: int flags;
! 26: int power_capability; /* PXAPCIC_POWER_3V | PXAPCIC_POWER_5V */
! 27:
! 28: int irqpin;
! 29: void *irq;
! 30:
! 31: void *pcictag_cookie; /* opaque data for pcictag functions */
! 32: struct pxapcic_tag *pcictag;
! 33: };
! 34:
! 35: /* event */
! 36: #define PXAPCIC_EVENT_INSERTION 0
! 37: #define PXAPCIC_EVENT_REMOVAL 1
! 38:
! 39: /* flags */
! 40: #define PXAPCIC_FLAG_CARDD 0
! 41: #define PXAPCIC_FLAG_CARDP 1
! 42:
! 43: struct pxapcic_tag {
! 44: u_int (*read)(struct pxapcic_socket *, int);
! 45: void (*write)(struct pxapcic_socket *, int, u_int);
! 46: void (*set_power)(struct pxapcic_socket *, int);
! 47: void (*clear_intr)(struct pxapcic_socket *);
! 48: void *(*intr_establish)(struct pxapcic_socket *, int,
! 49: int (*)(void *), void *);
! 50: void (*intr_disestablish)(struct pxapcic_socket *, void *);
! 51: const char *(*intr_string)(struct pxapcic_socket *);
! 52: };
! 53:
! 54: /* pcictag registers and their values */
! 55: #define PXAPCIC_CARD_STATUS 0
! 56: #define PXAPCIC_CARD_INVALID 0
! 57: #define PXAPCIC_CARD_VALID 1
! 58: #define PXAPCIC_CARD_READY 1
! 59: #define PXAPCIC_CARD_POWER 2
! 60: #define PXAPCIC_POWER_OFF 0
! 61: #define PXAPCIC_POWER_3V 1
! 62: #define PXAPCIC_POWER_5V 2
! 63: #define PXAPCIC_CARD_RESET 3
! 64:
! 65: struct pxapcic_softc {
! 66: struct device sc_dev;
! 67: struct pxapcic_socket sc_socket[2];
! 68:
! 69: bus_space_tag_t sc_iot;
! 70: bus_space_handle_t sc_memctl_ioh;
! 71:
! 72: void *sc_irq;
! 73: int sc_shutdown;
! 74: int sc_nslots;
! 75: int sc_irqpin[2];
! 76: int sc_irqcfpin[2];
! 77: };
! 78:
! 79: void pxapcic_attach(struct pxapcic_softc *,
! 80: void (*socket_setup_hook)(struct pxapcic_socket *));
! 81: int pxapcic_intr(void *);
CVSweb