This adds the BCM2835 GPIO controller. It currently implements: - The 54 GPIOs as outputs (qemu_irq) - The SD controller selection via alternate function of GPIOs 48-53 Signed-off-by: Clement Deschamps <clement.deschamps@antfield.fr> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1488293711-14195-4-git-send-email-peter.maydell@linaro.org Message-id: 20170224164021.9066-4-clement.deschamps@antfield.fr Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
		
			
				
	
	
		
			40 lines
		
	
	
		
			829 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			829 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Raspberry Pi (BCM2835) GPIO Controller
 | |
|  *
 | |
|  * Copyright (c) 2017 Antfield SAS
 | |
|  *
 | |
|  * Authors:
 | |
|  *  Clement Deschamps <clement.deschamps@antfield.fr>
 | |
|  *  Luc Michel <luc.michel@antfield.fr>
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2 or later.
 | |
|  * See the COPYING file in the top-level directory.
 | |
|  */
 | |
| 
 | |
| #ifndef BCM2835_GPIO_H
 | |
| #define BCM2835_GPIO_H
 | |
| 
 | |
| #include "hw/sd/sd.h"
 | |
| 
 | |
| typedef struct BCM2835GpioState {
 | |
|     SysBusDevice parent_obj;
 | |
| 
 | |
|     MemoryRegion iomem;
 | |
| 
 | |
|     /* SDBus selector */
 | |
|     SDBus sdbus;
 | |
|     SDBus *sdbus_sdhci;
 | |
|     SDBus *sdbus_sdhost;
 | |
| 
 | |
|     uint8_t fsel[54];
 | |
|     uint32_t lev0, lev1;
 | |
|     uint8_t sd_fsel;
 | |
|     qemu_irq out[54];
 | |
| } BCM2835GpioState;
 | |
| 
 | |
| #define TYPE_BCM2835_GPIO "bcm2835_gpio"
 | |
| #define BCM2835_GPIO(obj) \
 | |
|     OBJECT_CHECK(BCM2835GpioState, (obj), TYPE_BCM2835_GPIO)
 | |
| 
 | |
| #endif
 |