PERFORCE change 197184 for review

Jakub Wojciech Klama jceel at FreeBSD.org
Thu Aug 4 14:06:33 UTC 2011


http://p4web.freebsd.org/@@197184?ac=10

Change 197184 by jceel at jceel_cyclone on 2011/08/04 14:05:30

	Remove unneeded files from previous commit.

Affected files ...

.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/EA3250#9 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/files.lpc#8 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_dmac.c#2 delete
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_mmc.c#4 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpcreg.h#8 edit
.. //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpcvar.h#6 edit
.. //depot/projects/soc2011/jceel_lpc/sys/boot/fdt/dts/ea3250.dts#9 edit

Differences ...

==== //depot/projects/soc2011/jceel_lpc/sys/arm/conf/EA3250#9 (text+ko) ====

@@ -97,9 +97,6 @@
 
 device		lpcfb
 
-# DMAC
-device		dmac
-
 # Flattened Device Tree
 options 	FDT
 options 	FDT_DTB_STATIC

==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/files.lpc#8 (text+ko) ====

@@ -15,7 +15,6 @@
 arm/lpc/lpc_fb.c			optional	lpcfb
 arm/lpc/lpc_gpio.c			optional	lpcgpio
 arm/lpc/lpc_spi.c			optional	lpcspi
-arm/lpc/lpc_dmac.c			optional	dmac
 arm/lpc/ssd1289.c			optional	ssd1289
 dev/uart/uart_dev_ns8250.c		optional	uart
 kern/kern_clocksource.c			standard

==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpc_mmc.c#4 (text+ko) ====

@@ -69,12 +69,10 @@
 	device_t		lm_dev;
 	struct mtx		lm_mtx;
 	struct resource *	lm_mem_res;
-	struct resource *	lm_cmd_irq_res;
-	struct resource *	lm_data_irq_res;
+	struct resource *	lm_irq_res;
 	bus_space_tag_t		lm_bst;
 	bus_space_handle_t	lm_bsh;
-	void *			lm_cmd_intrhand;
-	void *			lm_data_intrhand;
+	void *			lm_intrhand;
 	struct mmc_host		lm_host;
 	struct mmc_request *	lm_req;
 	struct mmc_data *	lm_data;
@@ -89,26 +87,10 @@
 
 #define	LPC_SD_BLOCKSIZE	512
 
-#define	LPC_SD_CMD_MASK							\
-    (LPC_SD_STATUS_CMDSENT | LPC_SD_STATUS_CMDRESPEND |			\
-    LPC_SD_STATUS_CMDTIMEOUT | LPC_SD_STATUS_CMDCRCFAIL |		\
-    LPC_SD_STATUS_STARTBITERR)
-
-#define	LPC_SD_DATA_MASK						\
-    (LPC_SD_STATUS_RXDATAAVLBL | LPC_SD_STATUS_TXDATAAVLBL |		\
-    LPC_SD_STATUS_RXFIFOEMPTY | LPC_SD_STATUS_TXFIFOEMPTY |		\
-    LPC_SD_STATUS_RXFIFOFULL | LPC_SD_STATUS_TXFIFOFULL |		\
-    LPC_SD_STATUS_RXFIFOHALFFULL | LPC_SD_STATUS_TXFIFOHALFEMPTY |	\
-    LPC_SD_STATUS_RXACTIVE | LPC_SD_STATUS_TXACTIVE |			\
-    LPC_SD_STATUS_DATABLOCKEND | LPC_SD_STATUS_DATAEND |		\
-    LPC_SD_STATUS_RXOVERRUN | LPC_SD_STATUS_TXUNDERRUN |		\
-    LPC_SD_STATUS_DATATIMEOUT | LPC_SD_STATUS_DATACRCFAIL)
-
 static int lpc_mmc_probe(device_t);
 static int lpc_mmc_attach(device_t);
 static int lpc_mmc_detach(device_t);
-static void lpc_mmc_cmd_intr(void *);
-static void lpc_mmc_data_intr(void *);
+static void lpc_mmc_intr(void *);
 
 static void lpc_mmc_cmd(struct lpc_mmc_softc *, struct mmc_command *);
 static void lpc_mmc_setup_xfer(struct lpc_mmc_softc *, struct mmc_data *);
