Annotation of sys/dev/sdmmc/sdmmcchip.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: sdmmcchip.h,v 1.3 2007/05/31 10:09:01 uwe Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2006 Uwe Stuehler <uwe@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: #ifndef _SDMMC_CHIP_H_
! 20: #define _SDMMC_CHIP_H_
! 21:
! 22: struct sdmmc_command;
! 23:
! 24: typedef struct sdmmc_chip_functions *sdmmc_chipset_tag_t;
! 25: typedef void *sdmmc_chipset_handle_t;
! 26:
! 27: struct sdmmc_chip_functions {
! 28: /* host controller reset */
! 29: int (*host_reset)(sdmmc_chipset_handle_t);
! 30: /* host capabilities */
! 31: u_int32_t (*host_ocr)(sdmmc_chipset_handle_t);
! 32: int (*host_maxblklen)(sdmmc_chipset_handle_t);
! 33: /* card detection */
! 34: int (*card_detect)(sdmmc_chipset_handle_t);
! 35: /* bus power and clock frequency */
! 36: int (*bus_power)(sdmmc_chipset_handle_t, u_int32_t);
! 37: int (*bus_clock)(sdmmc_chipset_handle_t, int);
! 38: /* command execution */
! 39: void (*exec_command)(sdmmc_chipset_handle_t,
! 40: struct sdmmc_command *);
! 41: /* card interrupt */
! 42: void (*card_intr_mask)(sdmmc_chipset_handle_t, int);
! 43: void (*card_intr_ack)(sdmmc_chipset_handle_t);
! 44: };
! 45:
! 46: /* host controller reset */
! 47: #define sdmmc_chip_host_reset(tag, handle) \
! 48: ((tag)->host_reset((handle)))
! 49: /* host capabilities */
! 50: #define sdmmc_chip_host_ocr(tag, handle) \
! 51: ((tag)->host_ocr((handle)))
! 52: #define sdmmc_chip_host_maxblklen(tag, handle) \
! 53: ((tag)->host_maxblklen((handle)))
! 54: /* card detection */
! 55: #define sdmmc_chip_card_detect(tag, handle) \
! 56: ((tag)->card_detect((handle)))
! 57: /* bus power and clock frequency */
! 58: #define sdmmc_chip_bus_power(tag, handle, ocr) \
! 59: ((tag)->bus_power((handle), (ocr)))
! 60: #define sdmmc_chip_bus_clock(tag, handle, freq) \
! 61: ((tag)->bus_clock((handle), (freq)))
! 62: /* command execution */
! 63: #define sdmmc_chip_exec_command(tag, handle, cmdp) \
! 64: ((tag)->exec_command((handle), (cmdp)))
! 65: /* card interrupt */
! 66: #define sdmmc_chip_card_intr_mask(tag, handle, enable) \
! 67: ((tag)->card_intr_mask((handle), (enable)))
! 68: #define sdmmc_chip_card_intr_ack(tag, handle) \
! 69: ((tag)->card_intr_ack((handle)))
! 70:
! 71: /* clock frequencies for sdmmc_chip_bus_clock() */
! 72: #define SDMMC_SDCLK_OFF 0
! 73: #define SDMMC_SDCLK_400KHZ 400
! 74: #define SDMMC_SDCLK_25MHZ 25000
! 75:
! 76: struct sdmmcbus_attach_args {
! 77: const char *saa_busname;
! 78: sdmmc_chipset_tag_t sct;
! 79: sdmmc_chipset_handle_t sch;
! 80: };
! 81:
! 82: void sdmmc_needs_discover(struct device *);
! 83: void sdmmc_card_intr(struct device *);
! 84: void sdmmc_delay(u_int);
! 85:
! 86: #endif
CVSweb