Date: Mon, 25 Sep 2006 06:51:29 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 106636 for review Message-ID: <200609250651.k8P6pTwu046007@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=106636 Change 106636 by imp@imp_lighthouse on 2006/09/25 06:51:28 Flesh out the host adapter concept a little. Fill in the right default values for the atmel device. Affected files ... .. //depot/projects/arm/src/sys/arm/at91/at91_mci.c#4 edit .. //depot/projects/arm/src/sys/dev/mmc/bridge.h#2 edit .. //depot/projects/arm/src/sys/dev/mmc/mmcreg.h#4 edit Differences ... ==== //depot/projects/arm/src/sys/arm/at91/at91_mci.c#4 (text+ko) ==== @@ -53,6 +53,8 @@ #include <arm/at91/at91var.h> #include <arm/at91/at91_mcireg.h> #include <arm/at91/at91_pdcreg.h> +#include <dev/mmc/bridge.h> +#include <dev/mmc/mmcreg.h> struct at91_mci_softc { void *intrhand; /* Interrupt handle */ @@ -62,9 +64,7 @@ struct mtx sc_mtx; bus_dma_tag_t dmatag; bus_dmamap_t map; - struct disk *disk; /* XXX support only one card for */ - int nb_cards; - struct proc *p; + struct mmc_host host; }; static inline uint32_t @@ -133,6 +133,7 @@ /* XXX: asumes MCK = 60MHz */ struct at91_mci_softc *sc = device_get_softc(dev); int err; + device_t child; sc->dev = dev; err = at91_mci_activate(dev); @@ -166,7 +167,12 @@ AT91_MCI_LOCK_DESTROY(sc); goto out; } - device_add_child(dev, "mmc", 0); + sc->host.f_min = 375000; + sc->host.f_max = 25000000; + sc->host.host_ocr = MMC_OCR_320_330 | MMC_OCR_330_340; + sc->host.caps = MMC_CAP_4_BIT_DATA; + child = device_add_child(dev, "mmc", 0); + device_set_ivars(dev, &sc->host); err = bus_generic_attach(dev); out:; if (err) ==== //depot/projects/arm/src/sys/dev/mmc/bridge.h#2 (text+ko) ==== @@ -73,16 +73,24 @@ struct mmc_ios { uint32_t clock; /* Speed of the clock in Hz to move data */ - enum mmc_vdd vdd; /* Voltage to apply to the power pins */ + enum mmc_vdd vdd; /* Voltage to apply to the power pins/ */ enum mmc_bus_mode bus_mode; enum mmc_chip_select chip_select; enum mmc_bus_width bus_width; }; -#define MMC_CAP_4_BIT_DATA (1UL << 0) /* Host can do 4-bit xfers */ - enum mmc_card_mode { mode_mmc, mode_sd }; +struct mmc_host { + int f_min; + int f_max; + uint32_t host_ocr; + uint32_t caps; +#define MMC_CAP_4_BIT_DATA (1 << 0) /* Can do 4-bit data transfers */ +#define MMC_CAP_8_BIT_DATA (1 << 1) /* Can do 8-bit data transfers */ + enum mmc_card_mode mode; +}; + #endif /* DEV_MMC_BRIDGE_H */ ==== //depot/projects/arm/src/sys/dev/mmc/mmcreg.h#4 (text+ko) ==== @@ -389,4 +389,31 @@ //////////////////////////////////////////////////////////////////////////////// +/* OCR bits */ +#define MMC_OCR_145_150 (1U << 0) /* Vdd voltage 1.45 ~ 1.50 */ +#define MMC_OCR_150_155 (1U << 1) /* Vdd voltage 1.50 ~ 1.50 */ +#define MMC_OCR_155_160 (1U << 2) /* Vdd voltage 1.55 ~ 1.60 */ +#define MMC_OCR_160_165 (1U << 3) /* Vdd voltage 1.60 ~ 1.65 */ +#define MMC_OCR_165_170 (1U << 4) /* Vdd voltage 1.65 ~ 1.70 */ +#define MMC_OCR_170_180 (1U << 5) /* Vdd voltage 1.70 ~ 1.80 */ +#define MMC_OCR_180_190 (1U << 6) /* Vdd voltage 1.80 ~ 1.90 */ +#define MMC_OCR_190_200 (1U << 7) /* Vdd voltage 1.90 ~ 2.00 */ +#define MMC_OCR_200_210 (1U << 8) /* Vdd voltage 2.00 ~ 2.10 */ +#define MMC_OCR_210_220 (1U << 9) /* Vdd voltage 2.10 ~ 2.20 */ +#define MMC_OCR_220_230 (1U << 10) /* Vdd voltage 2.20 ~ 2.30 */ +#define MMC_OCR_230_240 (1U << 11) /* Vdd voltage 2.30 ~ 2.40 */ +#define MMC_OCR_240_250 (1U << 12) /* Vdd voltage 2.40 ~ 2.50 */ +#define MMC_OCR_250_260 (1U << 13) /* Vdd voltage 2.50 ~ 2.60 */ +#define MMC_OCR_260_270 (1U << 14) /* Vdd voltage 2.60 ~ 2.70 */ +#define MMC_OCR_270_280 (1U << 15) /* Vdd voltage 2.70 ~ 2.80 */ +#define MMC_OCR_280_290 (1U << 16) /* Vdd voltage 2.80 ~ 2.90 */ +#define MMC_OCR_290_300 (1U << 17) /* Vdd voltage 2.90 ~ 3.00 */ +#define MMC_OCR_300_310 (1U << 18) /* Vdd voltage 3.00 ~ 3.10 */ +#define MMC_OCR_310_320 (1U << 19) /* Vdd voltage 3.10 ~ 3.20 */ +#define MMC_OCR_320_330 (1U << 20) /* Vdd voltage 3.20 ~ 3.30 */ +#define MMC_OCR_330_340 (1U << 21) /* Vdd voltage 3.30 ~ 3.40 */ +#define MMC_OCR_340_350 (1U << 22) /* Vdd voltage 3.40 ~ 3.50 */ +#define MMC_OCR_350_360 (1U << 23) /* Vdd voltage 3.50 ~ 3.60 */ +#define MMC_OCR_CARD_BUSY (1U << 31) /* Card Power up status */ + #endif /* DEV_MMCREG_H */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200609250651.k8P6pTwu046007>