1/*
2 * dbdcddef.h
3 *
4 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
5 *
6 * DCD (DSP/BIOS Bridge Configuration Database) constants and types.
7 *
8 * Copyright (C) 2008 Texas Instruments, Inc.
9 *
10 * This package is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 *
14 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
16 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17 */
18
19#ifndef DBDCDDEF_
20#define DBDCDDEF_
21
22#include <dspbridge/dbdefs.h>
23#include <dspbridge/mgrpriv.h>	/* for mgr_processorextinfo */
24
25/*
26 *  The following defines are critical elements for the DCD module:
27 *
28 * - DCD_REGKEY enables DCD functions to locate registered DCD objects.
29 * - DCD_REGISTER_SECTION identifies the COFF section where the UUID of
30 *   registered DCD objects are stored.
31 */
32#define DCD_REGKEY              "Software\\TexasInstruments\\DspBridge\\DCD"
33#define DCD_REGISTER_SECTION    ".dcd_register"
34
35#define DCD_MAXPATHLENGTH    255
36
37/* DCD Manager Object */
38struct dcd_manager;
39
40struct dcd_key_elem {
41	struct list_head link;	/* Make it linked to a list */
42	char name[DCD_MAXPATHLENGTH];	/*  Name of a given value entry */
43	char *path;		/*  Pointer to the actual data */
44};
45
46/* DCD Node Properties */
47struct dcd_nodeprops {
48	struct dsp_ndbprops ndb_props;
49	u32 msg_segid;
50	u32 msg_notify_type;
51	char *str_create_phase_fxn;
52	char *str_delete_phase_fxn;
53	char *str_execute_phase_fxn;
54	char *str_i_alg_name;
55
56	/* Dynamic load properties */
57	u16 load_type;	/* Static, dynamic, overlay */
58	u32 data_mem_seg_mask;		/* Data memory requirements */
59	u32 code_mem_seg_mask;		/* Code memory requirements */
60};
61
62/* DCD Generic Object Type */
63struct dcd_genericobj {
64	union dcd_obj {
65		struct dcd_nodeprops node_obj;	/* node object. */
66		/* processor object. */
67		struct dsp_processorinfo proc_info;
68		/* extended proc object (private) */
69		struct mgr_processorextinfo ext_proc_obj;
70	} obj_data;
71};
72
73/* DCD Internal Callback Type */
74typedef int(*dcd_registerfxn) (struct dsp_uuid *uuid_obj,
75				      enum dsp_dcdobjtype obj_type,
76				      void *handle);
77
78#endif /* DBDCDDEF_ */
79