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