* Copyright 2021, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _FWCFG_H_
#define _FWCFG_H_
#include <stddef.h>
#include <stdint.h>
enum {
fwCfgSelectSignature = 0x0000,
fwCfgSelectId = 0x0001,
fwCfgSelectFileDir = 0x0019,
fwCfgSelectFileFirst = 0x0020,
};
enum {
fwCfgSignature = 0x554D4551,
fwCfgIdTraditional = 0,
fwCfgIdDma = 1,
};
enum {
fwCfgDmaFlagsError = 0,
fwCfgDmaFlagsRead = 1,
fwCfgDmaFlagsSkip = 2,
fwCfgDmaFlagsSelect = 3,
fwCfgDmaFlagsWrite = 4,
};
struct __attribute__((packed)) FwCfgFile {
uint32_t size;
uint16_t select;
uint16_t reserved;
char name[56];
};
struct __attribute__((packed)) FwCfgFiles {
uint32_t count;
FwCfgFile f[];
};
struct __attribute__((packed)) FwCfgDmaAccess {
uint32_t control;
uint32_t length;
uint64_t address;
};
struct __attribute__((packed)) FwCfgRegs {
uint64_t data;
uint16_t selector;
uint16_t unused1;
uint32_t unused2;
uint64_t dmaAdr;
};
enum {
ramFbFormatXrgb8888 = ((uint32_t)('X') | ((uint32_t)('R') << 8)
| ((uint32_t)('2') << 16) | ((uint32_t)('4') << 24)),
};
struct __attribute__((packed)) RamFbCfg {
uint64_t addr;
uint32_t fourcc;
uint32_t flags;
uint32_t width;
uint32_t height;
uint32_t stride;
};
extern FwCfgRegs *volatile gFwCfgRegs;
namespace FwCfg {
void Init();
};
#endif