@@ -166,50 +148,28 @@
 	device_printf(dev, "virtual register space: 0x%08lx\n", sc->lm_bsh);
 
 	rid = 0;
-	sc->lm_cmd_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
+	sc->lm_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
 	    RF_ACTIVE);
-	if (!sc->lm_cmd_irq_res) {
-		device_printf(dev, "cannot allocate cmd interrupt\n");
+	if (!sc->lm_irq_res) {
+		device_printf(dev, "cannot allocate interrupt\n");
 		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lm_mem_res);
 		return (ENXIO);
 	}
 
-	rid = 1;
-	sc->lm_data_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
-	    RF_ACTIVE);
-	if (!sc->lm_data_irq_res) {
-		device_printf(dev, "cannot allocate data interrupt\n");
-		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lm_mem_res);
-		return (ENXIO);
-	}
-
-
-	if (bus_setup_intr(dev, sc->lm_cmd_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
-	    NULL, lpc_mmc_cmd_intr, sc, &sc->lm_cmd_intrhand))
+	if (bus_setup_intr(dev, sc->lm_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
+	    NULL, lpc_mmc_intr, sc, &sc->lm_intrhand))
 	{
 		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lm_mem_res);
-		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lm_cmd_irq_res);
+		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lm_irq_res);
 		device_printf(dev, "cannot setup interrupt handler\n");
 		return (ENXIO);
 	}
 
-	if (bus_setup_intr(dev, sc->lm_data_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
-	    NULL, lpc_mmc_data_intr, sc, &sc->lm_data_intrhand))
-	{
-		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lm_mem_res);
-		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lm_cmd_irq_res);
-		device_printf(dev, "cannot setup interrupt handler\n");
-		return (ENXIO);
-	}
-
 	sc->lm_host.f_min = 312500;
-	sc->lm_host.f_max = 3125000;//25000000;
+	sc->lm_host.f_max = 25000000;
 	sc->lm_host.host_ocr = MMC_OCR_320_330 | MMC_OCR_330_340;
 	sc->lm_host.caps = MMC_CAP_4_BIT_DATA;
 
-	bus_space_write_4(sc->lm_bst, 0xd0028000, 0x70, (1 << 15));
-	bus_space_write_4(sc->lm_bst, 0xd0028000, 0x64, (1 << 15));
-
 	lpc_pwr_write(dev, LPC_CLKPWR_MS_CTRL,
 	    LPC_CLKPWR_MS_CTRL_CLOCK_EN | LPC_CLKPWR_MS_CTRL_SD_CLOCK | 1);
 	lpc_mmc_write_4(sc, LPC_SD_POWER, LPC_SD_POWER_CTRL_ON);
@@ -219,11 +179,9 @@
 	child = device_add_child(dev, "mmc", -1);
 	if (!child) {
 		device_printf(dev, "attaching MMC bus failed!\n");
-		bus_teardown_intr(dev, sc->lm_cmd_irq_res, sc->lm_cmd_intrhand);
-		bus_teardown_intr(dev, sc->lm_data_irq_res, sc->lm_data_intrhand);
+		bus_teardown_intr(dev, sc->lm_irq_res, sc->lm_intrhand);
 		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->lm_mem_res);
-		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lm_cmd_irq_res);
-		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lm_data_irq_res);
+		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->lm_irq_res);
 		return (ENXIO);
 	}
 
@@ -242,7 +200,7 @@
 }
 
 static void
