1*069852d1SJackson Donaldson /* 2*069852d1SJackson Donaldson * MAX78000 True Random Number Generator 3*069852d1SJackson Donaldson * 4*069852d1SJackson Donaldson * Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com> 5*069852d1SJackson Donaldson * 6*069852d1SJackson Donaldson * SPDX-License-Identifier: GPL-2.0-or-later 7*069852d1SJackson Donaldson */ 8*069852d1SJackson Donaldson #ifndef HW_MAX78000_TRNG_H 9*069852d1SJackson Donaldson #define HW_MAX78000_TRNG_H 10*069852d1SJackson Donaldson 11*069852d1SJackson Donaldson #include "hw/sysbus.h" 12*069852d1SJackson Donaldson #include "qom/object.h" 13*069852d1SJackson Donaldson 14*069852d1SJackson Donaldson #define TYPE_MAX78000_TRNG "max78000-trng" 15*069852d1SJackson Donaldson OBJECT_DECLARE_SIMPLE_TYPE(Max78000TrngState, MAX78000_TRNG) 16*069852d1SJackson Donaldson 17*069852d1SJackson Donaldson #define CTRL 0 18*069852d1SJackson Donaldson #define STATUS 4 19*069852d1SJackson Donaldson #define DATA 8 20*069852d1SJackson Donaldson 21*069852d1SJackson Donaldson #define RND_IE (1 << 1) 22*069852d1SJackson Donaldson 23*069852d1SJackson Donaldson struct Max78000TrngState { 24*069852d1SJackson Donaldson SysBusDevice parent_obj; 25*069852d1SJackson Donaldson 26*069852d1SJackson Donaldson MemoryRegion mmio; 27*069852d1SJackson Donaldson 28*069852d1SJackson Donaldson uint32_t ctrl; 29*069852d1SJackson Donaldson uint32_t status; 30*069852d1SJackson Donaldson uint32_t data; 31*069852d1SJackson Donaldson 32*069852d1SJackson Donaldson qemu_irq irq; 33*069852d1SJackson Donaldson }; 34*069852d1SJackson Donaldson 35*069852d1SJackson Donaldson #endif 36