socsvn commit: r238904 - in soc2012/aleek/beaglexm-armv6/sys:
arm/ti boot/fdt/dts
aleek at FreeBSD.org
aleek at FreeBSD.org
Tue Jul 3 11:24:44 UTC 2012
Author: aleek
Date: Tue Jul 3 11:24:41 2012
New Revision: 238904
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238904
Log:
adapting MMC driver
Modified:
soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c
soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts
Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c Tue Jul 3 09:11:47 2012 (r238903)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c Tue Jul 3 11:24:41 2012 (r238904)
@@ -1330,7 +1330,8 @@
uint32_t con;
/* 1: Enable the controller and interface/functional clocks */
- clk = MMC0_CLK + sc->device_id;
+ //clk = MMC0_CLK + sc->device_id;
+ clk = MMC1_CLK;
if (ti_prcm_clk_enable(clk) != 0) {
device_printf(dev, "Error: failed to enable MMC clock\n");
@@ -1430,6 +1431,7 @@
static int
ti_mmchs_init_dma_channels(struct ti_mmchs_softc *sc)
{
+ printf( "%s:%d\n", __FILE__, __LINE__ );
#ifdef SOC_TI_AM335X
switch (sc->device_id) {
case 0:
@@ -1453,13 +1455,16 @@
int err;
uint32_t rev;
+ printf( "%s:%d\n", __FILE__, __LINE__ );
/* Get the current chip revision */
rev = ti_revision();
if ((OMAP_REV_DEVICE(rev) != OMAP4430_DEV) && (sc->device_id > 3))
return(EINVAL);
+ printf( "%s:%d\n", __FILE__, __LINE__ );
/* Get the DMA MMC triggers */
switch (sc->device_id) {
+ case 0:
case 1:
sc->dma_tx_trig = 60;
sc->dma_rx_trig = 61;
@@ -1485,11 +1490,13 @@
return(EINVAL);
}
+ printf( "%s:%d\n", __FILE__, __LINE__ );
/* Activate a RX channel from the OMAP DMA driver */
err = ti_sdma_activate_channel(&sc->sc_dmach_rd, ti_mmchs_dma_intr, sc);
if (err != 0)
return(err);
+ printf( "%s:%d\n", __FILE__, __LINE__ );
/* Setup the RX channel for MMC data transfers */
ti_sdma_set_xfer_burst(sc->sc_dmach_rd, TI_SDMA_BURST_NONE,
TI_SDMA_BURST_64);
@@ -1499,11 +1506,13 @@
ti_sdma_set_addr_mode(sc->sc_dmach_rd, TI_SDMA_ADDR_CONSTANT,
TI_SDMA_ADDR_POST_INCREMENT);
+ printf( "%s:%d\n", __FILE__, __LINE__ );
/* Activate and configure the TX DMA channel */
err = ti_sdma_activate_channel(&sc->sc_dmach_wr, ti_mmchs_dma_intr, sc);
if (err != 0)
return(err);
+ printf( "%s:%d\n", __FILE__, __LINE__ );
/* Setup the TX channel for MMC data transfers */
ti_sdma_set_xfer_burst(sc->sc_dmach_wr, TI_SDMA_BURST_64,
TI_SDMA_BURST_NONE);
@@ -1595,6 +1604,7 @@
if (sc->sc_mem_res == NULL)
panic("%s: Cannot map registers", device_get_name(dev));
+ device_printf( dev, "%s:%d\n", __FILE__, __LINE__ );
/* Allocate an IRQ resource for the MMC controller */
rid = 0;
sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
@@ -1602,6 +1612,7 @@
if (sc->sc_irq_res == NULL)
goto errout;
+ device_printf( dev, "%s:%d\n", __FILE__, __LINE__ );
/* Allocate DMA tags and maps */
err = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL,
@@ -1610,17 +1621,19 @@
if (err != 0)
goto errout;
+ device_printf( dev, "%s:%d\n", __FILE__, __LINE__ );
err = bus_dmamap_create(sc->sc_dmatag, 0, &sc->sc_dmamap);
if (err != 0)
goto errout;
+ device_printf( dev, "%s:%d\n", __FILE__, __LINE__ );
/* Initialise the DMA channels to be used by the controller */
err = ti_mmchs_init_dma_channels(sc);
if (err != 0)
goto errout;
/* Set the register offset */
- if (ti_chip() == CHIP_OMAP_3)
+ if (ti_chip() == CHIP_OMAP_3 || ti_chip() == CHIP_AM37X) // @todo XXX maybe switch instead of if?
sc->sc_reg_off = OMAP3_MMCHS_REG_OFFSET;
else if (ti_chip() == CHIP_OMAP_4)
sc->sc_reg_off = OMAP4_MMCHS_REG_OFFSET;
@@ -1691,6 +1704,7 @@
return (ENXIO);
}
sc->device_id = fdt32_to_cpu(did);
+ device_printf( dev, "Device id: %d\n", did );
/* Initiate the mtex lock */
TI_MMCHS_LOCK_INIT(sc);
@@ -1729,16 +1743,16 @@
#endif
/* Activate the device */
- device_printf( dev, "Activating the device..." );
+ device_printf( dev, "Activating the device...\n" );
err = ti_mmchs_activate(dev);
if (err)
goto out;
- device_printf( dev, "Initializing the device..." );
+ device_printf( dev, "Initializing the device...\n" );
/* Initialise the controller */
ti_mmchs_hw_init(dev);
- device_printf( dev, "Setting up interrupt the device..." );
+ device_printf( dev, "Setting up interrupt the device...\n" );
/* Activate the interrupt and attach a handler */
err = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
NULL, ti_mmchs_intr, sc, &sc->sc_irq_h);
@@ -1754,7 +1768,7 @@
device_add_child(dev, "mmc", 0);
device_set_ivars(dev, &sc->host);
- device_printf( dev, "Attaching to bus..." );
+ device_printf( dev, "Attaching to bus...\n" );
err = bus_generic_attach(dev);
out:
Modified: soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts Tue Jul 3 09:11:47 2012 (r238903)
+++ soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beagleboardxm.dts Tue Jul 3 11:24:41 2012 (r238904)
@@ -149,7 +149,7 @@
reg =<0x4809c000 0x1000 >;
interrupts = <83>;
interrupt-parent = <&AINTC>;
- mmchs-device-id = <0>;
+ mmchs-device-id = <1>;
};
More information about the svn-soc-all
mailing list