-lpc_mmc_cmd_intr(void *arg)
+lpc_mmc_intr(void *arg)
 {
 	struct lpc_mmc_softc *sc = (struct lpc_mmc_softc *)arg;
 	struct mmc_command *cmd;
@@ -250,7 +208,17 @@
 
 	status = lpc_mmc_read_4(sc, LPC_SD_STATUS);
 
-	device_printf(sc->lm_dev, "cmd interrupt: 0x%08x\n", status);
+	device_printf(sc->lm_dev, "interrupt: 0x%08x\n", status);
+
+	if (status & LPC_SD_STATUS_TXACTIVE) {
+		device_printf(sc->lm_dev, "TX active\n");
+		lpc_mmc_fifo_write(sc);
+	}
+
+	if (status & LPC_SD_STATUS_RXACTIVE) {
+		device_printf(sc->lm_dev, "RX active\n");
+		lpc_mmc_fifo_read(sc);
+	}
 
 	if (status & LPC_SD_STATUS_CMDCRCFAIL) {
 		device_printf(sc->lm_dev, "command CRC error\n");
@@ -275,6 +243,10 @@
 		sc->lm_req = NULL;
 	}
 	
+	if (status & LPC_SD_STATUS_DATATIMEOUT) {
+		device_printf(sc->lm_dev, "data timeout\n");
+		lpc_mmc_write_4(sc, LPC_SD_CLEAR, LPC_SD_STATUS_DATATIMEOUT);
+	}
 #if 0
 	if (status & LPC_SD_STATUS_TXUNDERRUN) {
 
@@ -346,48 +318,12 @@
 	device_printf(sc->lm_dev, "isr done\n");
 }
 
-static void
-lpc_mmc_data_intr(void *arg)
-{
-	struct lpc_mmc_softc *sc = (struct lpc_mmc_softc *)arg;
-	uint32_t status;
-
-	status = lpc_mmc_read_4(sc, LPC_SD_STATUS);
-
-	//device_printf(sc->lm_dev, "data interrupt: 0x%08x\n", status);
-
-	if (status & LPC_SD_STATUS_TXACTIVE) {
-		device_printf(sc->lm_dev, "TX active\n");
-		lpc_mmc_fifo_write(sc);
-	}
-
-	if (status & LPC_SD_STATUS_RXACTIVE) {
-		//device_printf(sc->lm_dev, "RX active\n");
-		lpc_mmc_fifo_read(sc);
-	}
-
-	if (status & LPC_SD_STATUS_DATATIMEOUT) {
-		device_printf(sc->lm_dev, "data timeout\n");
-		lpc_mmc_write_4(sc, LPC_SD_CLEAR, LPC_SD_STATUS_DATATIMEOUT);
-	}
-
-	if (status & LPC_SD_STATUS_DATAEND) {
-		device_printf(sc->lm_dev, "data end, transffered %d bytes\n",
-		    sc->lm_xfer_done);
-		lpc_mmc_write_4(sc, LPC_SD_CLEAR, LPC_SD_STATUS_DATAEND);
-		lpc_mmc_write_4(sc, LPC_SD_CLEAR, LPC_SD_STATUS_DATABLOCKEND);
-	}
-		
-
-	//lpc_mmc_write_4(sc, LPC_SD_MASK1, 0);
-}
-
 static int
 lpc_mmc_request(device_t bus, device_t child, struct mmc_request *req)
 {
 	struct lpc_mmc_softc *sc = device_get_softc(bus);
 
-	//device_printf(bus, "lpc_mmc_request: %p\n", req);
+	device_printf(bus, "lpc_mmc_request: %p\n", req);
 
 	lpc_mmc_lock(sc);
 	if (sc->lm_req)
@@ -411,7 +347,7 @@
 	//struct mmc_data *data = cmd->data;
 	uint32_t cmdreg = 0;
 
-	//device_printf(sc->lm_dev, "cmd: %d arg: 0x%08x\n", cmd->opcode, cmd->arg);
+	device_printf(sc->lm_dev, "cmd: %d arg: 0x%08x\n", cmd->opcode, cmd->arg);
 
 	if (cmd->flags & MMC_RSP_PRESENT)
 		cmdreg |= LPC_SD_COMMAND_RESPONSE;
@@ -425,12 +361,12 @@
 	cmdreg |= LPC_SD_COMMAND_ENABLE;
 	cmdreg |= (cmd->opcode & LPC_SD_COMMAND_CMDINDEXMASK);
 
-	lpc_mmc_write_4(sc, LPC_SD_MASK0, LPC_SD_CMD_MASK);
-	lpc_mmc_write_4(sc, LPC_SD_MASK1, LPC_SD_DATA_MASK);
+	lpc_mmc_write_4(sc, LPC_SD_MASK0, 0xffffffff);
+	lpc_mmc_write_4(sc, LPC_SD_MASK1, 0xffffffff);
 	lpc_mmc_write_4(sc, LPC_SD_ARGUMENT, cmd->arg);
 	lpc_mmc_write_4(sc, LPC_SD_COMMAND, cmdreg);
 
-	//device_printf(sc->lm_dev, "cmdarg: 0x%08x, cmdreg: 0x%08x\n", cmd->arg, cmdreg);
+	device_printf(sc->lm_dev, "cmdarg: 0x%08x, cmdreg: 0x%08x\n", cmd->arg, cmdreg);
 }
 
 static void
@@ -441,7 +377,7 @@
 	sc->lm_data = data;
 	sc->lm_xfer_done = 0;
 
-	//device_printf(sc->lm_dev, "setup_xfer data: %p\n", data);
+	device_printf(sc->lm_dev, "setup_xfer data: %p\n", data);
 
 	if (data->flags & MMC_DATA_READ)
 		sc->lm_xfer_direction = DIRECTION_READ;
@@ -453,14 +389,14 @@
 	    ? LPC_SD_DATACTRL_WRITE 
 	    : LPC_SD_DATACTRL_READ);
 
