Ignore:
Timestamp:
Mar 27, 2015, 11:51:33 AM (10 years ago)
Author:
alain
Message:

1) Removing the IOC driver (integrated in the FAT library).
2) Simplifying the BDV, HBA, SDC, RDK drivers: they support
only two modes (synchronous => polling / descheduling => IRQ),
and only one access function (for both read/write).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_drivers/rdk_driver.c

    r456 r529  
    1 ///////////////////////////////////////////////////////////////////////////////////
     1///////////////////////////////////////////////////////////////////////////////
    22// File      : rdk_driver.c
    33// Date      : 13/02/2014
     
    55// Maintainer: cesar fuguet
    66// Copyright (c) UPMC-LIP6
    7 ///////////////////////////////////////////////////////////////////////////////////
     7///////////////////////////////////////////////////////////////////////////////
    88
    99#include <giet_config.h>
     
    1717#endif
    1818
    19 //////////////////////////////////////////////
    20 unsigned int _rdk_init( unsigned int channel )
    21 {
    22     return 0;
    23 }
    24 
    25 //////////////////////////////////////////
    26 unsigned int _rdk_read( unsigned int lba,
    27                         unsigned int buffer,
    28                         unsigned int count)
     19/////////////////////////////////////////////////////
     20unsigned int _rdk_access( unsigned int       use_irq,    // not used
     21                          unsigned int       to_mem,
     22                          unsigned int       lba,
     23                          unsigned long long buf_vaddr,  // actually vaddr
     24                          unsigned int       count)
    2925{
    3026#if USE_IOC_RDK
    3127
    3228#if GIET_DEBUG_IOC_DRIVER
    33 _puts("\n[IOC DEBUG] Enter _rdk_read() at cycle ");
    34 _putd( _get_proctime() );
    35 _puts("\n - vaddr   = ");
    36 _putx( buffer );
    37 -puts("\n - sectors = ");
    38 _putd( count );
    39 -puts("\n - lba     = ");
    40 _putx( lba );
    41 _puts("\n");
     29unsigned int procid  = _get_procid();
     30unsigned int x       = procid >> (Y_WIDTH + P_WIDTH);
     31unsigned int y       = (procid >> P_WIDTH) & ((1<<Y_WIDTH) - 1);
     32unsigned int p       = procid & ((1<<P_WIDTH)-1);
     33_printf("\n[RDK DEBUG] P[%d,%d,%d] enters _rdk_access at cycle %d\n"
     34        "  use_irq = %d / to_mem = %d / lba = %x / paddr = %x / count = %d\n",
     35        x , y , p , _get_proctime() , use_irq , to_mem , lba , buf_vaddr, count );
    4236#endif
    4337
    44     char* src = (char*)SEG_RDK_BASE + (512*lba);
    45     char* dst = (char*)buffer;
    46     memcpy( dst, src, count*512 );
     38    char* rdk = (char*)SEG_RDK_BASE + (512*lba);
     39    char* buf = (char*)buf_paddr;
     40
     41    if ( to_mem ) memcpy( buf, rdk, count*512 );
     42    else          memcpy( rdk, buf, count*512 );
     43
    4744    return 0;
    4845
    4946#else
    5047
    51     _puts("[GIET ERROR] _rdk_read() should not be used if USE_IOC_RDK not set\n");
     48    _printf("[RDK ERROR] _rdk_access() but USE_IOC_RDK not set\n");
    5249    return 1;
    5350
    5451#endif
    5552}
    56 
    57 //////////////////////////////////////////
    58 unsigned int _rdk_write( unsigned int lba,
    59                          unsigned int buffer,
    60                          unsigned int count )
    61 {
    62 #if USE_IOC_RDK
    63 
    64 #if GIET_DEBUG_IOC_DRIVER
    65 _puts("\n[IOC DEBUG] Enter _rdk_write() at cycle ");
    66 _putd( _get_proctime() );
    67 _puts("\n - vaddr   = ");
    68 _putx( buffer );
    69 -puts("\n - sectors = ");
    70 _putd( count );
    71 -puts("\n - lba     = ");
    72 _putx( lba );
    73 _puts("\n");
    74 #endif
    75 
    76     char* dst = (char*)SEG_RDK_BASE + (512*lba);
    77     char* src = (char*)buffer;
    78     memcpy( dst, src, count*512 );
    79     return 0;
    80 
    81 #else
    82 
    83     _puts("[GIET ERROR] _rdk_write() should not be used if USE_IOC_RDK not set\n");
    84     return 1;
    85 
    86 #endif
    87 }
    88 
    89 //////////////////////////////////
    90 unsigned int _rdk_get_block_size()
    91 {
    92     return 512;
    93 }
    94 
    95 //////////////////////////////
    96 unsigned int _rdk_get_status()
    97 {
    98     return 0;
    99 }
    100 
    10153
    10254// Local Variables:
Note: See TracChangeset for help on using the changeset viewer.