~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/samples/auxdisplay/cfag12864b-example.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /samples/auxdisplay/cfag12864b-example.c (Version linux-6.11-rc3) and /samples/auxdisplay/cfag12864b-example.c (Version ccs-tools-1.8.9)


  1 // SPDX-License-Identifier: GPL-2.0                 1 
  2 /*                                                
  3  *    Filename: cfag12864b-example.c              
  4  *     Version: 0.1.0                             
  5  * Description: cfag12864b LCD userspace examp    
  6  *                                                
  7  *      Author: Copyright (C) Miguel Ojeda <oj    
  8  *        Date: 2006-10-31                        
  9  */                                               
 10                                                   
 11 /*                                                
 12  * ------------------------                       
 13  * start of cfag12864b code                       
 14  * ------------------------                       
 15  */                                               
 16                                                   
 17 #include <string.h>                               
 18 #include <fcntl.h>                                
 19 #include <unistd.h>                               
 20 #include <sys/types.h>                            
 21 #include <sys/stat.h>                             
 22 #include <sys/mman.h>                             
 23                                                   
 24 #define CFAG12864B_WIDTH                (128)     
 25 #define CFAG12864B_HEIGHT               (64)      
 26 #define CFAG12864B_SIZE                 (128 *    
 27 #define CFAG12864B_BPB                  (8)       
 28 #define CFAG12864B_ADDRESS(x, y)        ((y) *    
 29                                         CFAG12    
 30 #define CFAG12864B_BIT(n)               (((uns    
 31                                                   
 32 #undef CFAG12864B_DOCHECK                         
 33 #ifdef CFAG12864B_DOCHECK                         
 34         #define CFAG12864B_CHECK(x, y)            
 35                                                   
 36 #else                                             
 37         #define CFAG12864B_CHECK(x, y)            
 38 #endif                                            
 39                                                   
 40 int cfag12864b_fd;                                
 41 unsigned char * cfag12864b_mem;                   
 42 unsigned char cfag12864b_buffer[CFAG12864B_SIZ    
 43                                                   
 44 /*                                                
 45  * init a cfag12864b framebuffer device           
 46  *                                                
 47  * No error:       return = 0                     
 48  * Unable to open: return = -1                    
 49  * Unable to mmap: return = -2                    
 50  */                                               
 51 static int cfag12864b_init(char *path)            
 52 {                                                 
 53         cfag12864b_fd = open(path, O_RDWR);       
 54         if (cfag12864b_fd == -1)                  
 55                 return -1;                        
 56                                                   
 57         cfag12864b_mem = mmap(0, CFAG12864B_SI    
 58                 MAP_SHARED, cfag12864b_fd, 0);    
 59         if (cfag12864b_mem == MAP_FAILED) {       
 60                 close(cfag12864b_fd);             
 61                 return -2;                        
 62         }                                         
 63                                                   
 64         return 0;                                 
 65 }                                                 
 66                                                   
 67 /*                                                
 68  * exit a cfag12864b framebuffer device           
 69  */                                               
 70 static void cfag12864b_exit(void)                 
 71 {                                                 
 72         munmap(cfag12864b_mem, CFAG12864B_SIZE    
 73         close(cfag12864b_fd);                     
 74 }                                                 
 75                                                   
 76 /*                                                
 77  * set (x, y) pixel                               
 78  */                                               
 79 static void cfag12864b_set(unsigned char x, un    
 80 {                                                 
 81         if (CFAG12864B_CHECK(x, y))               
 82                 cfag12864b_buffer[CFAG12864B_A    
 83                         CFAG12864B_BIT(x % CFA    
 84 }                                                 
 85                                                   
 86 /*                                                
 87  * unset (x, y) pixel                             
 88  */                                               
 89 static void cfag12864b_unset(unsigned char x,     
 90 {                                                 
 91         if (CFAG12864B_CHECK(x, y))               
 92                 cfag12864b_buffer[CFAG12864B_A    
 93                         ~CFAG12864B_BIT(x % CF    
 94 }                                                 
 95                                                   
 96 /*                                                
 97  * is set (x, y) pixel?                           
 98  *                                                
 99  * Pixel off: return = 0                          
100  * Pixel on:  return = 1                          
101  */                                               
102 static unsigned char cfag12864b_isset(unsigned    
103 {                                                 
104         if (CFAG12864B_CHECK(x, y))               
105                 if (cfag12864b_buffer[CFAG1286    
106                         CFAG12864B_BIT(x % CFA    
107                         return 1;                 
108                                                   
109         return 0;                                 
110 }                                                 
111                                                   
112 /*                                                
113  * not (x, y) pixel                               
114  */                                               
115 static void cfag12864b_not(unsigned char x, un    
116 {                                                 
117         if (cfag12864b_isset(x, y))               
118                 cfag12864b_unset(x, y);           
119         else                                      
120                 cfag12864b_set(x, y);             
121 }                                                 
122                                                   
123 /*                                                
124  * fill (set all pixels)                          
125  */                                               
126 static void cfag12864b_fill(void)                 
127 {                                                 
128         unsigned short i;                         
129                                                   
130         for (i = 0; i < CFAG12864B_SIZE; i++)     
131                 cfag12864b_buffer[i] = 0xFF;      
132 }                                                 
133                                                   
134 /*                                                
135  * clear (unset all pixels)                       
136  */                                               
137 static void cfag12864b_clear(void)                
138 {                                                 
139         unsigned short i;                         
140                                                   
141         for (i = 0; i < CFAG12864B_SIZE; i++)     
142                 cfag12864b_buffer[i] = 0;         
143 }                                                 
144                                                   
145 /*                                                
146  * format a [128*64] matrix                       
147  *                                                
148  * Pixel off: src[i] = 0                          
149  * Pixel on:  src[i] > 0                          
150  */                                               
151 static void cfag12864b_format(unsigned char *     
152 {                                                 
153         unsigned char i, j, n;                    
154                                                   
155         for (i = 0; i < CFAG12864B_HEIGHT; i++    
156         for (j = 0; j < CFAG12864B_WIDTH / CFA    
157                 cfag12864b_buffer[i * CFAG1286    
158                         j] = 0;                   
159                 for (n = 0; n < CFAG12864B_BPB    
160                         if (matrix[i * CFAG128    
161                                 j * CFAG12864B    
162                                 cfag12864b_buf    
163                                         CFAG12    
164                                         CFAG12    
165         }                                         
166 }                                                 
167                                                   
168 /*                                                
169  * blit buffer to lcd                             
170  */                                               
171 static void cfag12864b_blit(void)                 
172 {                                                 
173         memcpy(cfag12864b_mem, cfag12864b_buff    
174 }                                                 
175                                                   
176 /*                                                
177  * ----------------------                         
178  * end of cfag12864b code                         
179  * ----------------------                         
180  */                                               
181                                                   
182 #include <stdio.h>                                
183                                                   
184 #define EXAMPLES        6                         
185                                                   
186 static void example(unsigned char n)              
187 {                                                 
188         unsigned short i, j;                      
189         unsigned char matrix[CFAG12864B_WIDTH     
190                                                   
191         if (n > EXAMPLES)                         
192                 return;                           
193                                                   
194         printf("Example %i/%i - ", n, EXAMPLES    
195                                                   
196         switch (n) {                              
197         case 1:                                   
198                 printf("Draw points setting bi    
199                 cfag12864b_clear();               
200                 for (i = 0; i < CFAG12864B_WID    
201                         for (j = 0; j < CFAG12    
202                                 cfag12864b_set    
203                 break;                            
204                                                   
205         case 2:                                   
206                 printf("Clear the LCD");          
207                 cfag12864b_clear();               
208                 break;                            
209                                                   
210         case 3:                                   
211                 printf("Draw rows formatting a    
212                 memset(matrix, 0, CFAG12864B_W    
213                 for (i = 0; i < CFAG12864B_WID    
214                         for (j = 0; j < CFAG12    
215                                 matrix[j * CFA    
216                 cfag12864b_format(matrix);        
217                 break;                            
218                                                   
219         case 4:                                   
220                 printf("Fill the lcd");           
221                 cfag12864b_fill();                
222                 break;                            
223                                                   
224         case 5:                                   
225                 printf("Draw columns unsetting    
226                 for (i = 0; i < CFAG12864B_WID    
227                         for (j = 0; j < CFAG12    
228                                 cfag12864b_uns    
229                 break;                            
230                                                   
231         case 6:                                   
232                 printf("Do negative not-ing al    
233                 for (i = 0; i < CFAG12864B_WID    
234                         for (j = 0; j < CFAG12    
235                                 cfag12864b_not    
236                 break;                            
237         }                                         
238                                                   
239         puts(" - [Press Enter]");                 
240 }                                                 
241                                                   
242 int main(int argc, char *argv[])                  
243 {                                                 
244         unsigned char n;                          
245                                                   
246         if (argc != 2) {                          
247                 printf(                           
248                         "Syntax:  %s fbdev\n"     
249                         "Usually: /dev/fb0, /d    
250                 return -1;                        
251         }                                         
252                                                   
253         if (cfag12864b_init(argv[1])) {           
254                 printf("Can't init %s fbdev\n"    
255                 return -2;                        
256         }                                         
257                                                   
258         for (n = 1; n <= EXAMPLES; n++) {         
259                 example(n);                       
260                 cfag12864b_blit();                
261                 while (getchar() != '\n');        
262         }                                         
263                                                   
264         cfag12864b_exit();                        
265                                                   
266         return 0;                                 
267 }                                                 
268                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php