1/* 2 * Copyright 2022, J��r��me Duval, jerome.duval@gmail.com. 3 * 4 * Distributed under the terms of the MIT License. 5 */ 6#ifndef _CCP_H 7#define _CCP_H 8 9 10#include <stdlib.h> 11 12#include <KernelExport.h> 13 14 15//#define TRACE_CCP_RNG 16#ifndef DRIVER_NAME 17# define DRIVER_NAME "ccp_rng" 18#endif 19#ifdef TRACE_CCP_RNG 20# define TRACE(x...) dprintf("\33[33m" DRIVER_NAME ":\33[0m " x) 21#else 22# define TRACE(x...) ; 23#endif 24#define TRACE_ALWAYS(x...) dprintf("\33[33m" DRIVER_NAME ":\33[0m " x) 25#define ERROR(x...) dprintf("\33[33m" DRIVER_NAME ":\33[0m " x) 26#define CALLED(x...) TRACE("CALLED %s\n", __PRETTY_FUNCTION__) 27 28 29#define CCP_ACPI_DEVICE_MODULE_NAME "busses/random/ccp_rng/acpi/driver_v1" 30#define CCP_PCI_DEVICE_MODULE_NAME "busses/random/ccp_rng/pci/driver_v1" 31#define CCP_DEVICE_MODULE_NAME "busses/random/ccp_rng/device/v1" 32 33 34#define read32(address) \ 35 (*((volatile uint32*)(address))) 36 37 38 39extern device_manager_info* gDeviceManager; 40extern driver_module_info gCcpAcpiDevice; 41extern driver_module_info gCcpPciDevice; 42 43 44typedef struct { 45 phys_addr_t base_addr; 46 uint64 map_size; 47 48 device_node* node; 49 device_node* driver_node; 50 51 area_id registersArea; 52 addr_t registers; 53 54 timer extractTimer; 55 void* dpcHandle; 56} ccp_device_info; 57 58 59#endif // _CCP_H 60