 c79aa350ea
			
		
	
	
		c79aa350ea
		
	
	
	
	
		
			
			NPCM7XX models have been commited after the conversion from
commit 8063396bf3 ("Use OBJECT_DECLARE_SIMPLE_TYPE when possible").
Manually convert them.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20230109140306.23161-11-philmd@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
		
	
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Nuvoton NPCM7xx MFT Module
 | |
|  *
 | |
|  * Copyright 2021 Google LLC
 | |
|  *
 | |
|  * 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.
 | |
|  */
 | |
| #ifndef NPCM7XX_MFT_H
 | |
| #define NPCM7XX_MFT_H
 | |
| 
 | |
| #include "exec/memory.h"
 | |
| #include "hw/clock.h"
 | |
| #include "hw/irq.h"
 | |
| #include "hw/sysbus.h"
 | |
| #include "qom/object.h"
 | |
| 
 | |
| /* Max Fan input number. */
 | |
| #define NPCM7XX_MFT_MAX_FAN_INPUT 19
 | |
| 
 | |
| /*
 | |
|  * Number of registers in one MFT module. Don't change this without increasing
 | |
|  * the version_id in vmstate.
 | |
|  */
 | |
| #define NPCM7XX_MFT_NR_REGS (0x20 / sizeof(uint16_t))
 | |
| 
 | |
| /*
 | |
|  * The MFT can take up to 4 inputs: A0, B0, A1, B1. It can measure one A and one
 | |
|  * B simultaneously. NPCM7XX_MFT_INASEL and NPCM7XX_MFT_INBSEL are used to
 | |
|  * select which A or B input are used.
 | |
|  */
 | |
| #define NPCM7XX_MFT_FANIN_COUNT 4
 | |
| 
 | |
| /**
 | |
|  * struct NPCM7xxMFTState - Multi Functional Tachometer device state.
 | |
|  * @parent: System bus device.
 | |
|  * @iomem: Memory region through which registers are accessed.
 | |
|  * @clock_in: The input clock for MFT from CLK module.
 | |
|  * @clock_{1,2}: The counter clocks for NPCM7XX_MFT_CNT{1,2}
 | |
|  * @irq: The IRQ for this MFT state.
 | |
|  * @regs: The MMIO registers.
 | |
|  * @max_rpm: The maximum rpm for fans. Order: A0, B0, A1, B1.
 | |
|  * @duty: The duty cycles for fans, relative to NPCM7XX_PWM_MAX_DUTY.
 | |
|  */
 | |
| struct NPCM7xxMFTState {
 | |
|     SysBusDevice parent;
 | |
| 
 | |
|     MemoryRegion iomem;
 | |
| 
 | |
|     Clock       *clock_in;
 | |
|     Clock       *clock_1, *clock_2;
 | |
|     qemu_irq    irq;
 | |
|     uint16_t    regs[NPCM7XX_MFT_NR_REGS];
 | |
| 
 | |
|     uint32_t    max_rpm[NPCM7XX_MFT_FANIN_COUNT];
 | |
|     uint32_t    duty[NPCM7XX_MFT_FANIN_COUNT];
 | |
| };
 | |
| 
 | |
| #define TYPE_NPCM7XX_MFT "npcm7xx-mft"
 | |
| OBJECT_DECLARE_SIMPLE_TYPE(NPCM7xxMFTState, NPCM7XX_MFT)
 | |
| 
 | |
| #endif /* NPCM7XX_MFT_H */
 |