summaryrefslogtreecommitdiffstats
path: root/bsps/include/libchip/ide_ctrl_cfg.h
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-12-23 18:18:56 +1100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-25 08:45:26 +0100
commit2afb22b7e1ebcbe40373ff7e0efae7d207c655a9 (patch)
tree44759efe9374f13200a97e96d91bd9a2b7e5ce2a /bsps/include/libchip/ide_ctrl_cfg.h
parentMAINTAINERS: Add myself to Write After Approval. (diff)
downloadrtems-2afb22b7e1ebcbe40373ff7e0efae7d207c655a9.tar.bz2
Remove make preinstall
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
Diffstat (limited to 'bsps/include/libchip/ide_ctrl_cfg.h')
-rw-r--r--bsps/include/libchip/ide_ctrl_cfg.h123
1 files changed, 123 insertions, 0 deletions
diff --git a/bsps/include/libchip/ide_ctrl_cfg.h b/bsps/include/libchip/ide_ctrl_cfg.h
new file mode 100644
index 0000000000..3339a28d2b
--- /dev/null
+++ b/bsps/include/libchip/ide_ctrl_cfg.h
@@ -0,0 +1,123 @@
+/*
+ * ide_ctrl_cfg.h
+ *
+ * LibChip library IDE controller header file - structures used for
+ * configuration and plugin interface definition.
+ *
+ * Copyright (C) 2002 OKTET Ltd., St.-Petersburg, Russia
+ * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+#ifndef __IDE_CTRL_CFG_H__
+#define __IDE_CTRL_CFG_H__
+
+#include <rtems/blkdev.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Avaible drivers for IDE controllers
+ */
+typedef enum {
+ IDE_STD,
+ IDE_CUSTOM /* BSP specific driver */
+} ide_ctrl_devs_t;
+
+/* ATA modes: bit masks used in ctrl_config_io_speed call */
+#define ATA_MODES_PIO3 0x001
+#define ATA_MODES_PIO4 0x002
+
+#define ATA_MODES_PIO 0x003
+
+#define ATA_MODES_DMA0 0x004
+#define ATA_MODES_DMA1 0x008
+#define ATA_MODES_DMA2 0x010
+
+#define ATA_MODES_UDMA0 0x020
+#define ATA_MODES_UDMA1 0x040
+#define ATA_MODES_UDMA2 0x080
+#define ATA_MODES_UDMA3 0x100
+#define ATA_MODES_UDMA4 0x200
+#define ATA_MODES_UDMA5 0x400
+
+#define ATA_MODES_UDMA 0x7e0
+#define ATA_MODES_DMA 0x7fc
+
+
+/*
+ * Each driver for a particular controller have to provide following
+ * functions in such a structure. The only field which should not be NULL
+ * is contInit.
+ */
+typedef struct ide_ctrl_fns_s {
+ bool (*ctrl_probe)(int minor); /* probe routine */
+ void (*ctrl_initialize)(int minor);
+ int (*ctrl_control)(int minor, uint32_t command,
+ void *arg);
+ /*
+ * Functions which allow read/write registers of a particular controller.
+ * (these functions may be used from ide_controller_read_register,
+ * ide_controller_write_register)
+ */
+ void (*ctrl_reg_read)(int minor, int regist, uint16_t *value);
+ void (*ctrl_reg_write)(int minor, int regist, uint16_t value);
+
+ /*
+ * The function allows to escape overhead for read/write register
+ * functions calls
+ */
+ void (*ctrl_read_block)(int minor, uint32_t block_size,
+ rtems_blkdev_sg_buffer *bufs, uint32_t *cbuf,
+ uint32_t *pos);
+ void (*ctrl_write_block)(int minor, uint32_t block_size,
+ rtems_blkdev_sg_buffer *bufs, uint32_t *cbuf,
+ uint32_t *pos);
+
+ rtems_status_code (*ctrl_config_io_speed)(int minor,
+ uint16_t modes_available);
+} ide_ctrl_fns_t;
+
+/*
+ * IDE Controller configuration. Table of such configurations is provided
+ * by BSP
+ */
+typedef struct ide_controller_bsp_table_s {
+ char *name; /* device name */
+ ide_ctrl_devs_t type; /* chip type */
+ ide_ctrl_fns_t *fns; /* pointer to the set of driver routines */
+ bool (*probe)(int minor); /* general probe routine */
+ uint8_t status; /* initialized/non initialized. Should be set
+ * to zero by static initialization
+ */
+ uint32_t port1; /* port number for the port of the device */
+ bool int_driven; /* interrupt/poll driven */
+ rtems_vector_number int_vec; /* the interrupt vector of the device */
+ void *params; /* contains either device specific data or a
+ * pointer to s device specific information
+ * table
+ */
+} ide_controller_bsp_table_t;
+
+/* IDE controllers Table */
+extern ide_controller_bsp_table_t IDE_Controller_Table[];
+
+/* Number of rows in IDE_Controller_Table */
+extern unsigned long IDE_Controller_Count;
+
+
+#define IDE_CTRL_MAX_MINOR_NUMBER 4
+
+#define IDE_CTRL_NON_INITIALIZED 0
+#define IDE_CTRL_INITIALIZED 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __IDE_CTRL_CFG_H__ */