summaryrefslogtreecommitdiffstats
path: root/bsp_howto/ide_controller.rst
diff options
context:
space:
mode:
Diffstat (limited to 'bsp_howto/ide_controller.rst')
-rw-r--r--bsp_howto/ide_controller.rst160
1 files changed, 87 insertions, 73 deletions
diff --git a/bsp_howto/ide_controller.rst b/bsp_howto/ide_controller.rst
index 0b13490..82961da 100644
--- a/bsp_howto/ide_controller.rst
+++ b/bsp_howto/ide_controller.rst
@@ -1,14 +1,17 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
+.. COMMENT: COPYRIGHT (c) 1988-2002.
+.. COMMENT: On-Line Applications Research Corporation (OAR).
+.. COMMENT: All rights reserved.
+
IDE Controller Driver
#####################
Introduction
============
-The IDE Controller driver is responsible for providing an
-interface to an IDE Controller. The capabilities provided by this
-driver are:
+The IDE Controller driver is responsible for providing an interface to an IDE
+Controller. The capabilities provided by this driver are:
- Read IDE Controller register
@@ -18,42 +21,44 @@ driver are:
- Write data block through IDE Controller Data Register
-The reference implementation for an IDE Controller driver can
-be found in ``$RTEMS_SRC_ROOT/c/src/libchip/ide``. This driver
-is based on the libchip concept and allows to work with any of the IDE
-Controller chips simply by appropriate configuration of BSP. Drivers for a
-particular IDE Controller chips locate in the following directories: drivers
-for well-known IDE Controller chips locate into``$RTEMS_SRC_ROOT/c/src/libchip/ide``, drivers for IDE Controller chips
-integrated with CPU locate into``$RTEMS_SRC_ROOT/c/src/lib/libcpu/myCPU`` and
-drivers for custom IDE Controller chips (for example, implemented on FPGA)
-locate into ``$RTEMS_SRC_ROOT/c/src/lib/libbsp/myBSP``.
-There is a README file in these directories for each supported
-IDE Controller chip. Each of these README explains how to configure a BSP
-for that particular IDE Controller chip.
+The reference implementation for an IDE Controller driver can be found in
+``$RTEMS_SRC_ROOT/c/src/libchip/ide``. This driver is based on the libchip
+concept and allows to work with any of the IDE Controller chips simply by
+appropriate configuration of BSP. Drivers for a particular IDE Controller chips
+locate in the following directories: drivers for well-known IDE Controller
+chips locate into ``$RTEMS_SRC_ROOT/c/src/libchip/ide``, drivers for IDE
+Controller chips integrated with CPU locate into
+``$RTEMS_SRC_ROOT/c/src/lib/libcpu/myCPU`` and drivers for custom IDE
+Controller chips (for example, implemented on FPGA) locate into
+``$RTEMS_SRC_ROOT/c/src/lib/libbsp/myBSP``. There is a README file in these
+directories for each supported IDE Controller chip. Each of these README
+explains how to configure a BSP for that particular IDE Controller chip.
Initialization
==============
-IDE Controller chips used by a BSP are statically configured into``IDE_Controller_Table``. The ``ide_controller_initialize`` routine is
+IDE Controller chips used by a BSP are statically configured into
+``IDE_Controller_Table``. The ``ide_controller_initialize`` routine is
responsible for initialization of all configured IDE controller chips.
Initialization order of the chips based on the order the chips are defined in
the ``IDE_Controller_Table``.
-The following actions are performed by the IDE Controller driver
-initialization routine:
-.. code:: c
+The following actions are performed by the IDE Controller driver initialization
+routine:
+
+.. code-block:: c
rtems_device_driver ide_controller_initialize(
- rtems_device_major_number major,
- rtems_device_minor_number minor_arg,
- void \*arg
+ rtems_device_major_number major,
+ rtems_device_minor_number minor_arg,
+ void *arg
)
{
- for each IDE Controller chip configured in IDE_Controller_Table
- if (BSP dependent probe(if exists) AND device probe for this IDE chip
- indicates it is present)
- perform initialization of the particular chip
- register device with configured name for this chip
+ for each IDE Controller chip configured in IDE_Controller_Table
+ if (BSP dependent probe(if exists) AND device probe for this IDE chip
+ indicates it is present)
+ perform initialization of the particular chip
+ register device with configured name for this chip
}
Read IDE Controller Register
@@ -62,14 +67,19 @@ Read IDE Controller Register
The ``ide_controller_read_register`` routine reads the content of the IDE
Controller chip register. IDE Controller chip is selected via the minor
number. This routine is not allowed to be called from an application.
-.. code:: c
- void ide_controller_read_register(rtems_device_minor_number minor,
- unsigned32 reg, unsigned32 \*value)
+.. code-block:: c
+
+ void ide_controller_read_register(
+ rtems_device_minor_number minor,
+ unsigned32 reg,
+ unsigned32 *value
+ )
{
- get IDE Controller chip configuration information from
- IDE_Controller_Table by minor number
- invoke read register routine for the chip
+ get IDE Controller chip configuration information from
+ IDE_Controller_Table by minor number
+
+ invoke read register routine for the chip
}
Write IDE Controller Register
@@ -78,65 +88,69 @@ Write IDE Controller Register
The ``ide_controller_write_register`` routine writes IDE Controller chip
register with specified value. IDE Controller chip is selected via the minor
number. This routine is not allowed to be called from an application.
-.. code:: c
- void ide_controller_write_register(rtems_device_minor_number minor,
- unsigned32 reg, unsigned32 value)
+.. code-block:: c
+
+ void ide_controller_write_register(
+ rtems_device_minor_number minor,
+ unsigned32 reg,
+ unsigned32 value
+ )
{
- get IDE Controller chip configuration information from
- IDE_Controller_Table by minor number
- invoke write register routine for the chip
+ get IDE Controller chip configuration information from
+ IDE_Controller_Table by minor number
+
+ invoke write register routine for the chip
}
Read Data Block Through IDE Controller Data Register
====================================================
-The ``ide_controller_read_data_block`` provides multiple consequent read
-of the IDE Controller Data Register. IDE Controller chip is selected via the
-minor number. The same functionality may be achieved via separate multiple
-calls of ``ide_controller_read_register`` routine but``ide_controller_read_data_block`` allows to escape functions call
-overhead. This routine is not allowed to be called from an application.
-.. code:: c
+The ``ide_controller_read_data_block`` provides multiple consequent read of the
+IDE Controller Data Register. IDE Controller chip is selected via the minor
+number. The same functionality may be achieved via separate multiple calls of
+``ide_controller_read_register`` routine but ``ide_controller_read_data_block``
+allows to escape functions call overhead. This routine is not allowed to be
+called from an application.
+
+.. code-block:: c
void ide_controller_read_data_block(
- rtems_device_minor_number minor,
- unsigned16 block_size,
- blkdev_sg_buffer \*bufs,
- uint32_t \*cbuf,
- uint32_t \*pos
+ rtems_device_minor_number minor,
+ unsigned16 block_size,
+ blkdev_sg_buffer *bufs,
+ uint32_t *cbuf,
+ uint32_t *pos
)
{
- get IDE Controller chip configuration information from
- IDE_Controller_Table by minor number
- invoke read data block routine for the chip
+ get IDE Controller chip configuration information from
+ IDE_Controller_Table by minor number
+
+ invoke read data block routine for the chip
}
Write Data Block Through IDE Controller Data Register
=====================================================
-The ``ide_controller_write_data_block`` provides multiple consequent write
-into the IDE Controller Data Register. IDE Controller chip is selected via the
-minor number. The same functionality may be achieved via separate multiple
-calls of ``ide_controller_write_register`` routine but``ide_controller_write_data_block`` allows to escape functions call
+The ``ide_controller_write_data_block`` provides multiple consequent write into
+the IDE Controller Data Register. IDE Controller chip is selected via the minor
+number. The same functionality may be achieved via separate multiple calls of
+``ide_controller_write_register`` routine but
+``ide_controller_write_data_block`` allows to escape functions call
overhead. This routine is not allowed to be called from an application.
-.. code:: c
+
+.. code-block:: c
void ide_controller_write_data_block(
- rtems_device_minor_number minor,
- unsigned16 block_size,
- blkdev_sg_buffer \*bufs,
- uint32_t \*cbuf,
- uint32_t \*pos
+ rtems_device_minor_number minor,
+ unsigned16 block_size,
+ blkdev_sg_buffer *bufs,
+ uint32_t *cbuf,
+ uint32_t *pos
)
{
- get IDE Controller chip configuration information from
- IDE_Controller_Table by minor number
- invoke write data block routine for the chip
- }
-
-.. COMMENT: COPYRIGHT (c) 1988-2002.
-
-.. COMMENT: On-Line Applications Research Corporation (OAR).
-
-.. COMMENT: All rights reserved.
+ get IDE Controller chip configuration information from
+ IDE_Controller_Table by minor number
+ invoke write data block routine for the chip
+ }