[PATCH 05/13] Removed ad7843.* from BBB port

Jarielle Catbagan jcatbagan93 at gmail.com
Sat Jun 20 02:57:55 UTC 2015


The AD7843 Interface routines are not relevant to the BBB, therefore it is removed.
ad7843.c has been removed from the compilation process in Makefile.
---
 ports/beagleboneblack/Makefile |   2 +-
 ports/beagleboneblack/ad7843.c | 334 -----------------------------------------
 ports/beagleboneblack/ad7843.h |  35 -----
 3 files changed, 1 insertion(+), 370 deletions(-)
 delete mode 100644 ports/beagleboneblack/ad7843.c
 delete mode 100644 ports/beagleboneblack/ad7843.h

diff --git a/ports/beagleboneblack/Makefile b/ports/beagleboneblack/Makefile
index 2fceca3..ddf60e2 100644
--- a/ports/beagleboneblack/Makefile
+++ b/ports/beagleboneblack/Makefile
@@ -42,7 +42,7 @@ include	$(TOPDIR)/make/common.make
 #
 LOCSSRC		= 
 CPUSSRC		= vectors_arm.S
-LOCCSRC		= ad7843.c cpuio.c etherdev.c nand740.c 
+LOCCSRC		= cpuio.c etherdev.c nand740.c 
 COMCSRC		= arp.c cast.c cache.c chario.c cmdtbl.c \
 			  docmd.c dhcp_00.c dhcpboot.c dns.c edit.c env.c ethernet.c \
 			  flash.c gdb.c icmp.c if.c ledit_vt100.c monprof.c \
