Chameleon

Chameleon Svn Source Tree

Root/branches/ErmaC/Enoch_Modules/i386/libsaio/device_inject.h

1/*
2 *Copyright 2009 Jasmin Fazlic All rights reserved.
3 */
4/*
5 *Cleaned and merged by iNDi
6 */
7
8#ifndef __LIBSAIO_DEVICE_INJECT_H
9#define __LIBSAIO_DEVICE_INJECT_H
10
11#define DP_ADD_TEMP_VAL(dev, val) devprop_add_value(dev, (char*)val[0], (uint8_t*)val[1], strlen(val[1]) + 1)
12#define DP_ADD_TEMP_VAL_DATA(dev, val) devprop_add_value(dev, (char*)val.name, (uint8_t*)val.data, val.size)
13#define MAX_PCI_DEV_PATHS 4
14
15#define DEV_PROP_DEVICE_MAX_ENTRIES 64
16
17extern void setupDeviceProperties(Node *node);
18
19struct ACPIDevPath
20{
21uint8_ttype;// = 2 ACPI device-path
22uint8_tsubtype;// = 1 ACPI Device-path
23uint16_tlength;// = 0x0c
24uint32_t_HID;// = 0xD041030A ?
25uint32_t_UID;// = 0x00000000 PCI ROOT
26uint32_t_CID;// = Optional variable length
27
28};
29
30struct PCIDevPath
31{
32uint8_ttype;// = 1 Hardware device-path
33uint8_tsubtype;// = 1 PCI
34uint16_tlength;// = 6
35uint8_tfunction;// pci func number
36uint8_tdevice;// pci dev number
37};
38
39struct DevicePathEnd
40{
41uint8_ttype;// = 0x7f
42uint8_tsubtype;// = 0xff
43uint16_tlength;// = 4;
44};
45
46struct DevPropDevice
47{
48uint32_t length;
49uint16_t numentries;
50uint16_t WHAT2;// 0x0000 ?
51struct ACPIDevPath acpi_dev_path;// = 0x02010c00 0xd041030a
52struct PCIDevPath pci_dev_path[MAX_PCI_DEV_PATHS];// = 0x01010600 func dev
53struct DevicePathEnd path_end;// = 0x7fff0400
54uint8_t *data;
55
56// ------------------------
57uint8_t num_pci_devpaths;
58struct DevPropString *string;
59// ------------------------
60};
61
62typedef struct DevPropDevice DevPropDevice;
63
64struct DevPropString
65{
66uint32_t length;
67uint32_t WHAT2;// 0x01000000 ?
68uint16_t numentries;
69uint16_t WHAT3;// 0x0000 ?
70struct DevPropDevice **entries;
71};
72
73typedef struct DevPropString DevPropString;
74
75extern DevPropString *string;
76extern uint8_t *stringdata;
77extern uint32_t stringlength;
78
79DevPropString*devprop_create_string(void);
80DevPropDevice*devprop_add_device(DevPropString *string, char *path);
81char*efi_inject_get_devprop_string(uint32_t *len);
82intdevprop_add_value(DevPropDevice *device, char *nm, uint8_t *vl, uint32_t len);
83char*devprop_generate_string(DevPropString *string);
84voiddevprop_free_string(DevPropString *string);
85intdevprop_add_network_template(DevPropDevice *device, uint16_t vendor_id);
86
87/* Converters */
88inthex2dec(unsigned const char *hex); //longhex2dec(unsigned const char *hex);
89char*bin2hex(const uint8_t* bin, char* hex, int len);
90//charint2hex(int val);
91inthex2bin(const char *hex, uint8_t *bin, int len);
92
93#endif /* !__LIBSAIO_DEVICE_INJECT_H */
94

Archive Download this file

Revision: 2238