 e641d42a37
			
		
	
	
		e641d42a37
		
	
	
	
	
		
			
			Small GPIO driver that exports a few pins using a virtual file system. Currently the two user leds and the user button are exported. Change-Id: I001d017ae27cd17b635587873f7da981054da459
		
			
				
	
	
		
			31 lines
		
	
	
		
			618 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			618 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #define REG(x)(*((volatile uint32_t *)(x)))
 | |
| #define BIT(x)(0x1 << x)
 | |
| 
 | |
| /* Write a uint32_t value to a memory address. */
 | |
| static inline void
 | |
| write32(uint32_t address, uint32_t value)
 | |
| {
 | |
| 	REG(address) = value;
 | |
| }
 | |
| 
 | |
| /* Read an uint32_t from a memory address */
 | |
| static inline uint32_t
 | |
| read32(uint32_t address)
 | |
| {
 | |
| 
 | |
| 	return REG(address);
 | |
| }
 | |
| 
 | |
| /* Set a 32 bits value depending on a mask */
 | |
| static inline void
 | |
| set32(uint32_t address, uint32_t mask, uint32_t value)
 | |
| {
 | |
| 	uint32_t val;
 | |
| 	val = read32(address);
 | |
| 	/* clear the bits */
 | |
| 	val &= ~(mask);
 | |
| 	/* apply the value using the mask */
 | |
| 	val |= (value & mask);
 | |
| 	write32(address, val);
 | |
| }
 |