-	datactrl |= LPC_SD_DATACTRL_ENABLE | LPC_SD_DATACTRL_MODE;
+	datactrl |= LPC_SD_DATACTRL_ENABLE;
 
-	//if (data->len > LPC_SD_BLOCKSIZE)
-		datactrl |= 0x20;
+	if (data->len > LPC_SD_BLOCKSIZE)
+		datactrl |= 0x90;
 
-	//device_printf(sc->lm_dev, "setup_xfer: datactrl=0x%08x\n", datactrl);
+	device_printf(sc->lm_dev, "setup_xfer: datactrl=0x%08x\n", datactrl);
 
-	lpc_mmc_write_4(sc, LPC_SD_DATATIMER, 0xFFFF0000);
+	lpc_mmc_write_4(sc, LPC_SD_DATATIMER, 0x100000);
 	lpc_mmc_write_4(sc, LPC_SD_DATALENGTH, data->len);
 	lpc_mmc_write_4(sc, LPC_SD_DATACTRL, datactrl);
 
@@ -473,12 +409,12 @@
 {
 	do {
 		uint32_t *data = sc->lm_data->data;
-	//	int todo = sc->lm_data->len > 16 ? 16 : (sc->lm_data->len / 4) - sc->lm_xfer_done; 
-		//device_printf(sc->lm_dev, "reading from fifo %d words [%d of %d words done]\n",
-		    //todo, sc->lm_xfer_done, (sc->lm_data->len / 4));
-
-		while ((lpc_mmc_read_4(sc, LPC_SD_STATUS) & LPC_SD_STATUS_RXDATAAVLBL)) {
-			
+		int i;
+		int todo = sc->lm_data->len > 16 ? 16 : (sc->lm_data->len / 4) - sc->lm_xfer_done; 
+		device_printf(sc->lm_dev, "reading from fifo %d words [%d of %d words done]\n",
+		    todo, sc->lm_xfer_done, (sc->lm_data->len / 4));
+	
+		for (i = 0; i < 16; i++) {
 			data[sc->lm_xfer_done] = 
 			    lpc_mmc_read_4(sc, LPC_SD_FIFO);
 			sc->lm_xfer_done++;
@@ -492,12 +428,11 @@
 		*/
 
 		//sc->lm_xfer_done += 16;
-	} while (sc->lm_xfer_done < (sc->lm_data->len / 4));
+		device_printf(sc->lm_dev, "currently done %d\n", sc->lm_xfer_done);
+		kdb_enter("data read", "data read");
+	} while (lpc_mmc_read_4(sc, LPC_SD_STATUS) & LPC_SD_STATUS_RXDATAAVLBL);
 
-	device_printf(sc->lm_dev, "read done, read %d bytes, status: 0x%08x\n", 
-	    sc->lm_xfer_done, lpc_mmc_read_4(sc, LPC_SD_STATUS));
-
-	lpc_mmc_write_4(sc, LPC_SD_CLEAR, LPC_SD_STATUS_DATACRCFAIL);
+	device_printf(sc->lm_dev, "partial read done\n");
 }
 
 static void
@@ -625,7 +560,7 @@
 	if ((LPC_SD_CLK / (2 * (clkdiv + 1))) > ios->clock)
 		clkdiv++;
 
-	//device_printf(bus, "clock: %dHz, clkdiv: %d\n", ios->clock, clkdiv);
+	device_printf(bus, "clock: %dHz, clkdiv: %d\n", ios->clock, clkdiv);
 
 	lpc_mmc_write_4(sc, LPC_SD_CLOCK, clkdiv | LPC_SD_CLOCK_ENABLE);
 	return (0);

==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpcreg.h#8 (text+ko) ====

@@ -141,7 +141,6 @@
 #define	LPC_CLKPWR_MS_CTRL_SD_CLOCK	(1 << 5)
 #define	LPC_CLKPWR_MS_CTRL_CLKDIV_MASK	0xf
 #define	LPC_CLKPWR_DMACLK_CTRL		0xe8
-#define	LPC_CLKPWR_DMACLK_CTRL_EN	(1 << 0)
 #define	LPC_CLKPWR_FLASHCLK_CTRL	0xc8
 #define	LPC_CLKPWR_MACCLK_CTRL		0x90
 #define	LPC_CLKPWR_LCDCLK_CTRL		0x54
@@ -561,8 +560,6 @@
 #define	LPC_DMAC_SOFTLSREQ		0x2c
 #define	LPC_DMAC_CONFIG			0x30
 #define	LPC_DMAC_CHADDR(_n)		(0x100 + (_n * 0x20))
-#define	LPC_DMAC_CHNUM			8
-#define	LPC_DMAC_CHSIZE			0x20
 #define	LPC_DMAC_CH_SRCADDR		0x00
 #define	LPC_DMAC_CH_DSTADDR		0x04
 #define	LPC_DMAC_CH_LLI			0x08
@@ -585,10 +582,6 @@
 #define	LPC_DMAC_CH_CONFIG_ITC		(1 << 15)
 #define	LPC_DMAC_CH_CONFIG_IE		(1 << 14)
 #define	LPC_DMAC_CH_CONFIG_FLOWCNTL(_n)	((_n & 0x7) << 11)
-#define	LPC_DMAC_CH_FCNTL_MEM_TO_MEM	0
-#define	LPC_DMAC_CH_FCNTL_MEM_TO_DEV	1
-#define	LPC_DMAC_CH_FCNTL_DEV_TO_MEM	2
-#define	LPC_DMAC_CH_FCNTL_DEV_TO_DEV	3
 #define	LPC_DMAC_CH_CONFIG_DESTP(_n)	((_n & 0x1f) << 6)
 #define	LPC_DMAC_CH_CONFIG_SRCP(_n)	((_n & 0x1f) << 1)
 #define	LPC_DMAC_CH_CONFIG_E		(1 << 0)

==== //depot/projects/soc2011/jceel_lpc/sys/arm/lpc/lpcvar.h#6 (text+ko) ====

@@ -44,13 +44,10 @@
 /* DMA */
 struct lpc_dmac_channel_config
 {
-	int		ldc_fcntl;
 	int		ldc_src_periph;
+	int		ldc_dst_periph;
 	int		ldc_src_width;
-	int		ldc_src_incr;
-	int		ldc_dst_periph;
 	int		ldc_dst_width;
-	int		ldc_dst_incr;
 	void		(*ldc_success_handler)(void);
 	void		(*ldc_error_handler)(void);
 };

==== //depot/projects/soc2011/jceel_lpc/sys/boot/fdt/dts/ea3250.dts#9 (text+ko) ====

@@ -179,13 +179,6 @@
 		compatible = "simple-bus";
 		ranges = <0x0 0x30000000 0x10000000>;
 
-		dmac at 100000 {
-			compatible = "lpc,dmac";
-			reg = <0x100000 0x20000>;
-			interrupts = <28>;
-			interrupt-parent = <&PIC>;
-		};
-
 		usb at 1020000 {
 			compatible = "lpc,usb-ohci", "usb-ohci";
 			reg = <0x1020000 0x20000>;


More information about the p4-projects mailing list