diff --git a/ports/beagleboneblack/ad7843.c b/ports/beagleboneblack/ad7843.c
deleted file mode 100644
index 79e37ba..0000000
--- a/ports/beagleboneblack/ad7843.c
+++ /dev/null
@@ -1,334 +0,0 @@
-//==========================================================================
-//
-//      ad7843.c
-//
-// Author(s):   Michael Kelly - Cogent Computer Systems, Inc.
-// Date:        03/06/03
-// Description:	AD7843 Interface routines for CSB740
-//				Modified from MC9328mxl version to use SPI1 
-//
-//==========================================================================
-
-#include "config.h"
-#include "cpuio.h"
-#include "genlib.h"
-#include "stddefs.h"
-#include "omap3530.h"
-#include "cpu_gpio.h"
-#include "ad7843.h"
-#include "cli.h"
-#include "umongpio.h"
-
-//--------------------------------------------------------------------------
-// function prototypes
-//
-int ads_init(void);
-int ads_rd(uchar ads_ctl);
-
-extern void udelay(int delay);
-
-#ifdef AD7843_GPIOMODE
-
-// After several days trying to get the OMAP's SPI3 controller to interface
-// to the AD7843, I gave up and implemented the protocol with GPIO...
-//	SPI_CS:		GPIO_91
-//	SPI_CLK:		GPIO_88
-//	SPI_MOSI:	GPIO_89
-//	SPI_MISO:	GPIO_90
-
-#define clrSpiCs()		GPIO3_REG(GPIO_DATAOUT) &= ~BIT27
-#define setSpiCs()		GPIO3_REG(GPIO_DATAOUT) |= BIT27
-#define clrSpiClk()		GPIO3_REG(GPIO_DATAOUT) &= ~BIT24
-#define setSpiClk()		GPIO3_REG(GPIO_DATAOUT) |= BIT24
-#define clrSpiMosi()	GPIO3_REG(GPIO_DATAOUT) &= ~BIT25
-#define setSpiMosi()	GPIO3_REG(GPIO_DATAOUT) |= BIT25
-#define getSpiMiso()	(GPIO3_REG(GPIO_DATAIN) & BIT26) ? 1 : 0
-
-
-// ads_rd():
-// A bit-banged implementation of the SPI access for AD7843...
-// Slow and steady gets the job done!
-//
-int
-ads_rd(uchar ads_ctl)
-{
-	ushort mask, val;
-
-	clrSpiClk();
-	clrSpiCs();
-
-	for(mask = 0x80;mask != 0;mask >>= 1) {
-		if (ads_ctl & mask)
-			setSpiMosi();
-		else
-			clrSpiMosi();
-
-		setSpiClk();
-		clrSpiClk();
-	}
-
-	val = 0;
-	for(mask = 0x8000;mask != 0;mask >>= 1) {
-		setSpiClk();
-		if (getSpiMiso())
-			val |= mask;
-		clrSpiClk();
-	}
-
-	clrSpiClk();
-	setSpiCs();
-	return(val);
-}
-
-int
-ads_init(void)
-{
-	GPIO3_REG(GPIO_OE) &= ~(BIT27 | BIT25 | BIT24);	// 0 = out
-	GPIO3_REG(GPIO_OE) |= BIT26;
-	setSpiCs();
-	clrSpiClk();
-	clrSpiMosi();
-	return(0);
-}
-
-#else
-
-//--------------------------------------------------------------------------
-// ads_init()/ads_rd():
-//
-// This routine sets up the OMAP3530 SPI3 port. It also turns on
-// the AD7843 pen interrupt via a dummy read. We are using CS0 on SPI3.  
-// Can't get this to work.  Signals look good on scope, but we're not
-// able to read the data back; hence the need for a GPIO version (above).
-
-int
-ads_rd(uchar ads_ctl)
-{
-	volatile ulong rxval;
-
-	SPI3_REG(SPI_IRQSTATUS) = 0x0003777f;
-	SPI3_REG(SPI_IRQENABLE) = 0x0000007f;
-	SPI3_REG(SPI_CH0_CTRL) = 0x00000001;		// Enable SPI3 Channel 0
-
-	// We have this OMAP3530 SPI ctrlr set up in 24-bit data mode, full
-	// duplex transmit/receive.  So, put the byte to be transferred in the
-	// upper 8 bits of the 24-bit word, then read back the next 16 bits...
-	SPI3_REG(SPI_TXD0) = ads_ctl << 16;
-
-	// Wait for the receive channel to be full...
-	while (!(SPI3_REG(SPI_CH0_STAT) & SPI_CH_RX0_FULL));
-
-	SPI3_REG(SPI_IRQSTATUS) = 0x0003777f;
-	
-	// Read the value...
-	rxval = SPI3_REG(SPI_RXD0);
-
-	SPI3_REG(SPI_CH0_CTRL) = 0x00000000;		// Disable SPI3 Channel 0
-
-//	if (rxval)
-//		printf("%08x\n",rxval);
-
-	return (rxval);
-}
-
-int
-ads_init()
-{
-	unsigned long conf;
-
-
-	// Soft reset...
-	SPI3_REG(SPI_SYSCONFIG) = 0x00000002;
-
-	// Wait for reset done...
-	while((SPI3_REG(SPI_SYSSTATUS) & 1) == 0);
-
-	// Configure chan zero of SPI3...
-	SPI3_REG(SPI_IRQSTATUS) = 0x0003777f;
-	SPI3_REG(SPI_IRQENABLE) = 0x0000007f;
-	SPI3_REG(SPI_MODULCTRL) = 0x00000000;	// Master, auto CS generation
-	SPI3_REG(SPI_CH0_CTRL) = 0x00000001;	// Enable SPI3 Channel 0
-
-	conf   	   = SPI_CH_CONF_DPE0
-			   | SPI_CH_CONF_TRM_TR
-		   	   | SPI_CH_CONF_WL(23)	 	// 24-bit data mode
-		   	   | SPI_CH_CONF_EPOL	  	// CS is active low
-		   	   | SPI_CH_CONF_SB_POL	  	// 
-		   	   | SPI_CH_CONF_CLKD(9);	// divide by 512 = 93Khz
-
-	SPI3_REG(SPI_CH0_CONF) = conf;
-
-	// enable the AD7843 so it can generate a touch interrupt.
-	// this consists of reading any channel, but setting the
-	// power down mode in the control byte to 00b.  note we
-	// flush the returned data
-
-	if (ads_rd(AD7843_S | AD7843_ADD_DFR_Y | AD7843_PD_MOD0) == -1)
-	{
-		printf("Error returned from ads_rd(0x%02x)!\n", (AD7843_S | AD7843_ADD_DFR_Y | AD7843_PD_MOD0));
-		return -1;
-	}
-
-	return 0;
-}
-#endif
-
-
-//--------------------------------------------------------------------------
-char *adsHelp[] = {
-	"Screen touch demo using AD7843 and OMAP3530 SPI port.",
-	"",
-	"Detect screen touches and display the x,y values via",
-	"the AD7843 and OMAP3530 SPI port.",
-	0
-};
-
-int ads(int argc, char *argv[])
-{
-	uchar c;
-	int pen, i;
-	//int last_x, last_y;
-	int sum_x, sum_y, average_x, average_y;
-
-	// init the SPI and AD7843
-	if (ads_init() == -1)
-	{
-		printf("Error intializing AD7843!\n");
-		return (CMD_FAILURE);
-	}
-
-	printf("Waiting for Touch (Press \'X\' to end test)...\n");
-
-	pen = 0;
-	while (1)
-	{
-		if (gotachar())
-		{
-			c = getchar();
-			if ((c == 'X') || (c == 'x')) goto done;
-			if (c == 'L') {
-				printf("In ads_rd loop...\n");
-				while(1)
-					ads_rd(AD7843_S | AD7843_PD_MOD0 | AD7843_ADD_DFR_X);
-			}
-		}
-		if (GPIO_tst(PIRQ) == 0)
-		{
-			printf("Pen Down....\n");
-			pen = 1;
-			//last_x = last_y = 0;
-			while(GPIO_tst(PIRQ) == 0) // keep reading until touch goes away
-			{
-				sum_x = sum_y = 0;
-
-				// display every 4 samples
-				for (i = 0; i < 64 ; i++)
-				{
-					sum_x += ads_rd(AD7843_S | AD7843_PD_MOD0 | AD7843_ADD_DFR_X);
-					sum_y += ads_rd(AD7843_S | AD7843_PD_MOD0 | AD7843_ADD_DFR_Y);
-				}
-				average_x = sum_x/4;
-				average_y = sum_y/4;
-
- 				//if ((average_x != last_x) || (average_y != last_y))
- 					printf("X = %04d, Y = %04d\n", average_x, average_y);
-	
-				//last_x = average_x;
-				//last_y = average_y;
-
-			} // while pen is down
-		}
-		if (pen)
-		{
-			printf("Pen Up....\n");
-			pen = 0;
-		}
-
-	}
-
-done:		
-	return(CMD_SUCCESS);
-}
-
-
-/* The next four functions are required for the "scribble" feature in
- * the FBI command to work...
- */
-#include "tsi.h"
-
-#define TOUCH_MAX_YVAL	32760
-#define TOUCH_MAX_XVAL	30752 
-
-/* tsi_init():
- * Used to initialize the touch screen interface.
- */
-int
-tsi_init(void)
-{
-	return(ads_init());
-}
-
-/* tsi_active():
- * Return 1 if the screen is being touched, else 0.
- */
-int
-tsi_active(void)
-{
-	if (GPIO_tst(PIRQ) == 0)
-		return(1);
-	return(0);
-}
-
-/* tsi_getx()/tsi_gety():
- * Return the current 'x' or 'y' position detected by the touch screen.
- * Notice that these functions return a value that is relative to the
- * frame-buffer coordinates, not raw the coordinates generated by the
- * touch-screen hardware.
- * This requires not only that the incoming value from the AD7843 be
- * normalized to the range of the X/Y coordinates of the frame buffer,
- * but it also requires that the 'Y' coordinate be adjusted to be from
- * top-down, not bottom up.
- */
-int
-tsi_getx(void)
-{
-	int i, val, tot, stot, tmp;
-	
-	tot = stot = 0;
-
-	/* Attempt 8 samples, then average...
-	 */
-	for(i=0;i<8;i++) {
-		tmp = ads_rd(AD7843_S | AD7843_PD_MOD0 | AD7843_ADD_DFR_X);
-		if ((tmp > 0) && (tmp < TOUCH_MAX_XVAL)) {
-			tot += tmp;
-			stot++;
-		}
-	}
-	tot /= stot;
-
-	val = tot / (TOUCH_MAX_XVAL/PIXELS_PER_ROW);
-	return(val);
-}
-
-int
-tsi_gety(void)
-{
-	int i, val, tot, stot, tmp;
-	
-	tot = stot = 0;
-
-	/* Attempt 8 samples, then average...
-	 */
-	for(i=0;i<8;i++) {
-		tmp = ads_rd(AD7843_S | AD7843_PD_MOD0 | AD7843_ADD_DFR_Y);
-		if ((tmp > 0) && (tmp < TOUCH_MAX_YVAL)) {
-			tot += tmp;
-			stot++;
-		}
-	}
-	tot /= stot;
-
-	val = PIXELS_PER_COL - (tot/(TOUCH_MAX_YVAL/PIXELS_PER_COL));
-	return(val);
-}
diff --git a/ports/beagleboneblack/ad7843.h b/ports/beagleboneblack/ad7843.h
deleted file mode 100644
index f4a0b71..0000000
--- a/ports/beagleboneblack/ad7843.h
+++ /dev/null
@@ -1,35 +0,0 @@
-//==========================================================================
-//
-// ad7843.h
-//
-// Author(s):    Michael Kelly, Cogent Computer Systems, Inc.
-// Contributors: 
-// Date:         03/06/03
-// Description:  This file contains register offsets and bit defines
-//				 for the Analog Devices AD7843 Touch Screen Controller
-//
-
-//
-// Bit positions for AD7843 Control byte
-//
-#define AD7843_S			0x80	    // Start bit, always 1
-#define AD7843_8BIT			0x08	    // 0 = 12-bit conversion, 1 = 8-bits
-#define AD7843_SER			0x04	    // 0 = Differential, 1 = Single ended
-
-// Address select defines for Single-Ended mode
-#define AD7843_ADD_SER_Y	(AD7843_SER | (0x1 << 4))	// Y position measurement
-#define AD7843_ADD_SER_IN3	(AD7843_SER | (0x2 << 4))	// auxillary input 1 measurement
-#define AD7843_ADD_SER_X	(AD7843_SER | (0x5 << 4))	// X position measurement
-#define AD7843_ADD_SER_IN4	(AD7843_SER | (0x6 << 4))	// auxillary input 2 measurement
-
-// Address select defines for Differential mode
-#define AD7843_ADD_DFR_Y		(0x1 << 4)	// Y position measurement
-#define AD7843_ADD_DFR_X		(0x5 << 4)	// X position measurement
-
-// Power Down Modes
-#define AD7843_PD_MOD0		0x0			// low-power mode, no power-up delay, *IRQ is enabled
-#define AD7843_PD_MOD1		0x1			// same as low-power mode, except *IRQ is disabled
-#define AD7843_PD_MOD2		0x2			// device on, *IRQ is enabled
-#define AD7843_PD_MOD3		0x3			// device on, *IRQ is disabled
-
-//#define AD7843_GPIOMODE	
-- 
2.3.3




More information about the umon-devel mailing list