xref: /openbmc/qemu/include/hw/misc/max78000_trng.h (revision 0edc2afe0c8197bbcb98f948c609fb74c9b1ffd5)
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