Changeset f7cecc33 in rtems


Ignore:
Timestamp:
Aug 3, 2018, 8:53:40 PM (15 months ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
master
Children:
1836c6a
Parents:
698093d
git-author:
Sebastian Huber <sebastian.huber@…> (08/03/18 20:53:40)
git-committer:
Sebastian Huber <sebastian.huber@…> (08/07/18 05:17:18)
Message:

libchip/ata: Use rtems_blkdev_create()

Update #3358.

Location:
bsps
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bsps/include/libchip/ata_internal.h

    r698093d rf7cecc33  
    166166#define ATA_REGISTERS_POSITION       0xfc
    167167
    168 #define ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE     64
    169 
    170168#define ATA_MAX_RTEMS_INT_VEC_NUMBER              255
    171169
  • bsps/shared/dev/ide/ata.c

    r698093d rf7cecc33  
    1919#include <string.h> /* for "memset" declaration */
    2020
    21 #include <rtems/diskdevs.h>
    2221#include <rtems/blkdev.h>
    2322#include <libchip/ide_ctrl_io.h>
     
    120119 */
    121120static rtems_status_code
    122 ata_io_data_request(dev_t device, rtems_blkdev_request *req)
     121ata_io_data_request(ata_ide_dev_t *ata_dev, rtems_blkdev_request *req)
    123122{
    124123    ata_req_t                 *areq; /* ATA request */
    125     rtems_device_minor_number  rel_minor; /* relative minor which indexes
    126                                            * ata_devs array
    127                                            */
    128124    rtems_device_minor_number  ctrl_minor;
    129125    uint8_t                    dev;
    130126
    131     rel_minor = (rtems_filesystem_dev_minor_t(device)) /
    132                 ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
    133 
    134127    /* get controller which serves the ATA device */
    135     ctrl_minor = ata_devs[rel_minor].ctrl_minor;
     128    ctrl_minor = ata_dev->ctrl_minor;
    136129
    137130    /* get ATA device identifier (0 or 1) */
    138     dev = ata_devs[rel_minor].device;
     131    dev = ata_dev->device;
    139132
    140133    areq = malloc(sizeof(ata_req_t));
     
    252245 */
    253246static rtems_status_code
    254 ata_non_data_request(dev_t device, uint32_t cmd, void *argp)
     247ata_non_data_request(ata_ide_dev_t *ata_dev, uint32_t cmd, void *argp)
    255248{
    256249    rtems_status_code          rc;
    257250    ata_req_t                 *areq;       /* ATA request */
    258     rtems_device_minor_number  rel_minor; /* relative minor which indexes
    259                                            * ata_devs array
    260                                            */
    261251    rtems_device_minor_number  ctrl_minor;
    262252    uint8_t                    dev;
    263253    ata_queue_msg_t            msg;
    264254
    265     rel_minor = (rtems_filesystem_dev_minor_t(device)) /
    266                 ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
    267 
    268255    /* get controller which serves the ATA device */
    269     ctrl_minor = ata_devs[rel_minor].ctrl_minor;
     256    ctrl_minor = ata_dev->ctrl_minor;
    270257
    271258    /* get ATA device identifier (0 or 1) */
    272     dev = ata_devs[rel_minor].device;
     259    dev = ata_dev->device;
    273260
    274261    /* form the request */
     
    944931ata_ioctl(rtems_disk_device *dd, uint32_t cmd, void *argp)
    945932{
    946     dev_t                     device = rtems_disk_get_device_identifier(dd);
    947     rtems_status_code         status;
    948     rtems_device_minor_number rel_minor;
    949 
    950     rel_minor = (rtems_filesystem_dev_minor_t(device)) /
    951                 ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
     933    ata_ide_dev_t     *ata_dev = rtems_disk_get_driver_data(dd);
     934    rtems_status_code  status;
    952935
    953936    /*
     
    955938     * device
    956939     */
    957     if (ata_devs[rel_minor].device == ATA_UNDEFINED_VALUE)
     940    if (ata_dev->device == ATA_UNDEFINED_VALUE)
    958941    {
    959942        errno = ENODEV;
     
    964947    {
    965948        case RTEMS_BLKIO_REQUEST:
    966             status = ata_io_data_request(device, (rtems_blkdev_request *)argp);
     949            status = ata_io_data_request(ata_dev, (rtems_blkdev_request *)argp);
    967950            break;
    968951
    969952        case ATAIO_SET_MULTIPLE_MODE:
    970             status = ata_non_data_request(device, cmd, argp);
     953            status = ata_non_data_request(ata_dev, cmd, argp);
    971954            break;
    972955
     
    11031086    int                i, dev = 0;
    11041087    char               name[ATA_MAX_NAME_LENGTH];
    1105     dev_t              device;
    11061088    ata_int_st_t      *int_st;
    11071089
     
    11141096    if (ata_initialized)
    11151097        return RTEMS_SUCCESSFUL;
    1116 
    1117     /* initialization of disk devices library */
    1118     status = rtems_disk_io_initialize();
    1119     if (status != RTEMS_SUCCESSFUL)
    1120         return status;
    11211098
    11221099    status = rtems_semaphore_create (rtems_build_name ('A', 'T', 'A', 'L'),
     
    11351112    if (status != RTEMS_SUCCESSFUL)
    11361113    {
    1137         rtems_disk_io_done();
    11381114        return status;
    11391115    }
     
    11561132    {
    11571133        rtems_message_queue_delete(ata_queue_id);
    1158         rtems_disk_io_done();
    11591134        return status;
    11601135    }
     
    11691144        rtems_task_delete(ata_task_id);
    11701145        rtems_message_queue_delete(ata_queue_id);
    1171         rtems_disk_io_done();
    11721146        return status;
    11731147    }
     
    11781152        rtems_task_delete(ata_task_id);
    11791153        rtems_message_queue_delete(ata_queue_id);
    1180         rtems_disk_io_done();
    11811154        return RTEMS_NO_MEMORY;
    11821155    }
     
    12221195                rtems_task_delete(ata_task_id);
    12231196                rtems_message_queue_delete(ata_queue_id);
    1224                 rtems_disk_io_done();
    12251197                return RTEMS_NO_MEMORY;
    12261198            }
     
    12761248                rtems_task_delete(ata_task_id);
    12771249                rtems_message_queue_delete(ata_queue_id);
    1278                 rtems_disk_io_done();
    12791250                return status;
    12801251            }
     
    13291300            name[7] = 'a' + 2 * ctrl_minor + dev;
    13301301
    1331             device = rtems_filesystem_make_dev_t(
    1332                          major,
    1333                          (ata_devs_number *
    1334                           ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE));
    1335             status = rtems_disk_create_phys(device, ATA_SECTOR_SIZE,
     1302            status = rtems_blkdev_create(name, ATA_SECTOR_SIZE,
    13361303                ATA_DEV_INFO(ctrl_minor, dev).lba_avaible ?
    13371304                ATA_DEV_INFO(ctrl_minor, dev).lba_sectors :
     
    13391306                 ATA_DEV_INFO(ctrl_minor, dev).cylinders *
    13401307                 ATA_DEV_INFO(ctrl_minor, dev).sectors),
    1341                 ata_ioctl, NULL, name);
     1308                ata_ioctl, &ata_devs[ata_devs_number]);
    13421309            if (status != RTEMS_SUCCESSFUL)
    13431310            {
Note: See TracChangeset for help on using the changeset viewer.