diff -urN linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/APM_SLEEP_TIMER linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/APM_SLEEP_TIMER --- linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/APM_SLEEP_TIMER Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/APM_SLEEP_TIMER Thu Mar 8 18:15:41 2001 @@ -0,0 +1,17 @@ +The APM supports ioctl : APM_IOC_GET_SLEEP_TIMER and +APM_IOC_SET_SLEEP_TIMER +example : + mknod apm_bios c 10 134 + + + +#include "apm_bios.h" + unsigned long sleep_timer; + apm_bios = open("/dev/apm_bios", O_RDWR); + ioctl(apm_bios, APM_IOC_GET_SLEEP_TIMER, &sleep_timer); + sleep_timer = 2*60; // setup sleep-timer 2 min. + ioctl(apm_bios, APM_IOC_SET_SLEEP_TIMER, &sleep_timer); + sleep_timer = 0; // turn off APM function + ioctl(apm_bios, APM_IOC_SET_SLEEP_TIMER, &sleep_timer); + + diff -urN linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/AUDIO_GSM_EXAMPLE linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/AUDIO_GSM_EXAMPLE --- linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/AUDIO_GSM_EXAMPLE Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/AUDIO_GSM_EXAMPLE Thu Mar 8 18:15:28 2001 @@ -0,0 +1,12 @@ +The GSM supports ioctl : SNDCTL_DSP_GSM +example : + mknod dsp c 14 3 + + #include "soundcard.h" + int gsm = 1; + dsp = open("/dev/dsp", O_RDWR); + ioctl(dsp, SNDCTL_DSP_GSM, &gsm); // Change DSP to GSM mode + gsm = 0; + ioctl(dsp, SNDCTL_DSP_GSM, &gsm); // Change DSP to WAVE mode + + diff -urN linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/FreeBird linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/FreeBird --- linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/FreeBird Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/FreeBird Thu Mar 8 18:20:48 2001 @@ -0,0 +1,20 @@ +Freebird-1.1 is produced by Legned(C) ,Inc. +(http://www.legend.com.cn) +and software/linux mainatined by Coventive(C),Inc. +(http://www.coventive.com) + +Based on the Nicolas's strongarm kernel tree. + +=============================================================== +Maintainer: + +Chester Kuo + +Author : +Tim wu +CIH +Eric Peng +Jeff Lee +Allen Cheng +Tony Liu + diff -urN linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/RTC-test linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/RTC-test --- linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/RTC-test Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/RTC-test Tue Mar 6 16:12:39 2001 @@ -0,0 +1,214 @@ +/* SA-11x0 RTC driver testing application ,drived from rtc.txt + * Also it's GPL program + * + * Chester Kuo + */ +#include +#include +#include +#include +#include +#include +#include +#include + +void main(void) { + + int i, fd, retval, irqcount = 0; + unsigned long tmp, data; + struct rtc_time rtc_tm; + + fd = open ("/dev/rtc", O_RDONLY); + + if (fd == -1) { + perror("/dev/rtc"); + exit(errno); + } + + fprintf(stderr, "\n\t\t\tRTC Driver Test Example.\n\n"); + + /* Turn on update interrupts (one per second) */ + retval = ioctl(fd, RTC_UIE_ON, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading /dev/rtc:"); + fflush(stderr); + + for (i=1; i<6; i++) { + /* This read will block */ + retval = read(fd, &data, sizeof(unsigned long)); + + if (retval == -1) { + perror("read"); + exit(errno); + } + fprintf(stderr, " %d",i); + fflush(stderr); + irqcount++; + } + + fprintf(stderr, "\nAgain, from using select(2) on /dev/rtc:"); + fflush(stderr); + for (i=1; i<6; i++) { + struct timeval tv = {5, 0}; /* 5 second timeout on select */ + fd_set readfds; + + FD_ZERO(&readfds); + FD_SET(fd, &readfds); + /* The select will wait until an RTC interrupt happens. */ + retval = select(fd+1, &readfds, NULL, NULL, &tv); + if (retval == -1) { + perror("select"); + exit(errno); + } + /* This read won't block unlike the select-less case above. */ + retval = read(fd, &data, sizeof(unsigned long)); + if (retval == -1) { + perror("read"); + exit(errno); + } + fprintf(stderr, " %d",i); + fflush(stderr); + irqcount++; + } + + /* Turn off update interrupts */ + retval = ioctl(fd, RTC_UIE_OFF, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + /* Read the RTC time/date */ + retval = ioctl(fd, RTC_RD_TIME, &rtc_tm); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n", + rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900, + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + + /* Set the alarm to 5 sec in the future, and check for rollover */ + rtc_tm.tm_sec += 5; + if (rtc_tm.tm_sec >= 60) { + rtc_tm.tm_sec %= 60; + rtc_tm.tm_min++; + } + if (rtc_tm.tm_min == 60) { + rtc_tm.tm_min = 0; + rtc_tm.tm_hour++; + } + if (rtc_tm.tm_hour == 24) + rtc_tm.tm_hour = 0; + + + retval = ioctl(fd, RTC_ALM_SET, &rtc_tm); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + /* Read the current alarm settings */ + retval = ioctl(fd, RTC_ALM_READ, &rtc_tm); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + fprintf(stderr, "Alarm time now set to %02d:%02d:%02d.\n", + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + + /* Enable alarm interrupts */ + retval = ioctl(fd, RTC_AIE_ON, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + fprintf(stderr, "Waiting 5 seconds for alarm..."); + fflush(stderr); + + /* This blocks until the alarm ring causes an interrupt */ + retval = read(fd, &data, sizeof(unsigned long)); + if (retval == -1) { + perror("read"); + exit(errno); + } + irqcount++; + fprintf(stderr, " okay. Alarm rang.\n"); + + + /* Disable alarm interrupts */ + retval = ioctl(fd, RTC_AIE_OFF, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + /* Read periodic IRQ rate */ + retval = ioctl(fd, RTC_IRQP_READ, &tmp); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + fprintf(stderr, "\nPeriodic IRQ rate was %ldHz.\n", tmp); + + fprintf(stderr, "Counting 20 interrupts at:"); + fflush(stderr); + +#if 0 + /* The frequencies 128Hz, 256Hz, ... 8192Hz are only allowed for root. */ + for (tmp=2; tmp<=64; tmp*=2) { + + retval = ioctl(fd, RTC_IRQP_SET, tmp); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + fprintf(stderr, "\n%ldHz:\t", tmp); + fflush(stderr); + + + /* Enable periodic interrupts */ + retval = ioctl(fd, RTC_PIE_ON, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + for (i=1; i<21; i++) { + /* This blocks */ + retval = read(fd, &data, sizeof(unsigned long)); + if (retval == -1) { + perror("read"); + exit(errno); + } + fprintf(stderr, " %d",i); + fflush(stderr); + irqcount++; + } + + /* Disable periodic interrupts */ + retval = ioctl(fd, RTC_PIE_OFF, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + } +#endif + + fprintf(stderr, "\n\n\t\t\t *** Test complete ***\n"); + fprintf(stderr, "\nTyping \"cat /proc/interrupts\" will show %d more events on + IRQ \n\n", + irqcount); + + close(fd); + +} /* end main */ + diff -urN linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/Xcalibrate linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/Xcalibrate --- linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/Xcalibrate Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/Xcalibrate Mon Feb 26 16:01:29 2001 @@ -0,0 +1,780 @@ +/* Copyright (C) 2000,2001 Coventive,Inc. + * Author : Allen Cheng + * Eric Peng + * + * Description: This is program is used to calibrate UCB-1300 touch + * screen ,first test under FreeBird-1.1 / X environment + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/* + Allen Cheng. 2000/6/20 +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include + +/* + * This program is for the calibration of the touchscreen. + * Because the signal of the touchscreen is analog, + * the demo board of the Assabet is using the UCB1300 to convert the signal of the touchscreen + * from analog to ditital. + * We get the data from the touchscreen driver is just the data of the A/D converter of the UCB1300 + * Thus, we have to convert the data of the A/D converter to the real X,Y coordination. + * + * We plot 5 black-crosses at the LCD screen.The sequence is from (1) to (5), + * the relation is plot at Fig.1. + * + * We get the 5-point data of the A/D converter of the UCB1300 + * and determine these data is right or not. + * And we calculate the relationship between the data of the A/D converter of the UCB1300 + * and the real X,Y coordination. + */ + +/* + According to the relationship,we can get the real X,Y coordination when user touches any point of the the +touchscreen. + + Y-axis <-- (0,0) + +---------------------------+ + | (3) (2) | | + | + + | | + |(40,200) (40,40) | \/ + | | X-axis + | | + | (1) | + | + | + | (160,120) | + | | + | | + | (4) (5) | + | + + | + |(280,200) (280,40) | + | | + +---------------------------+ + (320,240) + +---+ + +---+(RS232 Cable connector) + ( Fig. 1 ) + +The other part of this program is draw a mini-keyboard at the LCD. Whe user touches the key of the mini-keyboard +*/ + +#define ERROR 9 +#define ERROR_RATE 16 + +/* we are going to get the screen width, height by querying X server */ +unsigned int SCREEN_WIDTH,SCREEN_HEIGHT; + +#define SZ_XHAIR 50 + +#if 0 +#define X1 40 +#define Y1 40 +#define X2 280 +#define Y2 200 +#define LEN 10 +#define Xm 160 +#define Ym 120 +#endif +/* we will calculate X1,Y1 , X2,Y2 and Xm,Ym by SCREEN_WIDTH, SCREEN_HEIGHT */ +unsigned int X1,Y1,X2,Y2,Xm,Ym; + +#define step 20 +#define Points 20 +#define Xdef1 ((Xm-X1)/step) +#define Ydef1 ((Ym-Y1)/step) +#define Xdef2 ((X2-X1)/step) +#define Ydef2 ((Y2-Y1)/step) + +#define DEV_NODE "/dev/tsraw" + +typedef struct { + short p; + short x; + short y; + short time; +}TS_DATA; + +int dev_no, get_points; +int no,i,j,Xsum,Ysum,touch_ok; +int Xd,Yd,XX,YY; +float Xp1,Xp2,Yp1,Yp2; +float Xpd,Ypd; +int XXmin,XXmax,YYmin,YYmax; +int Xavg[5],Yavg[5]; +TS_DATA p; + +/* X globals */ +Display *dpy; +Window w; +GC gc; +int blackColor, whiteColor; + +#define NIL (0) + +void do_calibration(void); +void get_XYmax(void); +void getXY_b(void); +void getXY_a(void); +int dev_open(void); +int dev_close(void); +int dev_dis(void); +int dev_setall(void); +int dev_read(void); +int print_par(void); +int ts_buf_clr(void); +void delay_time(int x,int y); +int initX(void); +static void drawPlus (int xcoord, int ycoord,int delete); +void cross(void); + +int main(void) +{ + int count; + + touch_ok = 0; + + printf("Welcome\n"); + + if ( initX() < 0 ) + { + printf("Unable to Xinit\n"); + exit(1); + } + printf("init X ok\n"); + + if (dev_open()==ERROR) + return 0; + + if (dev_dis()==ERROR) + return 0; + + if (ts_buf_clr()==ERROR) + return 0; + + print_par(); + + while (!touch_ok) + { + do_calibration(); + get_XYmax(); + } + + if (dev_setall()==ERROR) + return 0; + + if (ts_buf_clr()==ERROR) + return 0; + + printf("Calibration OK!\n\n"); + + print_par(); +#if 0 + cross(); + + for (count = 0; count <= 20; count++) + { + printf("\n Point-%2d -- ",count); + if (count <= 10) + getXY_a(); + else + getXY_b(); + } +#endif + if (dev_close()==ERROR) + return 0; + exit(0); +} + + +void delay_time(int x,int y) +{ + for (i=0;i<=x;i++) + for (j=0;j<=y;j++); + + return; +} + +void cross(void) +{ + drawPlus(Xm, Ym,0); + drawPlus(X1, Y1,0); + drawPlus(X1, Y2,0); + drawPlus(X2, Y2,0); + drawPlus(X2, Y1,0); +} + +void do_calibration(void) +{ + for (no = 0 ; no < 5 ; no++ ) + { + Xavg[no] = 0; + Yavg[no] = 0; + get_points = 0; + + switch (no) + { + case 0 : + printf("\nTouch screen at x=%d y=%d\n",Xm,Ym); + drawPlus(Xm, Ym,0); + break; + case 1 : + printf("\nTouch screen at x=%d y=%d\n",X1,Y1); + drawPlus(X1, Y1,0); + break; + case 2 : + printf("\nTouch screen at x=%d y=%d\n",X1,Y2); + drawPlus(X1, Y2,0); + break; + case 3 : + printf("\nTouch screen at x=%d y=%d\n",X2,Y2); + drawPlus(X2, Y2,0); + break; + case 4 : + printf("\nTouch screen at x=%d y=%d\n",X2,Y1); + drawPlus(X2, Y1,0); + break; + } + + printf("no = %d\n",no); + do + { + if (dev_read()==ERROR) + return; + if (p.p != 0) + { + Xavg[no] += p.x; + Yavg[no] += p.y; + + printf("get_points = %d ; X = %d ; Y = %d ; P = %d ; T = %d \n",get_points,p.x,p.y,p.p,p.time); + get_points++; + } + }while((get_points <= Points) && (p.p != 0)); + + Xavg[no] = Xavg[no]/get_points; + Yavg[no] = Yavg[no]/get_points; + + printf("\n Point - %d : Xavg = %d ; Yavg = %d\n",no,Xavg[no],Yavg[no]); + + for (i = 0 ; i < step ; i++) + { + switch (no) + { + case 0 : + drawPlus((Xm - i*Xdef1), (Ym - i*Ydef1),1); + drawPlus((Xm - (i+1)*Xdef1), (Ym - (i+1)*Ydef1),0); + usleep(16000); + break; + case 1 : + drawPlus(X1, (Y1 + i*Ydef2),1); + drawPlus(X1, (Y1 + (i+1)*Ydef2),0); + usleep(16000); + break; + case 2 : + drawPlus((X1 + i*Xdef2), Y2,1); + drawPlus((X1 + (i+1)*Xdef2), Y2,0); + usleep(16000); + break; + case 3 : + drawPlus(X2, (Y2 - i*Ydef2),1); + drawPlus(X2, (Y2 - (i+1)*Ydef2),0); + usleep(16000); + break; + case 4 : + drawPlus(X2, Y1,1); + usleep(20000); + break; + } + } + + while (p.p != 0) + { + if (dev_read()==ERROR) + return; + } + + if (ts_buf_clr()==ERROR) + return; + } + + + printf("\n ***** Xavg0 = %d *****",Xavg[0]); + printf("\n ***** Xavg1 = %d *****",Xavg[1]); + printf("\n ***** Xavg2 = %d *****",Xavg[2]); + printf("\n ***** Xavg3 = %d *****",Xavg[3]); + printf("\n ***** Xavg4 = %d *****",Xavg[4]); + + printf("\n\n ***** Yavg0 = %d *****",Yavg[0]); + printf("\n ***** Yavg1 = %d *****",Yavg[1]); + printf("\n ***** Yavg2 = %d *****",Yavg[2]); + printf("\n ***** Yavg3 = %d *****",Yavg[3]); + printf("\n ***** Yavg4 = %d *****",Yavg[4]); + +} + + +void get_XYmax(void) +{ + int rev; + + Xd = (Xavg[2] >= Xavg[1]) ? Xavg[2] - Xavg[1] : Xavg[1] - Xavg[2]; + Yd = (Yavg[4] >= Yavg[1]) ? Yavg[4] - Yavg[1] : Yavg[1] - Yavg[4]; + + if ((Xd <= ERROR_RATE) && (Yd <= ERROR_RATE)) + { + Xd = (Xavg[3] >= Xavg[4]) ? Xavg[3] - Xavg[4] : Xavg[4] - Xavg[3]; + Yd = (Yavg[3] >= Yavg[2]) ? Yavg[3] - Yavg[2] : Yavg[2] - Yavg[3]; + + if ((Xd <= ERROR_RATE) && (Yd <= ERROR_RATE)) + { + Xd = (((Xavg[1]+Xavg[4])/2) >= Xavg[0]) ? (Xavg[1]+Xavg[4])/2-Xavg[0] : Xavg[0]-(Xavg[1]+Xavg[4])/2; + Yd = (((Yavg[1]+Yavg[2])/2) >= Yavg[0]) ? (Yavg[1]+Yavg[2])/2-Yavg[0] : Yavg[0]-(Yavg[1]+Yavg[2])/2; + + if ((Xd <= ERROR_RATE) && (Yd <= ERROR_RATE)) + { + Xd = (((Xavg[2]+Xavg[3])/2) >= Xavg[0]) ? (Xavg[2]+Xavg[3])/2-Xavg[0] : Xavg[0]-(Xavg[2]+Xavg[3])/2; + Yd = (((Yavg[4]+Yavg[3])/2) >= Yavg[0]) ? (Yavg[4]+Yavg[3])/2-Yavg[0] : Yavg[0]-(Yavg[4]+Yavg[3])/2; + + if ((Xd <= ERROR_RATE) && (Yd <= ERROR_RATE)) + { + Xp1 = (float)(Xavg[1] + Xavg[2])/2; + Xp2 = (float)(Xavg[3] + Xavg[4])/2; + Yp1 = (float)(Yavg[1] + Yavg[4])/2; + Yp2 = (float)(Yavg[2] + Yavg[3])/2; + + Xpd = (Xp1 > Xp2) ? (float)(Xp1 - Xp2)/(float)(X2 - X1) : (float)(Xp2 - Xp1)/(float)(X2 - X1); + Ypd = (Yp1 > Yp2) ? (float)(Yp1 - Yp2)/(float)(Y2 - Y1) : (float)(Yp2 - Yp1)/(float)(Y2 - Y1); + + XXmax = (Xp1 > Xp2) ? (Xp1 + Xpd*X1) : (Xp2 + Xpd*X1); + YYmax = (Yp1 > Yp2) ? (Yp1 + Ypd*Y1) : (Yp2 + Ypd*Y1); + XXmin = (Xp1 > Xp2) ? (Xp2 - Xpd*X1) : (Xp1 - Xpd*X1); + YYmin = (Yp1 > Yp2) ? (Yp2 - Ypd*Y1) : (Yp1 - Ypd*Y1); + +/* + * because Legend screen is upside-down, we have to change the normal order + * changed by PCL + */ +/* rev = (Xp1 > Xp2) ? 1 : 0; */ + rev = (Xp1 > Xp2) ? 0 : 1; + if (ioctl(dev_no,15,rev) < 0) + printf("can't set the x_rev!\n"); +/* rev = (Yp1 > Yp2) ? 1 : 0; */ + rev = (Yp1 > Yp2) ? 0 : 1; + if (ioctl(dev_no,16,rev) < 0) + printf("can't set the y_rev!\n"); + + printf("\n ***** XXmax = %d *****",XXmax); + printf("\n ***** XXmin = %d *****",XXmin); + printf("\n ***** YYmax = %d *****",YYmax); + printf("\n ***** YYmin = %d *****",YYmin); +printf("touch_ok=1\n"); + touch_ok = 1; + } +// pcl testing +printf("touch_ok=0\n"); + } + } + } +} + +void getXY_b(void) +{ + if (dev_read()==ERROR) + return; + else + { + if (p.p != 0) + { + Xd = p.x; + Yd = p.y; + } + } + + printf("\n Coordination - : Xd = %d ; Yd = %d\n",Xd,Yd); + + while (p.p != 0) + { + if (dev_read()==ERROR) + return; + } + + if (ts_buf_clr()==ERROR) + return; +} + +void getXY_a(void) +{ + do + { + if (dev_read()==ERROR) + return; + else if (p.p != 0) + { + Xd = p.x; + Yd = p.y; + } + + }while(p.p != 0); + + printf("\n Coordination - : Xd = %d ; Yd = %d\n",Xd,Yd); +} + + +int dev_open(void) +{ + if ((dev_no=open(DEV_NODE,O_SYNC)) < 0) + { + printf("can't open touchscreen device!\n"); + return ERROR; + } + else + { + printf(" Open dev_no = %d\n",dev_no); + return 1; + } +} + + +int dev_close(void) +{ + if (close(dev_no) < 0) + { + printf("can't close touchscreen device!\n\n"); + return ERROR; + } + else + { + printf(" Close dev\n"); + return 1; + } +} + + +int dev_read(void) +{ + int error_code; + + if ((error_code=read(dev_no,&p,8)) < 0) + { + printf("can't read touchscreen!\n"); + return ERROR; + } + else + { + printf("P = %d X = %d Y = %d Time = %d\n",p.p,p.x,p.y,p.time); + return 1; + } +} + + +int dev_dis(void) +{ + int error_code; + + if (error_code = ioctl(dev_no,13,0) < 0) + { + printf("can't set the disable bit of the touchscreen device!\n"); + printf(" ERROR_CODE = %d \n",error_code); + return ERROR; + } + else + printf(" set disable bit OK!\n"); + +#if 0 + if (error_code = ioctl(dev_no,18,0) < 0) + { + printf("can't set the read_same bit of the touchscreen device!\n"); + printf(" ERROR_CODE = %d \n",error_code); + return ERROR; + } + else + printf(" set read_same bit OK!\n"); +#endif + + return 1; +} + + +int dev_setall(void) +{ + if (ioctl(dev_no,13,1) < 0) + { + printf("can't set the cal_ok of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,3,XXmax) < 0) + { + printf("can't set the rax_max_x of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,4,YYmax) < 0) + { + printf("can't set the rax_max_y of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,5,SCREEN_WIDTH) < 0) + { + printf("can't set the res_x of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,6,SCREEN_HEIGHT) < 0) + { + printf("can't set the res_y of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,10,XXmin) < 0) + { + printf("can't set the rax_min_x of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,11,YYmin) < 0) + { + printf("can't set the rax_min_y of the touchscreen device!\n"); + return ERROR; + } + + if (ioctl(dev_no,18,1) < 0) + { + printf("can't set the read_same of the touchscreen device!\n"); + return ERROR; + } + + print_par(); + + return 1; +} + +int print_par(void) +{ + int error_code; + + if ((error_code=ioctl(dev_no,17,0)) < 0) + { + printf("can't print the parameters of the touchscreen device!\n"); + printf(" ERROR_CODE = %d \n",error_code); + return ERROR; + } + else + return 1; +} + +int ts_buf_clr(void) +{ + int error_code; + + if ((error_code=ioctl(dev_no,14,0)) < 0) + { + printf("can't clear the parameters of the touchscreen device!\n"); + printf(" ERROR_CODE = %d \n",error_code); + return ERROR; + } + else + return 1; +} + +static void drawPlus (int xcoord, int ycoord,int delete) +{ + int hx_coord1,hy_coord1,hx_coord2,hy_coord2; + int vx_coord1,vy_coord1,vx_coord2,vy_coord2; + +/* work out the horizontal and vertical line coords */ + +/* horizontal line */ + hx_coord1= xcoord - (SZ_XHAIR/2); + hx_coord2= xcoord + (SZ_XHAIR/2); + hy_coord1=hy_coord2=ycoord; + +/* vertical line */ + vx_coord1=vx_coord2=xcoord; + vy_coord1= ycoord - (SZ_XHAIR/2); + vy_coord2= ycoord + (SZ_XHAIR/2); + +/* check boundaries */ + if ( hx_coord1 < 0 || hx_coord1 > SCREEN_WIDTH ) + return; + if ( hx_coord2 < 0 || hx_coord2 > SCREEN_WIDTH ) + return; + if ( hy_coord1 < 0 || hy_coord1 > SCREEN_HEIGHT) + return; + + if ( vx_coord1 < 0 || vx_coord1 > SCREEN_WIDTH ) + return; + if ( vy_coord1 < 0 || vy_coord1 > SCREEN_HEIGHT ) + return; + if ( vy_coord2 < 0 || vy_coord2 > SCREEN_HEIGHT ) + return; + + if (!delete ) + XSetForeground(dpy,gc,whiteColor); + else + XSetForeground(dpy,gc,blackColor); + +/* draw horizontal line */ + XDrawLine (dpy,w,gc,hx_coord1,hy_coord1,hx_coord2,hy_coord2); + +/* draw vertical line */ + XDrawLine (dpy,w,gc,vx_coord1,vy_coord1,vx_coord2,vy_coord2); + XFlush(dpy); +} + +#if 0 +int initX(void) +{ + int screen_num; + XSetWindowAttributes attributes; + + /* call Xlib directly to init our display */ + dpy = XOpenDisplay(NIL); + assert(dpy); + blackColor = BlackPixel(dpy,DefaultScreen(dpy) ); + whiteColor = WhitePixel(dpy,DefaultScreen(dpy) ); + + screen_num = DefaultScreen(dpy); + SCREEN_WIDTH = DisplayWidth(dpy,screen_num); + SCREEN_HEIGHT = DisplayHeight(dpy,screen_num); + + X1 = 40; Y1 = 40; + X2 = SCREEN_WIDTH - 40; Y2 = SCREEN_HEIGHT - 40; + Xm = SCREEN_WIDTH >> 1; Ym = SCREEN_HEIGHT >> 1; + + /* make this be a root window */ + attributes.override_redirect = True; + attributes.background_pixel = blackColor; + + w = XCreateWindow(dpy, DefaultRootWindow(dpy), 0 , 0, + DisplayWidth(dpy, 0), DisplayHeight(dpy, 0), + 0, + DefaultDepth(dpy, 0), + InputOutput, + DefaultVisual(dpy, 0), + CWOverrideRedirect|CWBackPixel, + &attributes ); + +// w = XCreateSimpleWindow(dpy,DefaultRootWindow(dpy), 0 , 0, +// SCREEN_WIDTH,SCREEN_HEIGHT, +// 0, +// blackColor,blackColor ); + XSelectInput(dpy,w,StructureNotifyMask); + XMapWindow(dpy,w); + XGrabPointer(dpy,w, + /* owner events */ True, + /* event mask */Button1Mask, + /* pointer mode */GrabModeAsync, + /* keyboard mode */GrabModeAsync, + /* confine to */ 0, + /* cursor */ None, + CurrentTime); + + + gc = XCreateGC(dpy,w,0,NIL); + XSetForeground(dpy,gc,whiteColor); + for(;;) + { + XEvent e; + /* Read next event */ + XNextEvent (dpy, &e); /* this is the blocking version */ + if( e.type == MapNotify) + break; + } +// XDrawLine (dpy,w,gc,10,60,180,20); +// XDrawLine (dpy,w,gc,160,120,300,220); +// XFlush(dpy); +// sleep(5); + + return (dpy) ? 1 : -1; +} +#else +int initX() +{ + XSetWindowAttributes attributes; + int rotated; + + /* call Xlib directly to init our display */ + dpy = XOpenDisplay(NULL); + + assert(dpy); + + if (DisplayWidth(dpy, 0) < DisplayHeight(dpy, 0)) + rotated = True; + + blackColor = BlackPixel(dpy,DefaultScreen(dpy) ); + whiteColor = WhitePixel(dpy,DefaultScreen(dpy) ); + + SCREEN_WIDTH = DisplayWidth(dpy,0); + SCREEN_HEIGHT = DisplayHeight(dpy,0); + + X1 = 40; Y1 = 40; + X2 = SCREEN_WIDTH - 40; Y2 = SCREEN_HEIGHT - 40; + Xm = SCREEN_WIDTH >> 1; Ym = SCREEN_HEIGHT >> 1; + /* make this be a root window */ + attributes.override_redirect = True; + attributes.background_pixel = blackColor; + + w = XCreateWindow(dpy, DefaultRootWindow(dpy), 0 , 0, + DisplayWidth(dpy, 0), DisplayHeight(dpy, 0), + 0, + DefaultDepth(dpy, 0), + InputOutput, + DefaultVisual(dpy, 0), + CWOverrideRedirect|CWBackPixel, + &attributes ); + XSelectInput(dpy,w, StructureNotifyMask); + XMapWindow(dpy,w); + XGrabPointer(dpy,w, + /* owner events */ True, + /* event mask */Button1Mask, + /* pointer mode */GrabModeAsync, + /* keyboard mode */GrabModeAsync, + /* confine to */ 0, + /* cursor */ None, + CurrentTime); + + gc = XCreateGC(dpy,w,0,NIL); + XSetForeground(dpy,gc,whiteColor); + for(;;) + { + XEvent e; + /* Read next event */ + XNextEvent (dpy, &e); /* this is the blocking version */ + if( e.type == MapNotify) + break; + } + + return (dpy) ? 1 : -1; +} +#endif + diff -urN linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/light-test linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/light-test --- linux-2.4.1-rmk1-np2/Documentation/arm/SA1100/freebird/light-test Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/Documentation/arm/SA1100/freebird/light-test Mon Feb 26 16:01:29 2001 @@ -0,0 +1,81 @@ +/* Created by (C) Chester Kuo ,released under GPL + * , drived from sa1100_frontligt.c! + * + * Test the LCD backlight/contrast[/frontlight] driver. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "sa1100_frontlight.h" + +int main(void) { + + int i, fd, retval; + int temp; + fd = open ("/dev/sa1100-fl", O_WRONLY); + + if (fd == -1) { + perror("/dev/sa1100-fl"); + exit(errno); + } + + printf("\n\t\t\tFrontlight Driver Test Example.\n\n"); + + for (i=0; i<5; i++) { + printf("Turning OFF Frontlight...\n"); + retval = ioctl(fd, _SA1100_FL_IOCTL_OFF, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + sleep(1); + + + printf("Turning ON Frontlight...\n"); + retval = ioctl(fd, _SA1100_FL_IOCTL_ON, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } + + sleep(1); + + } + +#if 0 + printf("Turning OFF Frontlight...\n"); + retval = ioctl(fd, _SA1100_FL_IOCTL_OFF, 0); + if (retval == -1) { + perror("ioctl"); + exit(errno); + } +#endif + + printf("Testing the backlight from 1 to 100\n"); + for (temp=0;temp<=100;temp++) + retval = ioctl(fd,_SA1100_FL_IOCTL_BACKLIGHT,temp); + if (retval == -1) { + perror("error in ioctl at setting backlight\n"); + exit(errno); + } + + printf("Test the contrast from 1 to 100\n"); + for (temp=0;temp<=100;temp++) + retval = ioctl(fd,_SA1100_FL_IOCTL_CONTRAST,temp); + if (retval == -1) { + perror("error in ioctl at contrast \n"); + exit(errno); + } + + fprintf(stderr, "Done.\n"); + + } + + diff -urN linux-2.4.1-rmk1-np2/Makefile linux-2.4.1-rmk1-np2-fb9/Makefile --- linux-2.4.1-rmk1-np2/Makefile Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/Makefile Tue May 8 01:35:44 2001 @@ -125,6 +125,7 @@ drivers/net/net.o \ drivers/media/media.o LIBS =$(TOPDIR)/lib/lib.a +#LIBS +=$(TOPDIR)/drivers/gsm/libgsm.a SUBDIRS =kernel drivers mm fs net ipc lib DRIVERS-n := Binary files linux-2.4.1-rmk1-np2/arch/arm/boot/zImage-p1 and linux-2.4.1-rmk1-np2-fb9/arch/arm/boot/zImage-p1 differ diff -urN linux-2.4.1-rmk1-np2/arch/arm/config.in linux-2.4.1-rmk1-np2-fb9/arch/arm/config.in --- linux-2.4.1-rmk1-np2/arch/arm/config.in Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/config.in Tue May 8 01:38:03 2001 @@ -100,6 +100,14 @@ bool ' XP860' CONFIG_SA1100_XP860 bool ' Pangolin' CONFIG_SA1100_PANGOLIN bool ' FreeBird-v1.1' CONFIG_SA1100_FREEBIRD + if [ "$CONFIG_SA1100_FREEBIRD" = "y" ]; then + bool ' Support Old bootldr' CONFIG_SA1100_FREEBIRD_OLD + bool ' Support New bootldr' CONFIG_SA1100_FREEBIRD_NEW + fi + + tristate ' SA-11x0 LCD light controller' CONFIG_SA1100_FL + tristate ' SA-1100 Register monitor' CONFIG_SA1100_REGMON + # Determine if SA1111 support is required if [ "$CONFIG_ASSABET_NEPONSET" = "y" -o \ @@ -110,6 +118,7 @@ tristate 'SA1100 USB function driver' CONFIG_SA1100_USB dep_tristate ' Support for SA1000 USB network link function' CONFIG_SA1100_USB_NETLINK $CONFIG_SA1100_USB +# tristate 'SA11x0 Powerbutton function' CONFIG_SA1100_PB if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then tristate 'Frequency scaling (Experimental)' CONFIG_SA1100_FREQUENCY_SCALE if [ "$CONFIG_SA1100_FREQUENCY_SCALE" != "n" -a \ @@ -339,6 +348,7 @@ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then bool 'Power Management support' CONFIG_PM + tristate 'APM Power Management' CONFIG_APM fi if [ "$CONFIG_CPU_32" = "y" ]; then @@ -529,6 +539,7 @@ bool 'Verbose user fault messages' CONFIG_DEBUG_USER bool 'Include debugging information in kernel binary' CONFIG_DEBUG_INFO bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ +bool 'Disable Kernel messages' CONFIG_KERNEL_SILENCE if [ "$CONFIG_CPU_26" = "y" ]; then bool 'Disable pgtable cache' CONFIG_NO_PGT_CACHE fi diff -urN linux-2.4.1-rmk1-np2/arch/arm/def-configs/assabet linux-2.4.1-rmk1-np2-fb9/arch/arm/def-configs/assabet --- linux-2.4.1-rmk1-np2/arch/arm/def-configs/assabet Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/def-configs/assabet Fri Mar 2 15:10:54 2001 @@ -1,5 +1,5 @@ # -# Automatically generated make config: don't edit +# Automatically generated by make menuconfig: don't edit # CONFIG_ARM=y # CONFIG_EISA is not set @@ -62,9 +62,10 @@ # CONFIG_SA1100_XP860 is not set # CONFIG_SA1100_PANGOLIN is not set # CONFIG_SA1100_FREEBIRD is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m -CONFIG_SA1100_FREQUENCY_SCALE=y +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_PB is not set +# CONFIG_SA1100_FREQUENCY_SCALE is not set # CONFIG_SA1100_VOLTAGE_SCALE is not set # @@ -76,10 +77,6 @@ # CONFIG_FOOTBRIDGE_ADDIN is not set CONFIG_CPU_32=y # CONFIG_CPU_26 is not set - -# -# Processor Type -# # CONFIG_CPU_32v3 is not set CONFIG_CPU_32v4=y # CONFIG_CPU_ARM610 is not set @@ -94,24 +91,12 @@ # # General setup # - -# -# Please ensure that you have read the help on the next option -# -CONFIG_ANGELBOOT=y +# CONFIG_ANGELBOOT is not set # CONFIG_PCI is not set # CONFIG_ISA is not set # CONFIG_ISA_DMA is not set -CONFIG_HOTPLUG=y - -# -# PCMCIA/CardBus support -# -CONFIG_PCMCIA=y -# CONFIG_I82365 is not set -# CONFIG_TCIC is not set -# CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set CONFIG_NET=y CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set @@ -122,14 +107,15 @@ # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set +CONFIG_PM=y +CONFIG_APM=y # CONFIG_ARTHUR is not set CONFIG_CMDLINE="keepinitrd" CONFIG_LEDS=y CONFIG_LEDS_TIMER=y CONFIG_LEDS_CPU=y CONFIG_ALIGNMENT_TRAP=y -CONFIG_UCB1200=y +# CONFIG_UCB1200 is not set # # Parallel port support @@ -139,68 +125,7 @@ # # Memory Technology Devices (MTD) # -CONFIG_MTD=m -# CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC1000 is not set -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# -# CONFIG_MTD_PMC551 is not set -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -CONFIG_MTD_CFI=m -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=m -# CONFIG_MTD_CFI_AMDSTD is not set -# CONFIG_MTD_SHARP is not set -# CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_NORA is not set -# CONFIG_MTD_PNC2000 is not set -# CONFIG_MTD_RPXLITE is not set -# CONFIG_MTD_SBC_MEDIAGX is not set -# CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=m -# CONFIG_MTD_DC21285 is not set -# CONFIG_MTD_CSTM_CFI_JEDEC is not set -# CONFIG_MTD_JEDEC is not set -# CONFIG_MTD_MIXMEM is not set -# CONFIG_MTD_OCTAGON is not set -# CONFIG_MTD_VMAX is not set - -# -# NAND Flash Device Drivers -# -# CONFIG_MTD_NAND is not set -# CONFIG_MTD_NAND_SPIA is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=m -CONFIG_MTD_BLOCK=m -# CONFIG_MTD_BLOCK_RO is not set -# CONFIG_FTL is not set -# CONFIG_NFTL is not set +# CONFIG_MTD is not set # # Plug and Play configuration @@ -253,10 +178,6 @@ # CONFIG_IPV6 is not set # CONFIG_KHTTPD is not set # CONFIG_ATM is not set - -# -# -# # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set @@ -278,77 +199,7 @@ # # Network device support # -CONFIG_NETDEVICES=y - -# -# ARCnet devices -# -# CONFIG_ARCNET is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_NET_SB1000 is not set - -# -# Ethernet (10 or 100Mbit) -# -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set - -# -# Ethernet (1000 Mbit) -# -# CONFIG_ACENIC is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_SK98LIN is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set - -# -# Wireless LAN (non-hamradio) -# -# CONFIG_NET_RADIO is not set - -# -# Token Ring devices -# -# CONFIG_TR is not set -# CONFIG_NET_FC is not set -# CONFIG_RCPCI is not set -# CONFIG_SHAPER is not set - -# -# Wan interfaces -# -# CONFIG_WAN is not set - -# -# PCMCIA network device support -# -CONFIG_NET_PCMCIA=y -# CONFIG_PCMCIA_3C589 is not set -# CONFIG_PCMCIA_3C574 is not set -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y -# CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_ARCNET_COM20020_CS is not set -# CONFIG_PCMCIA_IBMTR is not set -# CONFIG_NET_PCMCIA_RADIO is not set -CONFIG_PCMCIA_NETCARD=y +# CONFIG_NETDEVICES is not set # # Amateur Radio support @@ -363,45 +214,9 @@ # # ATA/IDE/MFM/RLL support # -CONFIG_IDE=y - -# -# IDE, ATA and ATAPI Block devices -# -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# -# CONFIG_BLK_DEV_HD_IDE is not set -# CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y -# CONFIG_IDEDISK_MULTI_MODE is not set -# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set -# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set -# CONFIG_BLK_DEV_IDEDISK_IBM is not set -# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set -# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set -# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set -# CONFIG_BLK_DEV_IDEDISK_WD is not set -# CONFIG_BLK_DEV_COMMERIAL is not set -# CONFIG_BLK_DEV_TIVO is not set -CONFIG_BLK_DEV_IDECS=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -# CONFIG_BLK_DEV_IDEFLOPPY is not set -# CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# -# CONFIG_BLK_DEV_CMD640 is not set -# CONFIG_BLK_DEV_CMD640_ENHANCED is not set -# CONFIG_BLK_DEV_ISAPNP is not set -# CONFIG_IDE_CHIPSETS is not set -# CONFIG_IDEDMA_AUTO is not set -# CONFIG_DMA_NONPCI is not set +# CONFIG_IDE is not set # CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_HD is not set # # SCSI support @@ -438,8 +253,9 @@ CONFIG_SERIAL_SA1100=y CONFIG_SERIAL_SA1100_CONSOLE=y CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_UCB1200 is not set # CONFIG_TOUCHSCREEN_BITSY is not set +# CONFIG_FB_TS_BT is not set # CONFIG_SA1100_SWITCHES is not set # CONFIG_PROFILER is not set CONFIG_UNIX98_PTYS=y @@ -460,10 +276,6 @@ # Joysticks # # CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# # CONFIG_QIC02_TAPE is not set # @@ -484,7 +296,6 @@ # CONFIG_FTAPE is not set # CONFIG_AGP is not set # CONFIG_DRM is not set -# CONFIG_PCMCIA_SERIAL is not set # # Multimedia devices @@ -504,13 +315,12 @@ # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set # CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=m -CONFIG_JFFS_FS_VERBOSE=0 +# CONFIG_JFFS_FS is not set # CONFIG_CRAMFS is not set # CONFIG_RAMFS is not set # CONFIG_ISO9660_FS is not set @@ -539,13 +349,13 @@ # Network File Systems # # CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y +# CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set # CONFIG_SMB_FS is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set @@ -560,112 +370,27 @@ # # Partition Types # -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set +# CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set # CONFIG_SMB_NLS is not set -CONFIG_NLS=y - -# -# Native Language Support -# -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_ISO8859_1 is not set -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_UTF8 is not set +# CONFIG_NLS is not set # # Console drivers # CONFIG_PC_KEYMAP=y # CONFIG_VGA_CONSOLE is not set -CONFIG_FB=y +# CONFIG_FB is not set # # Frame-buffer support # -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_ACORN is not set -# CONFIG_FB_CLPS711X is not set -# CONFIG_FB_CYBER2000 is not set -CONFIG_FB_SA1100=y -# CONFIG_FB_MQ200 is not set -# CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB2=y -CONFIG_FBCON_CFB4=y -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FB is not set # # Sound # -CONFIG_SOUND=y -CONFIG_SOUND_UDA1341=y -# CONFIG_SOUND_SA1100_SSP is not set -# CONFIG_SOUND_CMPCI is not set -# CONFIG_SOUND_EMU10K1 is not set -# CONFIG_SOUND_FUSION is not set -# CONFIG_SOUND_CS4281 is not set -# CONFIG_SOUND_ES1370 is not set -# CONFIG_SOUND_ES1371 is not set -# CONFIG_SOUND_ESSSOLO1 is not set -# CONFIG_SOUND_MAESTRO is not set -# CONFIG_SOUND_SONICVIBES is not set -# CONFIG_SOUND_TRIDENT is not set -# CONFIG_SOUND_MSNDCLAS is not set -# CONFIG_SOUND_MSNDPIN is not set -# CONFIG_SOUND_VIA82CXXX is not set -# CONFIG_SOUND_OSS is not set -# CONFIG_SOUND_TVMIXER is not set +# CONFIG_SOUND is not set # # USB support diff -urN linux-2.4.1-rmk1-np2/arch/arm/def-configs/freebird linux-2.4.1-rmk1-np2-fb9/arch/arm/def-configs/freebird --- linux-2.4.1-rmk1-np2/arch/arm/def-configs/freebird Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/def-configs/freebird Wed Apr 11 14:39:40 2001 @@ -2,7 +2,9 @@ # Automatically generated by make menuconfig: don't edit # CONFIG_ARM=y +# CONFIG_EISA is not set # CONFIG_SBUS is not set +# CONFIG_MCA is not set CONFIG_UID16=y # @@ -25,6 +27,7 @@ # CONFIG_ARCH_CLPS7500 is not set # CONFIG_ARCH_CO285 is not set # CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set # CONFIG_ARCH_FOOTBRIDGE is not set # CONFIG_ARCH_INTEGRATOR is not set # CONFIG_ARCH_RPC is not set @@ -43,10 +46,13 @@ # SA11x0 Implementations # # CONFIG_SA1100_ASSABET is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set # CONFIG_SA1100_BRUTUS is not set # CONFIG_SA1100_CERF is not set # CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set # CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set # CONFIG_SA1100_GRAPHICSCLIENT is not set # CONFIG_SA1100_NANOENGINE is not set # CONFIG_SA1100_VICTOR is not set @@ -55,7 +61,12 @@ # CONFIG_SA1100_XP860 is not set # CONFIG_SA1100_PANGOLIN is not set CONFIG_SA1100_FREEBIRD=y +CONFIG_SA1100_FREEBIRD_OLD=y +# CONFIG_SA1100_FREEBIRD_NEW is not set +CONFIG_SA1100_FL=y +# CONFIG_SA1100_REGMON is not set # CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set # CONFIG_SA1100_FREQUENCY_SCALE is not set # CONFIG_SA1100_VOLTAGE_SCALE is not set @@ -68,7 +79,14 @@ # CONFIG_FOOTBRIDGE_ADDIN is not set CONFIG_CPU_32=y # CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set CONFIG_CPU_SA1100=y CONFIG_DISCONTIGMEM=y @@ -84,7 +102,11 @@ # # PCMCIA/CardBus support # -# CONFIG_PCMCIA is not set +CONFIG_PCMCIA=y +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=y CONFIG_NET=y CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set @@ -92,14 +114,16 @@ CONFIG_NWFPE=y CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set +CONFIG_BINFMT_MISC=m +CONFIG_PM=y +CONFIG_APM=y # CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd" +CONFIG_CMDLINE="mem=32M" # CONFIG_LEDS is not set CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UCB1200 is not set # # Parallel port support @@ -139,6 +163,7 @@ # CONFIG_MTD_ELAN_104NC is not set CONFIG_MTD_SA1100=y # CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set # CONFIG_MTD_JEDEC is not set # CONFIG_MTD_MIXMEM is not set # CONFIG_MTD_OCTAGON is not set @@ -165,12 +190,22 @@ # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_INITRD=y -# CONFIG_BLK_DEV_FLASH is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set # # Networking options @@ -212,7 +247,73 @@ # # Network device support # -# CONFIG_NETDEVICES is not set +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set # # Amateur Radio support @@ -227,9 +328,37 @@ # # ATA/IDE/MFM/RLL support # -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_IDE_MODES is not set +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set # CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set # # SCSI support @@ -266,8 +395,9 @@ CONFIG_SERIAL_SA1100=y CONFIG_SERIAL_SA1100_CONSOLE=y CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -CONFIG_TOUCHSCREEN_UCB1200=y +# CONFIG_TOUCHSCREEN_UCB1200 is not set # CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_FB_TS_BT=y # CONFIG_PROFILER is not set CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=32 @@ -296,6 +426,7 @@ # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set +CONFIG_SA1100_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -306,6 +437,7 @@ # CONFIG_FTAPE is not set # CONFIG_AGP is not set # CONFIG_DRM is not set +# CONFIG_PCMCIA_SERIAL is not set # # Multimedia devices @@ -318,6 +450,8 @@ # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set @@ -328,9 +462,8 @@ # CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set -CONFIG_JFFS_FS=y -CONFIG_JFFS_FS_VERBOSE=0 -CONFIG_CRAMFS=y +# CONFIG_JFFS_FS is not set +# CONFIG_CRAMFS is not set CONFIG_RAMFS=y # CONFIG_ISO9660_FS is not set # CONFIG_JOLIET is not set @@ -373,8 +506,6 @@ # CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_MOUNT_SUBDIR is not set -# CONFIG_NCPFS_NDS_DOMAINS is not set # CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_EXTRAS is not set @@ -383,6 +514,7 @@ # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set # CONFIG_NLS is not set # @@ -421,7 +553,8 @@ # Sound # CONFIG_SOUND=y -CONFIG_SOUND_UDA1341=m +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_UDA1341_GSM is not set # CONFIG_SOUND_SA1100_SSP is not set # CONFIG_SOUND_CMPCI is not set # CONFIG_SOUND_EMU10K1 is not set @@ -447,7 +580,7 @@ # # Kernel hacking # -CONFIG_FRAME_POINTER=y +# CONFIG_NO_FRAME_POINTER is not set CONFIG_DEBUG_ERRORS=y CONFIG_DEBUG_USER=y # CONFIG_DEBUG_INFO is not set diff -urN linux-2.4.1-rmk1-np2/arch/arm/def-configs/freebird_new linux-2.4.1-rmk1-np2-fb9/arch/arm/def-configs/freebird_new --- linux-2.4.1-rmk1-np2/arch/arm/def-configs/freebird_new Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/def-configs/freebird_new Tue May 8 01:42:48 2001 @@ -0,0 +1,644 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_CLPS711X is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Footbridge Implementations +# + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_BITSY is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_PANGOLIN is not set +CONFIG_SA1100_FREEBIRD=y +# CONFIG_SA1100_FREEBIRD_OLD is not set +CONFIG_SA1100_FREEBIRD_NEW=y +CONFIG_SA1100_FL=m +# CONFIG_SA1100_REGMON is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +CONFIG_SA1100_FREQUENCY_SCALE=y +# CONFIG_SA1100_VOLTAGE_SCALE is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +CONFIG_CPU_32v4=y +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +CONFIG_CPU_SA1100=y +CONFIG_DISCONTIGMEM=y + +# +# General setup +# +# CONFIG_ANGELBOOT is not set +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +CONFIG_PCMCIA_SA1100=m +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_NWFPE=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="noinitrd console=ttySA0 init=/linuxrc root=1f04 mem=32m" +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UCB1200 is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_MTDRAM is not set +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_PNC2000 is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_SBC_MEDIAGX is not set +# CONFIG_MTD_ELAN_104NC is not set +CONFIG_MTD_SA1100=y +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_CSTM_CFI_JEDEC is not set +# CONFIG_MTD_JEDEC is not set +# CONFIG_MTD_MIXMEM is not set +# CONFIG_MTD_OCTAGON is not set +# CONFIG_MTD_VMAX is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_SPIA is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=m +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=m + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=m +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=m +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set + +# +# Character devices +# +CONFIG_VT=y +# CONFIG_VT_CONSOLE is not set +CONFIG_SERIAL=m +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +# CONFIG_SERIAL_SILENCE is not set +# CONFIG_TOUCHSCREEN_UCB1200 is not set +# CONFIG_TOUCHSCREEN_BITSY is not set +CONFIG_FB_TS_BT=y +# CONFIG_PROFILER is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=32 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_JOYSTICK is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_SA1100_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +CONFIG_PCMCIA_SERIAL=m + +# +# PCMCIA character device support +# +CONFIG_PCMCIA_SERIAL_CS=m + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +CONFIG_AUTOFS_FS=m +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_CRAMFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_MINIX_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=m +# CONFIG_SYSV_FS is not set +# CONFIG_SYSV_FS_WRITE is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +CONFIG_NLS_CODEPAGE_936=m +# CONFIG_NLS_CODEPAGE_949 is not set +CONFIG_NLS_CODEPAGE_950=m +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_FB=y + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FB_ACORN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_SA1100=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FBCON_ADVANCED is not set +CONFIG_FBCON_CFB2=y +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_UDA1341_GSM is not set +# CONFIG_SOUND_SA1100_SSP is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# USB support +# +# CONFIG_USB is not set + +# +# Kernel hacking +# +# CONFIG_NO_FRAME_POINTER is not set +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_KERNEL_SILENCE is not set +# CONFIG_DEBUG_LL is not set diff -urN linux-2.4.1-rmk1-np2/arch/arm/defconfig linux-2.4.1-rmk1-np2-fb9/arch/arm/defconfig --- linux-2.4.1-rmk1-np2/arch/arm/defconfig Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/defconfig Tue May 8 01:43:10 2001 @@ -1,5 +1,5 @@ # -# Automatically generated make config: don't edit +# Automatically generated by make menuconfig: don't edit # CONFIG_ARM=y # CONFIG_EISA is not set @@ -18,7 +18,7 @@ # CONFIG_MODULES=y # CONFIG_MODVERSIONS is not set -# CONFIG_KMOD is not set +CONFIG_KMOD=y # # System Type @@ -45,8 +45,7 @@ # # SA11x0 Implementations # -CONFIG_SA1100_ASSABET=y -# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ASSABET is not set # CONFIG_SA1100_HUW_WEBPANEL is not set # CONFIG_SA1100_BRUTUS is not set # CONFIG_SA1100_CERF is not set @@ -61,9 +60,13 @@ # CONFIG_SA1100_SHERMAN is not set # CONFIG_SA1100_XP860 is not set # CONFIG_SA1100_PANGOLIN is not set -# CONFIG_SA1100_FREEBIRD is not set -CONFIG_SA1100_USB=m -CONFIG_SA1100_USB_NETLINK=m +CONFIG_SA1100_FREEBIRD=y +# CONFIG_SA1100_FREEBIRD_OLD is not set +CONFIG_SA1100_FREEBIRD_NEW=y +CONFIG_SA1100_FL=m +# CONFIG_SA1100_REGMON is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set CONFIG_SA1100_FREQUENCY_SCALE=y # CONFIG_SA1100_VOLTAGE_SCALE is not set @@ -76,10 +79,6 @@ # CONFIG_FOOTBRIDGE_ADDIN is not set CONFIG_CPU_32=y # CONFIG_CPU_26 is not set - -# -# Processor Type -# # CONFIG_CPU_32v3 is not set CONFIG_CPU_32v4=y # CONFIG_CPU_ARM610 is not set @@ -94,11 +93,7 @@ # # General setup # - -# -# Please ensure that you have read the help on the next option -# -CONFIG_ANGELBOOT=y +# CONFIG_ANGELBOOT is not set # CONFIG_PCI is not set # CONFIG_ISA is not set # CONFIG_ISA_DMA is not set @@ -107,11 +102,11 @@ # # PCMCIA/CardBus support # -CONFIG_PCMCIA=y +CONFIG_PCMCIA=m # CONFIG_I82365 is not set # CONFIG_TCIC is not set # CONFIG_PCMCIA_CLPS6700 is not set -CONFIG_PCMCIA_SA1100=y +CONFIG_PCMCIA_SA1100=m CONFIG_NET=y CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set @@ -119,17 +114,16 @@ CONFIG_NWFPE=y CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set -# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_ELF=y -# CONFIG_BINFMT_MISC is not set -# CONFIG_PM is not set +CONFIG_BINFMT_MISC=m +CONFIG_PM=y +CONFIG_APM=y # CONFIG_ARTHUR is not set -CONFIG_CMDLINE="keepinitrd" -CONFIG_LEDS=y -CONFIG_LEDS_TIMER=y -CONFIG_LEDS_CPU=y +CONFIG_CMDLINE="noinitrd console=ttySA0 init=/linuxrc root=1f04 mem=32m" +# CONFIG_LEDS is not set CONFIG_ALIGNMENT_TRAP=y -CONFIG_UCB1200=y +# CONFIG_UCB1200 is not set # # Parallel port support @@ -139,38 +133,20 @@ # # Memory Technology Devices (MTD) # -CONFIG_MTD=m +CONFIG_MTD=y # CONFIG_MTD_DEBUG is not set - -# -# Disk-On-Chip Device Drivers -# # CONFIG_MTD_DOC1000 is not set # CONFIG_MTD_DOC2000 is not set # CONFIG_MTD_DOC2001 is not set # CONFIG_MTD_DOCPROBE is not set - -# -# RAM/ROM Device Drivers -# # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_RAM is not set # CONFIG_MTD_ROM is not set # CONFIG_MTD_MTDRAM is not set - -# -# Linearly Mapped Flash Device Drivers -# -CONFIG_MTD_CFI=m -CONFIG_MTD_CFI_GEOMETRY=y -# CONFIG_MTD_CFI_B1 is not set -# CONFIG_MTD_CFI_B2 is not set -CONFIG_MTD_CFI_B4=y -# CONFIG_MTD_CFI_I1 is not set -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=y # CONFIG_MTD_CFI_AMDSTD is not set # CONFIG_MTD_SHARP is not set # CONFIG_MTD_PHYSMAP is not set @@ -179,26 +155,17 @@ # CONFIG_MTD_RPXLITE is not set # CONFIG_MTD_SBC_MEDIAGX is not set # CONFIG_MTD_ELAN_104NC is not set -CONFIG_MTD_SA1100=m +CONFIG_MTD_SA1100=y # CONFIG_MTD_DC21285 is not set # CONFIG_MTD_CSTM_CFI_JEDEC is not set # CONFIG_MTD_JEDEC is not set # CONFIG_MTD_MIXMEM is not set # CONFIG_MTD_OCTAGON is not set # CONFIG_MTD_VMAX is not set - -# -# NAND Flash Device Drivers -# # CONFIG_MTD_NAND is not set # CONFIG_MTD_NAND_SPIA is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=m -CONFIG_MTD_BLOCK=m -# CONFIG_MTD_BLOCK_RO is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set # CONFIG_NFTL is not set @@ -218,10 +185,9 @@ # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_LOOP=m -# CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_NBD=m +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set # # Multi-device support (RAID and LVM) @@ -237,9 +203,13 @@ # # Networking options # -# CONFIG_PACKET is not set -# CONFIG_NETLINK is not set -# CONFIG_NETFILTER is not set +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y @@ -248,15 +218,21 @@ # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set # CONFIG_INET_ECN is not set # CONFIG_SYN_COOKIES is not set -# CONFIG_IPV6 is not set -# CONFIG_KHTTPD is not set -# CONFIG_ATM is not set # -# +# IP: Netfilter Configuration # +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set @@ -288,21 +264,13 @@ # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set # CONFIG_NET_SB1000 is not set # # Ethernet (10 or 100Mbit) # -CONFIG_NET_ETHERNET=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_LANCE is not set -# CONFIG_NET_VENDOR_SMC is not set -# CONFIG_NET_VENDOR_RACAL is not set -# CONFIG_AT1700 is not set -# CONFIG_DEPCA is not set -# CONFIG_NET_ISA is not set -# CONFIG_NET_PCI is not set -# CONFIG_NET_POCKET is not set +# CONFIG_NET_ETHERNET is not set # # Ethernet (1000 Mbit) @@ -313,7 +281,13 @@ # CONFIG_SK98LIN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set -# CONFIG_PPP is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +# CONFIG_PPPOE is not set # CONFIG_SLIP is not set # @@ -341,14 +315,13 @@ # CONFIG_PCMCIA_3C589 is not set # CONFIG_PCMCIA_3C574 is not set # CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_PCMCIA_PCNET=y +CONFIG_PCMCIA_PCNET=m # CONFIG_PCMCIA_NMCLAN is not set # CONFIG_PCMCIA_SMC91C92 is not set # CONFIG_PCMCIA_XIRC2PS is not set # CONFIG_ARCNET_COM20020_CS is not set # CONFIG_PCMCIA_IBMTR is not set # CONFIG_NET_PCMCIA_RADIO is not set -CONFIG_PCMCIA_NETCARD=y # # Amateur Radio support @@ -363,19 +336,15 @@ # # ATA/IDE/MFM/RLL support # -CONFIG_IDE=y +CONFIG_IDE=m # # IDE, ATA and ATAPI Block devices # -CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# +CONFIG_BLK_DEV_IDE=m # CONFIG_BLK_DEV_HD_IDE is not set # CONFIG_BLK_DEV_HD is not set -CONFIG_BLK_DEV_IDEDISK=y +CONFIG_BLK_DEV_IDEDISK=m # CONFIG_IDEDISK_MULTI_MODE is not set # CONFIG_BLK_DEV_IDEDISK_VENDOR is not set # CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set @@ -386,15 +355,11 @@ # CONFIG_BLK_DEV_IDEDISK_WD is not set # CONFIG_BLK_DEV_COMMERIAL is not set # CONFIG_BLK_DEV_TIVO is not set -CONFIG_BLK_DEV_IDECS=y +CONFIG_BLK_DEV_IDECS=m # CONFIG_BLK_DEV_IDECD is not set # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDESCSI is not set - -# -# IDE chipset support/bugfixes -# # CONFIG_BLK_DEV_CMD640 is not set # CONFIG_BLK_DEV_CMD640_ENHANCED is not set # CONFIG_BLK_DEV_ISAPNP is not set @@ -432,15 +397,16 @@ # CONFIG_VT=y # CONFIG_VT_CONSOLE is not set -# CONFIG_SERIAL is not set +CONFIG_SERIAL=m # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set CONFIG_SERIAL_SA1100=y CONFIG_SERIAL_SA1100_CONSOLE=y -CONFIG_SA1100_DEFAULT_BAUDRATE=9600 -CONFIG_TOUCHSCREEN_UCB1200=y +CONFIG_SA1100_DEFAULT_BAUDRATE=115200 +# CONFIG_SERIAL_SILENCE is not set +# CONFIG_TOUCHSCREEN_UCB1200 is not set # CONFIG_TOUCHSCREEN_BITSY is not set -# CONFIG_SA1100_SWITCHES is not set +CONFIG_FB_TS_BT=y # CONFIG_PROFILER is not set CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=32 @@ -460,10 +426,6 @@ # Joysticks # # CONFIG_JOYSTICK is not set - -# -# Input core support is needed for joysticks -# # CONFIG_QIC02_TAPE is not set # @@ -473,7 +435,7 @@ # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set -# CONFIG_SA1100_RTC is not set +CONFIG_SA1100_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -484,7 +446,12 @@ # CONFIG_FTAPE is not set # CONFIG_AGP is not set # CONFIG_DRM is not set -# CONFIG_PCMCIA_SERIAL is not set +CONFIG_PCMCIA_SERIAL=m + +# +# PCMCIA character device support +# +CONFIG_PCMCIA_SERIAL_CS=m # # Multimedia devices @@ -495,7 +462,7 @@ # File systems # # CONFIG_QUOTA is not set -# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS_FS=m # CONFIG_AUTOFS4_FS is not set # CONFIG_REISERFS_FS is not set # CONFIG_REISERFS_CHECK is not set @@ -504,15 +471,15 @@ # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set # CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set CONFIG_JFFS_FS=m CONFIG_JFFS_FS_VERBOSE=0 -# CONFIG_CRAMFS is not set -# CONFIG_RAMFS is not set +CONFIG_CRAMFS=y +CONFIG_RAMFS=y # CONFIG_ISO9660_FS is not set # CONFIG_JOLIET is not set # CONFIG_MINIX_FS is not set @@ -527,7 +494,7 @@ # CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_RW is not set # CONFIG_ROMFS_FS is not set -CONFIG_EXT2_FS=y +CONFIG_EXT2_FS=m # CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS_WRITE is not set # CONFIG_UDF_FS is not set @@ -539,14 +506,16 @@ # Network File Systems # # CONFIG_CODA_FS is not set -CONFIG_NFS_FS=y -# CONFIG_NFS_V3 is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_SMB_FS is not set +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set @@ -560,27 +529,16 @@ # # Partition Types # -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -# CONFIG_OSF_PARTITION is not set -# CONFIG_AMIGA_PARTITION is not set -# CONFIG_ATARI_PARTITION is not set -# CONFIG_MAC_PARTITION is not set +# CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y -# CONFIG_BSD_DISKLABEL is not set -# CONFIG_SOLARIS_X86_PARTITION is not set -# CONFIG_UNIXWARE_DISKLABEL is not set -# CONFIG_SGI_PARTITION is not set -# CONFIG_ULTRIX_PARTITION is not set -# CONFIG_SUN_PARTITION is not set -# CONFIG_SMB_NLS is not set +CONFIG_SMB_NLS=y CONFIG_NLS=y # # Native Language Support # CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_437 is not set # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set @@ -597,9 +555,9 @@ # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_936 is not set +CONFIG_NLS_CODEPAGE_936=m # CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_950=m # CONFIG_NLS_ISO8859_1 is not set # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set @@ -630,18 +588,19 @@ # CONFIG_FB_CLPS711X is not set # CONFIG_FB_CYBER2000 is not set CONFIG_FB_SA1100=y -# CONFIG_FB_MQ200 is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_FBCON_ADVANCED is not set CONFIG_FBCON_CFB2=y CONFIG_FBCON_CFB4=y CONFIG_FBCON_CFB8=y CONFIG_FBCON_CFB16=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set CONFIG_FBCON_FONTS=y CONFIG_FONT_8x8=y -# CONFIG_FONT_8x16 is not set +CONFIG_FONT_8x16=y # CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set # CONFIG_FONT_PEARL_8x8 is not set # CONFIG_FONT_ACORN_8x8 is not set @@ -650,6 +609,7 @@ # CONFIG_SOUND=y CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_UDA1341_GSM is not set # CONFIG_SOUND_SA1100_SSP is not set # CONFIG_SOUND_CMPCI is not set # CONFIG_SOUND_EMU10K1 is not set @@ -677,7 +637,8 @@ # # CONFIG_NO_FRAME_POINTER is not set CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_USER is not set # CONFIG_DEBUG_INFO is not set -CONFIG_MAGIC_SYSRQ=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_KERNEL_SILENCE is not set # CONFIG_DEBUG_LL is not set diff -urN linux-2.4.1-rmk1-np2/arch/arm/kernel/armksyms.c linux-2.4.1-rmk1-np2-fb9/arch/arm/kernel/armksyms.c --- linux-2.4.1-rmk1-np2/arch/arm/kernel/armksyms.c Wed Jun 6 01:03:39 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/kernel/armksyms.c Tue May 8 02:00:48 2001 @@ -89,7 +89,9 @@ * These symbols will never change their calling convention... */ EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter); +#ifndef CONFIG_KERNEL_SILENCE EXPORT_SYMBOL_ALIAS(fp_printk,printk); +#endif EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig); #ifdef CONFIG_CPU_26 diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/Makefile linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/Makefile --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/Makefile Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/Makefile Wed Mar 7 12:30:08 2001 @@ -12,11 +12,11 @@ # Object file lists. obj-y := arch.o hw.o dma-sa1100.o # mm.o -obj-m := gpio.o regmon.o +obj-m := gpio.o obj-n := obj- := -export-objs := hw.o dma-sa1100.o dma-sa1111.o leds.o hwtimer.o +export-objs := hw.o dma-sa1100.o dma-sa1111.o leds.o hwtimer.o power.o obj-$(CONFIG_SA1111) += dma-sa1111.o obj-$(CONFIG_LEDS) += leds.o @@ -24,12 +24,16 @@ obj-$(CONFIG_APM) += apm.o obj-$(CONFIG_PROFILER) += hwtimer.o obj-$(CONFIG_PM) += power.o suspend.o +obj-$(CONFIG_SA1100_REGMON) += regmon.o +obj-$(CONFIG_SA1100_FL) += sa1100_frontlight.o +obj-$(CONFIG_SA1100_PB) +=powerbutton.o obj-$(CONFIG_SA1100_USB) += sa1100_usbd.o sa1100_usbd-objs := usb_ctl.o usb_ep0.o usb_recv.o usb_send.o sa1100_usbd-objs += usb-eth.o #sa1100_usbd-objs += usb-char.o - +obj-$(CONFIG_SA1100_OMNIMETER) += omniiop.o +obj-$(CONFIG_SA1100_JORNADA720) += jornada720.o include $(TOPDIR)/Rules.make sa1100_usbd.o: $(sa1100_usbd-objs) diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/apm.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/apm.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/apm.c Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/apm.c Wed Apr 18 15:37:34 2001 @@ -1,4 +1,4 @@ -/* -*- linux-c -*- +/* * bios-less APM driver for ARM Linux * Jamey Hicks * adapted from the APM BIOS driver for Linux by Stephen Rothwell (sfr@linuxcare.com) @@ -9,6 +9,17 @@ * * [This document is available from Microsoft at: * http://www.microsoft.com/hwdev/busbios/amp_12.htm] + * + * + * 2001-03-07 CIH + * - Add software APM BIOS for Freebird. + * - Add new "ioctl" ==> + * APM_IOC_GET_SLEEP_TIMER ,APM_IOC_SET_SLEEP_TIMER. + * set/get sleep-timer. + * If set sleep-timer to zero, APM is off. + * + * 2001-3-13 Chester Kuo + * - Fix pcmcia resume bug with power manager function */ #include @@ -33,7 +44,20 @@ #include #include #include -#include +#include +#include + +/* + * Debug macros + */ +#define DEBUG 1 +#undef DEBUG +#ifdef DEBUG +# define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args) +#else +# define DPRINTK(fmt, args...) +#endif + #ifdef CONFIG_MAGIC_SYSRQ extern void (*sysrq_power_off)(void); @@ -65,9 +89,9 @@ */ /* - * Need to poll the APM BIOS every second + * Need to poll the APM BIOS every 15 seconds */ -#define APM_CHECK_TIMEOUT (HZ) +#define APM_CHECK_TIMEOUT (HZ*5) /* * Ignore suspend events for this amount of time after a resume @@ -135,6 +159,12 @@ static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); static struct apm_user * user_list = NULL; +static unsigned long rcnr_bak = 0; +static unsigned long jiffies_bak = 0; +static struct timer_list apm_timer; +static int apm_suspend_atatus = 0; +static long sleep_timer = 0/*5*60*/; // sleep-timer is 5 minutes. + static char driver_version[] = "1.13"; /* no spaces */ static char * apm_event_name[] = { @@ -180,6 +210,13 @@ }; #define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t)) +static int send_event(apm_event_t event); +static int apm_get_power_status(u_char *ac_line_status, + u_char *battery_status, + u_char *battery_flag, + u_char *battery_percentage, + u_short *battery_life); + static int __init apm_driver_version(u_short *val) { /* no bios, so we hardcode version 1.2 */ @@ -189,9 +226,48 @@ static int apm_get_event(apm_event_t *event, apm_eventinfo_t *info) { + static unsigned char last_ac_line_status=0, last_battery_status=0; + unsigned char ac_line_status, battery_status, battery_flag, percentage; + unsigned short dx; + static unsigned long lastsent=0; + /* assigns *event and *info */ *event = 0; *info = 0; + + if (apm_suspend_atatus){ + switch ( apm_suspend_atatus ){ + case 1: + *event = APM_USER_SUSPEND; + break; + } + apm_suspend_atatus = 0; + } +/* Generate AC and battery related events. It should works not only in + * freebird but also in any strongarm system which implements + * apm_get_power_status(). + */ + +#ifdef CONFIG_SA1100_FREEBIRD + else{ + apm_get_power_status(&ac_line_status, &battery_status, &battery_flag, &percentage, &dx); + + if (ac_line_status != last_ac_line_status){ + *event = APM_POWER_STATUS_CHANGE; + last_ac_line_status = ac_line_status; + /* If battery status changed from HIGH or Charging into LOW.*/ + } else if ( (battery_status!=last_battery_status)&& + (battery_status == APM_BATTERY_STATUS_LOW ) ){ + if ( (jiffies - lastsent)>30*HZ){ + *event = APM_LOW_BATTERY; + lastsent = jiffies; + } + } + last_battery_status = battery_status; +#endif + } + +#if 0 #ifdef CONFIG_SA1100_BITSY if (machine_is_bitsy()) { if ((GPLR & GPIO_BITSY_NPOWER_BUTTON) == 0) { @@ -201,6 +277,7 @@ } } #endif +#endif #ifdef CONFIG_SA1100_ACCELENT // FIXME do we need to debounce?? @@ -214,12 +291,11 @@ return APM_SUCCESS; } - static int set_power_state(u_short what, u_short state) { if (state == APM_STATE_SUSPEND) { - printk("*** whee here we go into suspend\n"); + DPRINTK("*** whee here we go into suspend\n"); sa1110_suspend(); send_event(APM_CRITICAL_RESUME); } @@ -276,6 +352,11 @@ } #endif +#ifdef CONFIG_SA1100_FREEBIRD + if (machine_is_freebird()) { + BCR_clear(BCR_FREEBIRD_AUDIO_PWR | BCR_FREEBIRD_LCD_PWR | BCR_FREEBIRD_CODEC_RST |BCR_FREEBIRD_LCD_DISP | BCR_FREEBIRD_LCD_BACKLIGHT | BCR_FREEBIRD_LCD_LIGHT_INC |BCR_FREEBIRD_LCD_LIGHT_DU | BCR_FREEBIRD_LCD_INC | BCR_FREEBIRD_LCD_DU | BCR_FREEBIRD_VPPEN | BCR_FREEBIRD_SPK_OFF); + } +#endif } #ifdef CONFIG_APM_DO_ENABLE @@ -305,6 +386,9 @@ #ifdef CONFIG_SA1100_BITSY h3600_apm_get_power_status(ac_line_status, battery_status, battery_flag, battery_percentage, battery_life); #endif +#ifdef CONFIG_SA1100_FREEBIRD + freebird_apm_get_power_status(ac_line_status, battery_status, battery_flag, battery_percentage, battery_life); +#endif return APM_SUCCESS; } @@ -408,6 +492,17 @@ static void set_time(void) { + unsigned long diff; + + if ( RCNR > rcnr_bak ) + diff = (RCNR-rcnr_bak); + else + diff = ((~((unsigned long)0))-rcnr_bak+RCNR+1); + + diff *= 100; + + jiffies = jiffies_bak + diff; + #if 0 unsigned long flags; @@ -422,6 +517,9 @@ static void get_time_diff(void) { + rcnr_bak = RCNR; + jiffies_bak = jiffies; + #if 0 #ifndef CONFIG_APM_RTC_IS_GMT unsigned long flags; @@ -439,11 +537,41 @@ #endif } +static void apm_process_timeout(unsigned long __data) +{ + apm_suspend_atatus = 1; +} + +static void set_apm_suspend_timer(void) +{ + if ( sleep_timer ) + { + del_timer(&apm_timer); + init_timer(&apm_timer); + apm_timer.expires = jiffies+sleep_timer*100; + apm_timer.data = (unsigned long)0; + apm_timer.function = apm_process_timeout; + add_timer(&apm_timer); + } +} + static void reinit_timer(void) { + // restart time interrupt + OSMR0 = 0; + OIER |= OIER_E0; + OSCR = 0; +} +void pm_timer_init(void) +{ + if ( sleep_timer ) + { + apm_timer.expires = jiffies+sleep_timer*100; + } } + static int send_event(apm_event_t event) { switch (event) { @@ -451,7 +579,7 @@ case APM_CRITICAL_SUSPEND: case APM_USER_SUSPEND: /* map all suspends to ACPI D3 */ - if (pm_send_all(PM_SUSPEND, (void *)3)) { + if (pm_send_all(PM_SUSPEND, (void *)2)) { if (event == APM_CRITICAL_SUSPEND) { printk(KERN_CRIT "apm: Critical suspend was vetoed, expect armageddon\n" ); return 0; @@ -479,13 +607,15 @@ int err; struct apm_user *as; - printk("*** suspend()\n"); + DPRINTK("*** suspend()\n"); get_time_diff(); cli(); err = apm_set_power_state(APM_STATE_SUSPEND); reinit_timer(); set_time(); + set_apm_suspend_timer(); + waiting_for_resume = 0; if (err == APM_NO_ERROR) err = APM_SUCCESS; if (err != APM_SUCCESS) @@ -831,6 +961,20 @@ return as->suspend_result; } break; + + case APM_IOC_GET_SLEEP_TIMER: + put_user(sleep_timer, (long *)arg); + break; + + case APM_IOC_SET_SLEEP_TIMER: + get_user(sleep_timer, (long *)arg); + if ( sleep_timer ) + set_apm_suspend_timer(); + else + del_timer(&apm_timer); + + break; + default: return -EINVAL; } @@ -1187,6 +1331,8 @@ misc_register(&apm_device); + set_apm_suspend_timer(); + return 0; } diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/arch.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/arch.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/arch.c Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/arch.c Fri Mar 9 02:24:34 2001 @@ -115,11 +115,13 @@ setup_initrd( 0xc0800000, 3*1024*1024 ); } else if (machine_is_freebird()) { +#ifdef CONFIG_SA1100_FREEBIRD_OLD SET_BANK( 0, 0xc0000000, 32*1024*1024 ); mi->nr_banks = 1; ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); setup_ramdisk( 1, 0 ,0 , 8192 ); setup_initrd( 0xc0800000, 3*1024*1024 ); +#endif } else if (machine_is_brutus()) { SET_BANK( 0, 0xc0000000, 4*1024*1024 ); @@ -289,6 +291,9 @@ #ifdef CONFIG_SA1100_FREEBIRD MACHINE_START(FREEBIRD, "Freebird-HPC-1.1") BOOT_MEM(0xc0000000,0x80000000, 0xf8000000) +#ifdef CONFIG_SA1100_FREEBIRD_NEW + BOOT_PARAMS(0xc0000100) +#endif FIXUP(fixup_sa1100) MAPIO(sa1100_map_io) INITIRQ(genarch_init_irq) diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/dma-sa1100.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/dma-sa1100.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/dma-sa1100.c Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/dma-sa1100.c Mon Mar 5 15:15:53 2001 @@ -74,6 +74,19 @@ sa1100_dma_t dma_chan[MAX_SA1100_DMA_CHANNELS]; +#ifdef CONFIG_PM +typedef struct { + u_long DDAR; + u_long SetDCSR; + u_long ClrDCSR; + dma_addr_t DBSA; + u_long DBTA; + dma_addr_t DBSB; + u_long DBTB; +} dma_shadow_regs_t; + +dma_shadow_regs_t shadow_regs[MAX_SA1100_DMA_CHANNELS]; +#endif /* * DMA processing... @@ -511,6 +524,52 @@ DPRINTK("freed\n"); } +#ifdef CONFIG_PM +/* Should be called by device that uses DMA when sleep & wake-up */ +int sa1100_dma_sleep(dmach_t channel) +{ + sa1100_dma_t *dma = &dma_chan[channel]; + dma_regs_t *regs = dma->regs; + dma_shadow_regs_t* shadow = &shadow_regs[channel]; + + shadow->SetDCSR = regs->RdDCSR & + (DCSR_RUN | DCSR_IE | DCSR_STRTA | DCSR_STRTB); + shadow->ClrDCSR = ~(regs->RdDCSR) & + (DCSR_RUN | DCSR_IE | DCSR_STRTA | DCSR_STRTB); + + sa1100_dma_stop(channel); + + shadow->DDAR = regs->DDAR; + shadow->DBSA = regs->DBSA; + shadow->DBTA = regs->DBTA; + shadow->DBSB = regs->DBSB; + shadow->DBTB = regs->DBTB; + + return 0; +} +int sa1100_dma_wakeup(dmach_t channel) +{ + sa1100_dma_t *dma = &dma_chan[channel]; + dma_regs_t *regs = dma->regs; + dma_shadow_regs_t* shadow = &shadow_regs[channel]; + + regs->DDAR = shadow->DDAR; + regs->DBSA = shadow->DBSA; + regs->DBTA = shadow->DBTA; + regs->DBSB = shadow->DBSB; + regs->DBTB = shadow->DBTB; + + if (shadow->SetDCSR | DCSR_RUN) { + regs->ClrDCSR = (shadow->ClrDCSR | DCSR_RUN | DCSR_IE); + regs->SetDCSR = (shadow->SetDCSR & ~(DCSR_RUN | DCSR_IE)); + sa1100_dma_resume(channel); + } else { + regs->ClrDCSR = shadow->ClrDCSR; + regs->SetDCSR = shadow->SetDCSR; + } + return 0; +} +#endif EXPORT_SYMBOL(sa1100_request_dma); EXPORT_SYMBOL(sa1100_dma_set_callback); @@ -523,6 +582,10 @@ EXPORT_SYMBOL(sa1100_dma_flush_all); EXPORT_SYMBOL(sa1100_free_dma); +#ifdef CONFIG_PM +EXPORT_SYMBOL(sa1100_dma_sleep); +EXPORT_SYMBOL(sa1100_dma_wakeup); +#endif static int __init sa1100_init_dma(void) { diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/leds.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/leds.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/leds.c Tue Sep 19 06:15:25 2000 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/leds.c Wed Mar 14 13:40:09 2001 @@ -400,6 +400,103 @@ #endif /* CONFIG_SA1100_CERF */ +#ifdef CONFIG_SA1100_FREEBIRD + +#define LED_MASK (GPIO_GPIO(27)) + +static void freebird_leds_event(led_event_t evt) +{ + unsigned long flags; + + local_irq_save(flags); + + switch (evt) { + case led_start: + hw_led_state = LED_MASK; + led_state = LED_STATE_ENABLED; + break; + + case led_stop: + led_state &= ~LED_STATE_ENABLED; + break; + + case led_claim: + led_state |= LED_STATE_CLAIMED; + hw_led_state = LED_MASK; + break; + + case led_release: + led_state &= ~LED_STATE_CLAIMED; + hw_led_state = LED_MASK; + break; + +#ifdef CONFIG_LEDS_TIMER + case led_timer: + if (!(led_state & LED_STATE_CLAIMED)) + hw_led_state ^= LED_MASK; + break; +#endif + +#ifdef CONFIG_LEDS_CPU + case led_idle_start: +#if 0 + if (!(led_state & LED_STATE_CLAIMED)) + hw_led_state |= BCR_FREEBIRD_ALARM_LED; +#endif + break; + + case led_idle_end: +#if 0 + if (!(led_state & LED_STATE_CLAIMED)) + hw_led_state &= ~BCR_FREEBIRD_ALARM_LED; +#endif + break; +#endif + + case led_halted: + break; + + case led_green_on: + if (led_state & LED_STATE_CLAIMED) + hw_led_state &= ~LED_MASK; + break; + + case led_green_off: + if (led_state & LED_STATE_CLAIMED) + hw_led_state |= LED_MASK; + break; + + case led_amber_on: + break; + + case led_amber_off: + break; + + case led_red_on: +#if 0 + if (led_state & LED_STATE_CLAIMED) + hw_led_state &= ~BCR_LED_RED; +#endif + break; + + case led_red_off: +#if 0 + if (led_state & LED_STATE_CLAIMED) + hw_led_state |= BCR_LED_RED; +#endif + break; + + default: + break; + } + + if (led_state & LED_STATE_ENABLED) + BCR = BCR_value = (BCR_value & ~BCR_LED_MASK) | hw_led_state; + + local_irq_restore(flags); +} +#endif + static int __init sa1100_leds_init(void) { @@ -421,6 +518,10 @@ //GPDR |= 0x0000000F; leds_event = cerf_leds_event; } +#endif +#ifdef CONFIG_SA1100_FREEBIRD + if (machine_is_freebird()) + leds_event = freebird_leds_event; #endif leds_event(led_start); return 0; diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/power.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/power.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/power.c Wed Jun 6 01:03:52 2001 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/power.c Tue Apr 24 22:58:27 2001 @@ -15,7 +15,8 @@ /* * Debug macros */ -#define DEBUG 1 +//#define DEBUG 1 +#undef DEBUG #ifdef DEBUG # define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args) #else @@ -43,6 +44,17 @@ extern int cpu_sa1100_do_suspend(void); +static struct { + u32 osmr0, osmr1, osmr2, osmr3, oscr; + u32 ower, oier; + + u32 gpdr, grer, gfer, gafr; + u32 icmr, iclr, iccr; + u32 ppdr, ppsr, ppar, psdr; + + u32 ser3utcr0, ser3utcr1, ser3utcr2, ser3utcr3; + +} sys_ctx; int sa1110_suspend(void) { @@ -54,41 +66,172 @@ sleep_param_p = virt_to_phys(sleep_param); DPRINTK("*** sa1100_suspend()\n"); - DPRINTK("*** sleep_param_p = 0x%08x\n", sleep_param_p); - DPRINTK("*** resume_return() = 0x%08x\n", virt_to_phys(cpu_sa1100_resume)); + DPRINTK("*** sleep_param_p = 0x%08lx\n", sleep_param_p); + DPRINTK("*** resume_return() = 0x%08lx\n", virt_to_phys(cpu_sa1100_resume)); /* disable interrupts */ cli(); + RCNR = xtime.tv_sec; - /* save interrupt registers */ - sleep_param[SLEEP_PARAM_ICMR] = ICMR; - sleep_param[SLEEP_PARAM_GRER] = GRER; - sleep_param[SLEEP_PARAM_GFER] = GFER; + /* save vital registers */ + sys_ctx.osmr0 = OSMR0; + sys_ctx.osmr1 = OSMR1; + sys_ctx.osmr2 = OSMR2; + sys_ctx.osmr3 = OSMR3; + sys_ctx.oscr = OSCR; + sys_ctx.ower = OWER; + sys_ctx.oier = OIER; + + sys_ctx.gpdr = GPDR; + sys_ctx.grer = GRER; + sys_ctx.gfer = GFER; + sys_ctx.gafr = GAFR; + + sys_ctx.iclr = ICLR; + sys_ctx.icmr = ICMR; + sys_ctx.iccr = ICCR; + + sys_ctx.ppdr = PPDR; + sys_ctx.ppsr = PPSR; + sys_ctx.ppar = PPAR; + sys_ctx.psdr = PSDR; + + /* XXX Should be in serial driver */ +#if defined(CONFIG_SA1100_ASSABET) || defined(CONFIG_SA1100_FREEBIRD) + sys_ctx.ser3utcr0 = Ser1UTCR0; + sys_ctx.ser3utcr1 = Ser1UTCR1; + sys_ctx.ser3utcr2 = Ser1UTCR2; + sys_ctx.ser3utcr3 = Ser1UTCR3; + DPRINTK("save serial port 1 value\n"); +#else + sys_ctx.ser3utcr0 = Ser3UTCR0; + sys_ctx.ser3utcr1 = Ser3UTCR1; + sys_ctx.ser3utcr2 = Ser3UTCR2; + sys_ctx.ser3utcr3 = Ser3UTCR3; +#endif - /* set wake up sources */ + /* set wake up sources and power management registers */ if (machine_is_accelent_sa()) { PWER = 0x1; GRER = 0x1; GFER = 0x1; GEDR = 0x1; + } else if (machine_is_bitsy()) { + /* will add more sources later */ + + /* Wake up by releasing the power button */ + PWER = 0x1; + GRER = 0x1; + GFER = 0x0; + GEDR = 0x1; + + RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR; + /* Clear reset status */ + PCFR = PCFR_OPDE | PCFR_FP | PCFR_FS; + PGSR = 0x00000000; + } else if (machine_is_assabet()) { + PWER = (PWER_GPIO0| PWER_RTC); + GRER = 0x1; + GFER = 0x0; + GEDR = 0x1; + + RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR; + /* Clear reset status */ + PCFR = PCFR_OPDE | PCFR_FP | PCFR_FS; + PGSR = 0x00000000; + } else if (machine_is_freebird()) { + PWER = (PWER_GPIO0| PWER_RTC); + GRER = 0x1; + GFER = 0x0; + GEDR = 0x1; + /* Setup all gpio as input in sleep mode*/ + GPDR = 0x0; + /* Setup BCR for sleep mode value */ + BCR_clear(BCR_FREEBIRD_AUDIO_PWR | BCR_FREEBIRD_LCD_PWR | BCR_FREEBIRD_CODEC_RST |BCR_FREEBIRD_LCD_DISP | BCR_FREEBIRD_LCD_BACKLIGHT | BCR_FREEBIRD_LCD_LIGHT_INC |BCR_FREEBIRD_LCD_LIGHT_DU | BCR_FREEBIRD_LCD_INC | BCR_FREEBIRD_LCD_DU| BCR_FREEBIRD_VPPEN |BCR_FREEBIRD_SPK_OFF); + + RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR; + /* Clear reset status */ + PCFR = PCFR_OPDE ; + PGSR = 0x00000000; } - + /* set resume return address */ PSPR = virt_to_phys(cpu_sa1100_resume); cpu_sa1100_do_suspend(); + DPRINTK("*** made it back from resume\n"); - - ICMR = sleep_param[SLEEP_PARAM_ICMR]; - GRER = sleep_param[SLEEP_PARAM_GRER]; - GFER = sleep_param[SLEEP_PARAM_GFER]; - - OSMR0 = 0; /* set initial match at 0 */ - OSSR = 0xf; /* clear status on all timers */ - OIER |= OIER_E0; /* enable match on timer 0 to cause interrupts */ - OSCR = 0; /* initialize free-running timer, force first match */ - + /* restore registers */ + GPDR = sys_ctx.gpdr; + GRER = sys_ctx.grer; + GFER = sys_ctx.gfer; + GAFR = sys_ctx.gafr; + + /* XXX Should be in serial driver */ +#if defined(CONFIG_SA1100_ASSABET) || defined (CONFIG_SA1100_FREEBIRD) + Ser1UTCR0 = sys_ctx.ser3utcr0; + Ser1UTCR1 = sys_ctx.ser3utcr1; + Ser1UTCR2 = sys_ctx.ser3utcr2; + Ser1UTCR3 = sys_ctx.ser3utcr3; + DPRINTK("restore serial port 1 value\n"); +#else + Ser3UTCR0 = sys_ctx.ser3utcr0; + Ser3UTCR1 = sys_ctx.ser3utcr1; + Ser3UTCR2 = sys_ctx.ser3utcr2; + Ser3UTCR3 = sys_ctx.ser3utcr3; +#endif + + PPDR = sys_ctx.ppdr; + PPSR = sys_ctx.ppsr; + PPAR = sys_ctx.ppar; + PSDR = sys_ctx.psdr; + + + OSMR0 = sys_ctx.osmr0; + OSMR1 = sys_ctx.osmr1; + OSMR2 = sys_ctx.osmr2; + OSMR3 = sys_ctx.osmr3; + OSCR = sys_ctx.oscr; + OWER = sys_ctx.ower; + OIER = sys_ctx.oier; + + ICLR = sys_ctx.iclr; + ICCR = sys_ctx.iccr; + ICMR = sys_ctx.icmr; + + +#if defined(CONFIG_SA1100_BITSY) + if (machine_is_bitsy()) { + if (ICIP & IC_GPIO0) { + /* if wakeup source is power button, clear int flag to + prevent sleeping again */ + GEDR = GPIO_GPIO0; + ICIP = GPIO_GPIO0; + } + } +#endif +#if defined(CONFIG_SA1100_ASSABET) + if (machine_is_assabet()) { + if (ICIP & IC_GPIO0) { + /* if wakeup source is power button, clear int flag to + prevent sleeping again */ + GEDR = GPIO_GPIO0; + ICIP = GPIO_GPIO0; + } + } +#endif +#if defined(CONFIG_SA1100_FREEBIRD) + if (machine_is_freebird()) { + if (ICIP & IC_GPIO0) { + /* if wakeup source is power button, clear int flag to + prevent sleeping again */ + GEDR = GPIO_GPIO0; + ICIP = GPIO_GPIO0; + } + } +#endif + xtime.tv_sec = RCNR; sti(); kfree (sleep_param); @@ -96,6 +239,18 @@ return 0; } +static void reinit_timer(void) +{ +#ifdef CONFIG_SA1100_FREEBIRD + // restart time interrupt + OSMR0 = 0; + OSSR = 0xf; + OIER |= OIER_E0; + OSCR = 0; +#endif + +} + static int pm_do_suspend(ctl_table *ctl, int write, struct file *file, void *buffer, size_t *len) { int retval; @@ -109,11 +264,15 @@ retval = sa1110_suspend(); retval = pm_send_all(PM_RESUME, (void *)0); +#ifdef CONFIG_SA1100_FREEBIRD + reinit_timer(); +#endif if (retval) return retval; return 0; } + static struct ctl_table pm_table[] = diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/powerbutton.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/powerbutton.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/powerbutton.c Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/powerbutton.c Wed Mar 7 17:30:23 2001 @@ -0,0 +1,695 @@ +/* + * Itsy Powerbutton Device + * Copyright (c) Compaq Computer Corporation, 1998, 1999 + * + * Authors: Deborah A. Wallach and Carl Waldspurger + * + */ + +/* + * Overview + * + * This driver supports interrupt-driven button input for the special + * power button on the Itsy platform. The original driver (written + * completely by Debby Wallach) invoked sleep mode whenever this button + * was pressed and released. The current driver also supports standard + * file I/O operations, plus an ioctl() to control whether or not sleep + * mode should be entered. + * + * Note that the routine powerbutton_powermgr_register() is invoked + * early, prior to the main powerbutton_init() initialization routine. + * This is done in the powermgr initialization code to ensure that the + * powerbutton device is registered in the appropriate order. The global + * variable pb_pm_ready is used as a guard to prevent any early callbacks + * from the powermgr from accessing uninitialized data. + * + */ + +/* Log from 2.7 itsy project + * + * -2001/2/2 Chester Kuo + * Porting from linux kernel 2.0.x versiion of itsy project to kernel 2.4.x + * + */ + +/* + * debugging + * + */ + +#define PB_DEBUG (1) +#define PB_DEBUG_VERBOSE (1) + +/* + * includes + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include +#include + +#include +#include +#include + +#undef CONFIG_PROC_FS +#ifdef CONFIG_PROC_FS +#include +#include +#endif + +#include + + +/* + * externals + * + */ + +extern void sa1110_suspend(void); +/* + * constants + * + */ + +/* names */ +#define PB_NAME "SA11x0-PowerButton" +#define PB_NAME_VERBOSE "SA11x0 PowerButton driver" +#define PB_VERSION_STRING "$Revision: 2.8 $" + +/* device number */ +#define PB_MAJOR (120) + +/* interrupt number */ +#define PB_IRQ (IRQ_GPIO0) + +/* buffer sizes */ +#define PB_BUFFER_LG_NEVENTS (6) +#define PB_BUFFER_NEVENTS (1 << PB_BUFFER_LG_NEVENTS) +#define PB_BUFFER_INDEX_MASK (PB_BUFFER_NEVENTS - 1) + +#define MAX(a,b) ((a>b)?a:b) + + +static char *dev_id = "sa1100-powerbutton"; +static wait_queue_head_t waitq; +static int my_counter; +static DECLARE_TASK_QUEUE(tq_scheduler); + +/* + * types + * + */ + +typedef struct { + struct timeval timestamp; + unsigned char event_class; + unsigned char event_type; + unsigned char size; + unsigned char flags; +} event_header; + +typedef struct { + event_header common; + int sid; + unsigned short state; +} buttons_event; + + +typedef struct pb_client { + /* linked list */ + struct pb_client *prev, *next; + + /* identity */ + int id; + + /* allow sleep mode? */ + int enable_sleep; + + /* buffer management */ + int buf_next; + + /* dropped events */ + int drop_count; +} pb_client; + +typedef struct pb_dev { + + /* buffer management */ + buttons_event *buf; + int buf_events; + int buf_bytes; + + /* buffer indexing */ + int buf_mask; + int buf_next; + + /* clients */ + pb_client *clients; + int client_id_next; + int nclients; + + /* statistics */ + unsigned long interrupt_count; + unsigned long event_count; + +} pb_dev; + +/* + * globals + * + */ + + +static pb_dev pb_global; + + +#ifdef CONFIG_PROC_FS +static int pb_procfs_info(char *, char **, off_t, int, int); +#endif /* CONFIG_PROC_FS */ + +/* + * instantiate list operations + * + */ + +#if 0 +INSTANTIATE_LIST_INSERT(pb_client); +INSTANTIATE_LIST_REMOVE(pb_client); +#endif + +/* + * procfs operations + * + */ +#ifdef CONFIG_PROC_FS +static int pb_procfs_info(char *buf, + char **start, + off_t offset, + int length, + int unused) +{ + pb_dev *dev = &pb_global; + int len = 0; + + /* format debugging info */ + len += sprintf(buf + len, + "debugging:\n" + " %5d pb_pm_ready\n", + pb_pm_ready); + + /* format current state */ + len += sprintf(buf + len, + "statistics:\n" + " %5ld interrupts\n" + " %5ld events\n" + " %5d clients\n", + dev->interrupt_count, + dev->event_count, + dev->nclients); + + /* format client info */ + if (dev->clients != NULL) + { + pb_client *c; + + len += sprintf(buf + len, "clients:\n"); + for (c = dev->clients; c != NULL; c = c->next) + len += sprintf(buf + len, + " %5d %s\n", + c->id, + (c->enable_sleep ? "yes" : "no")); + } + + return(len); +} +#endif /* CONFIG_PROC_FS */ + +/* + * memory-mapped register operations + * + */ + +static inline void pb_gpio_clear() +{ + /* clear pending interrupts, if any */ + GEDR |= ( 1 << PB_IRQ ); +} + +static inline void pb_gpio_setup() +{ + if (PB_DEBUG_VERBOSE) + printk(PB_NAME "into pb_gpio_setup function\n"); + /* clear interrupts */ + pb_gpio_clear(); + + /* setup interrupts on both button up and down */ + GPDR &= ~( 0x00000001); + set_GPIO_IRQ_edge(GPIO_GPIO0,GPIO_BOTH_EDGES); +} + +static inline void pb_enable_wakeup(void) +{ + /* enable power button wakeup */ + if (PB_DEBUG_VERBOSE) + printk(PB_NAME "into pb_enable_wakeup function\n"); + /* only GPIO_0 can wake up it */ + PWER = 0x1; +} + +/* + * pb_dev operations + * + */ + +static int pb_dev_init(pb_dev *dev) +{ + /* + * modifies: dev + * effects: Initializes powerbutton device dev. + * Returns 0 iff successful, otherwise error code. + */ + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME "into pb_dev_init function\n"); + memset(dev,0,sizeof(pb_dev)); + + /* allocate buffer, fail if unable */ + dev->buf_events = PB_BUFFER_NEVENTS; + dev->buf_bytes = dev->buf_events * sizeof(buttons_event); + dev->buf = (buttons_event *)kmalloc(dev->buf_bytes, GFP_KERNEL); + if (dev->buf == NULL) + return(-ENOMEM); + + /* buffer indexing */ + dev->buf_mask = PB_BUFFER_INDEX_MASK; + dev->buf_next = 0; + + init_waitqueue_head(&waitq); + + /* everything OK */ + return(0); +} + +static void pb_dev_event(pb_dev *dev, unsigned short state) +{ + /* + * modifies: buf + * effects: Creates event with specified state. Event is added to the + * buffer associated with dev. Wakes up any clients that may + * be blocked waiting for the event. + * + */ + + buttons_event *next; + + /* use next slot in circular buffer */ + next = &dev->buf[dev->buf_next & dev->buf_mask]; + + /* generic session event */ + //Chester + //do_gettimeofday(&next->common.timestamp); + + next->common.event_class = EVENT_CLASS_BUTTONS; + next->common.event_type = EVENT_BUTTONS_STATE; + next->common.size = sizeof(buttons_event); + next->common.flags = EVENT_FLAG_NONE; + + /* specific buttons event */ + next->sid = SESSION_ID_NONE; + next->state = state; + + /* advance buffer index */ + dev->buf_next++; + + /* wakeup waiters, if any */ + wake_up_interruptible(&waitq); + + /* update statistics */ + dev->event_count++; +} + +/* + * interrupt processing + * + */ + +static void pb_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + pb_dev *dev = &pb_global; +// gpio_reg *gpio = dev->gpio; + unsigned int button_up; + + /* determine button state */ + button_up = GPLR & ( 0x01 ); + + /* clear edge detect register */ + pb_gpio_clear(); + + /* buffer event */ + pb_dev_event(dev, button_up ? 0 : BUTTON_POWER); + + /* update statistics */ + dev->interrupt_count++; + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_interrupt %ld, up=%u\n", + dev->interrupt_count, + button_up); + + printk(PB_NAME ": into power manager function\n"); + /* on button up, enter sleep mode if enabled */ + if (button_up) + { + /* enter sleep mode, unless resuming */ + + /* Wait until we are no longer at interrupt level --mann */ + static struct tq_struct tq; + tq.routine = (void (*)(void*)) sa1110_suspend; + tq.data = NULL; + printk(PB_NAME ": into sleep mode function\n"); + queue_task(&tq, &tq_scheduler); + } + //Chester + run_task_queue(&tq_scheduler); + /* CONFIG_POWERMGR */ +#if 0 + if (button_up) { + my_counter++; + if(my_counter % 2) { + BCR_clear(BCR_FREEBIRD_LCD_DISP|BCR_FREEBIRD_LCD_PWR|BCR_FREEBIRD_LCD_BACKLIGHT); + } else { + BCR_set(BCR_FREEBIRD_LCD_DISP| BCR_FREEBIRD_LCD_PWR |BCR_FREEBIRD_LCD_BACKLIGHT); + } + } +#endif +} + +static void pb_hardware_init() +{ + if (PB_DEBUG_VERBOSE) + printk(PB_NAME "into pb_hardware_init function\n"); + pb_gpio_setup(); + pb_enable_wakeup(); +} + +/* + * file operations + * + */ + +static int pb_ioctl(struct inode *inode, + struct file *file, + uint command, + ulong arg) +{ + pb_client *client = (pb_client *) file->private_data; + pb_dev *dev = &pb_global; + int size, err; + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_ioctl: cmd=%d, arg=%lu\n", command, arg); + + /* sanity checks */ + if (_IOC_TYPE(command) != POWERBUTTON_IOCTL_TYPE) + return(-EINVAL); + if (_IOC_NR(command) > POWERBUTTON_IOCTL_MAXNR) + return(-EINVAL); + + /* verify transfer memory */ + size = _IOC_SIZE(command); + if (_IOC_DIR(command) & _IOC_READ) + //dirty +#if 0 + if ((err = verify_area(VERIFY_WRITE, (void *) arg, size)) != 0) + return(err); + if (_IOC_DIR(command) & _IOC_WRITE) + if ((err = verify_area(VERIFY_READ, (void *) arg, size)) != 0) + return(err); + #endif + + /* dispatch based on command */ + switch (command) { + case POWERBUTTON_GET_SLEEP_ALL: + case POWERBUTTON_GET_SLEEP: + case POWERBUTTON_SET_SLEEP: + case POWERBUTTON_ENTER_SLEEP_MODE: + case POWERBUTTON_ENTER_DEEP_SLEEP_MODE: + /* CONFIG_POWERMGR */ + } + + /* invalid command */ + return(-EINVAL); +} + +static int pb_read(struct inode *inode, + struct file *file, + char *buffer, + int count) +{ + /* + * modifies: buffer + * effects: Copies available powerbutton events, if any, to buffer. + * Returns the number of bytes copied. + * + */ + + const int event_bytes = sizeof(buttons_event); + + pb_client *client = (pb_client *) file->private_data; + pb_dev *dev = &pb_global; + int total, buf_first, err; + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_read\n"); + + /* verify user-space buffer validity */ + //dirty +#if 0 + if ((err = verify_area(VERIFY_WRITE, (void *) buffer, count)) != 0) + return(err); +#endif + + /* initialize */ + total = 0; + + /* determine first available buffered event */ + //Chester + buf_first = MAX(0, dev->buf_next - dev->buf_events); + + /* skip over dropped events */ + if (client->buf_next < buf_first) + { + client->buf_next = buf_first; + client->drop_count++; + } + + /* transfer integral number of events */ + for (; + (client->buf_next < dev->buf_next) && (count >= event_bytes); + client->buf_next++) + { + buttons_event *event; + + /* examine next buffered event */ + event = &dev->buf[client->buf_next & dev->buf_mask]; + + /* copyout event */ + //memcpy_tofs((void *) buffer, (const void *) event, event_bytes); + + /* update counts */ + total += event_bytes; + buffer += event_bytes; + count -= event_bytes; + } + + + return(total); +} + +#if 0 +static int pb_select(struct inode *inode, + struct file *file, + int mode, + /*select_table *table*/) +{ + pb_client *client = (pb_client *) file->private_data; + pb_dev *dev = &pb_global; + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_select\n"); + + /* handle select on input */ + if (mode == SEL_IN) + { + /* any events buffered? */ + if (client->buf_next < dev->buf_next) + return(1); + + /* wait for event */ + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_select: wait...\n"); + //select_wait(&dev->waitq, table); + return(0); + } + + /* SEL_OUT, SEL_EX not supported */ + return(0); +} +#endif + +static int pb_open(struct inode *inode, struct file *file) +{ + pb_dev *dev = &pb_global; + pb_client *client; + int id; + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_open\n"); + + + +#if 0 + /* add to client list */ + pb_client_insert(&dev->clients, client); + dev->nclients++; +#endif + + /* attach client state to file */ + file->private_data = client; + + MOD_INC_USE_COUNT; + /* everything OK */ + return(0); +} + +static void pb_release(struct inode *inode, struct file *file) +{ + pb_client *client = (pb_client *) file->private_data; + pb_dev *dev = &pb_global; + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": pb_release\n"); + + file->private_data = NULL; + + MOD_DEC_USE_COUNT; +} + +static struct file_operations pb_fops = +{ + read: pb_read, + //pb_select, + ioctl: pb_ioctl, + open: pb_open, + release:pb_release, +}; + +/* + * initialization + * + */ + +static char *pb_version(void) +{ + /* + * modifies: nothing + * effects: Returns the current cvs revision number. + * storage: Return value is statically-allocated. + * + */ + + static char version[8]; + char *revision; + int i = 0; + + /* extract version number from cvs string */ + for (revision = PB_VERSION_STRING; *revision != '\0'; revision++) + if (isdigit((int) *revision) || (*revision == '.')) + version[i++] = *revision; + version[i] = '\0'; + + return(version); +} + + +static int __init powerbutton_init(void) +{ + static int initialized = 0; + struct proc_dir_entry *entry; + + pb_dev *dev = &pb_global; + + /* initialize only once */ + if (initialized++) + return(-EPERM); + + if (PB_DEBUG_VERBOSE) + printk(PB_NAME ": Power-button_init\n"); + + /* initialize global state */ + pb_dev_init(dev); + + /* initialize hardware */ + pb_hardware_init(); + if (PB_DEBUG_VERBOSE) + printk(PB_NAME "after pb_hardware_init function\n"); + + /* register device */ + if (register_chrdev(PB_MAJOR, "sa1100-pb", &pb_fops) != 0) + { + /* log error and fail */ + printk(PB_NAME ": unable to register major device %d\n", PB_MAJOR); + return -EBUSY; + } + +#ifdef CONFIG_PROC_FS + /* register procfs device */ + entry = create_proc_entry("sa1100-pb",S_IRUSR | S_IRGRP | S_IROTH,&proc_root); + + if (entry) { + entry->read_proc = pb_procfs_info; + } else { + printk(KERN_ERR ":can't create powerbutton proc directory\n"); + return(-ENOMEM); + } +#endif /* CONFIG_PROC_FS */ + + /* initialize shared IRQ */ + if (request_irq(PB_IRQ,pb_interrupt,SA_INTERRUPT| SA_SAMPLE_RANDOM,PB_NAME,dev_id)) + { + /* log error and fail */ + printk(PB_NAME ": request_irq failed\n"); + return -EBUSY; + } + + + /* log device registration */ + printk(PB_NAME_VERBOSE " version %s initialized\n", pb_version()); + + /* everything OK */ + return(0); +} + +module_init(powerbutton_init); + +static void __exit powerbutton_exit(void) +{ + unregister_chrdev(PB_MAJOR,PB_NAME); + freeirq(PB_IRQ,dev_id); + +} +module_exit(powerbutton_exit); diff -urN linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/sa1100_frontlight.c linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/sa1100_frontlight.c --- linux-2.4.1-rmk1-np2/arch/arm/mach-sa1100/sa1100_frontlight.c Thu Jan 1 08:00:00 1970 +++ linux-2.4.1-rmk1-np2-fb9/arch/arm/mach-sa1100/sa1100_frontlight.c Tue Mar 13 11:41:20 2001 @@ -0,0 +1,514 @@ +/************************************************************* + * StrongARM 11xx LCD Frontlight Device + * + * linux/drivers/video/sa1100_frontlight.c + ************************************************************* + * + * Initial Version by: Nicholas Mistry (nmistry@lhsl.com) + * + * This driver provides basic functionality for the frontlight + * provided with the Assabet board. It will enable and disable + * the light. + * + * The module grabs a dynamically assigned Major, so you will have + * to do a mknod before using the device. I typically use /dev/sa1100-fl + * + * Because the assabet does not come with its own power supply for the + * one can be obtained/made. Below is a list of the parts i used to + * enable mine. + * + * ** The parts/cable described below assume that your assabet + * ** is using the Sharp LQ039Q2DS54 Screen. + * + * Parts List: + * ------------ + * 1 ERG power 8m122375 DC to AC inverter. + * obtain from: Endicott Research Group Inc. (http://www.ergpower.com) + * + * Assabet Side Connector: + * 1 Minitek 90312-005 Housing + * 3 Minitek 77138-101 Pins + * obtain both from: FCI Framatome Group (http://www.fciconnect.com) + * * Samples Available * + * + * Inverter Side Connector: + * 1 Standard 0.1" 4 pin Housing + * 3 Standard 0.1" Pins (crimp is preferred) + * + * 3 pieces of 26 AWG Stranded Wire each aprox 4"-6" long + * (3 colors optional: red,black,white) + * + * Cable Diagram: + * -------------- + * + * Inverter: Assabet: + * + * _____ _______ + * | ______ /---------------| |1 [| (red wire) + * V+ 1|---- |] 1 |---/ /------------|_ |2 [| (black wire) + * GND 2|---- |] 2 |------(------\ |_||3 [| + * CTL 3|---- |] 3 |-----/ \-----| |4 [| (white wire) + * NE 4|---- |]___4_| |__|5__[| + * _____| + * + * + * Example Program: + * ---------------- + * + * // This following example program will blink on and off the + * // frontlight 5 times w/ an one second delay. + * + * #include + * #include + * #include + * #include + * #include + * #include + * #include + * + * #include