Ignore:
Timestamp:
Jul 21, 2009, 8:38:04 AM (10 years ago)
Author:
Thomas Doerfler <Thomas.Doerfler@…>
Branches:
4.10, 4.11, master
Children:
68799a2a
Parents:
115971c
Message:

Update for MPC55XX changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/powerpc/mpc55xxevb/tests/tests.c

    r115971c rd374492  
    3737#include <libcpu/powerpc-utility.h>
    3838
    39 /* #define DEBUG */
    40 
    4139#include <rtems/status-checks.h>
    4240
     
    217215
    218216        printk( "Boot time: %u\n", ppc_time_base());
     217
     218        /*
    219219        test_mpc55xx_intc( 0);
     220        */
    220221
    221222        rv = rtems_libi2c_initialize();
     
    269270                rtems_build_name ( 'P', 'I', 'N', 'G'),
    270271                1,
    271                 RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
     272                RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
    272273                RTEMS_NO_PRIORITY,
    273274                &test_mpc55xx_dspi_ping
     
    278279                rtems_build_name ( 'P', 'O', 'N', 'G'),
    279280                0,
    280                 RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
     281                RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
    281282                RTEMS_NO_PRIORITY,
    282283                &test_mpc55xx_dspi_pong
     
    326327        RTEMS_CHECK_SC( sc, "rtems_task_start");
    327328
     329        return RTEMS_SUCCESSFUL;
     330
    328331        rtems_id intc_id;
    329332        sc = rtems_task_create(
     
    339342        RTEMS_CHECK_SC( sc, "rtems_task_start");
    340343
    341         sc = rtems_task_delete( RTEMS_SELF);
    342         RTEMS_CHECK_SC( sc, "rtems_task_delete");
    343 
    344344        return RTEMS_SUCCESSFUL;
    345345}
     346
     347#if 0
    346348
    347349#include <sys/types.h>
     
    422424}
    423425
    424 #define SD_CARD_NUMBER 1
    425 
    426 static sd_card_driver_entry sd_card_driver_table_XXX [SD_CARD_NUMBER] = { {
    427 #if 0
    428                 driver : {
    429                         ops : &sd_card_driver_ops,
    430                         size : sizeof( sd_card_driver_entry)
    431                 },
    432                 table_index : 0,
    433                 minor : 0,
    434 #endif
    435                 device_name : "sd-card-a",
    436 #if 0
    437                 disk_device_name : "/dev/sd-card-a",
    438 #endif
    439                 transfer_mode : SD_CARD_TRANSFER_MODE_DEFAULT,
    440                 command : SD_CARD_COMMAND_DEFAULT,
    441                 /* response : whatever, */
    442                 response_index : SD_CARD_COMMAND_SIZE,
    443                 n_ac_max : SD_CARD_N_AC_MAX_DEFAULT,
    444                 block_number : 0,
    445                 block_size : 0,
    446                 block_size_shift : 0,
    447                 busy : 1,
    448                 verbose : 1,
    449                 schedule_if_busy : 0,
    450         }
    451 };
    452 
    453426rtems_task test_sd_card( rtems_task_argument arg)
    454427{
     
    485458        RTEMS_CHECK_SC_TASK( sc, "Initialize IDE partition table");
    486459
     460        rv = mkdir( TEST_SD_CARD_MOUNT_POINT, S_IRWXU);
     461        RTEMS_CHECK_RV_TASK( rv, "Create mount point");
     462
     463        rv = rtems_fsmount( test_sd_card_fs_table, sizeof( test_sd_card_fs_table) / sizeof( test_sd_card_fs_table [0]), NULL);
     464        RTEMS_CHECK_RV_TASK( rv, "Mount file systems");
     465
    487466        rv = test_sd_card_print_dir( "/dev", 0);
    488467        RTEMS_CHECK_RV_TASK( rv, "Print directory");
    489468
    490         rv = mkdir( TEST_SD_CARD_MOUNT_POINT, S_IRWXU);
    491         RTEMS_CHECK_RV_TASK( rv, "Create mount point");
    492 
    493         rv = rtems_fsmount( test_sd_card_fs_table, sizeof( test_sd_card_fs_table) / sizeof( test_sd_card_fs_table [0]), NULL);
    494         RTEMS_CHECK_RV_TASK( rv, "Mount file systems");
    495 
    496         /*rv = test_sd_card_print_dir( TEST_SD_CARD_MOUNT_POINT, 0); */
    497         /*RTEMS_CHECK_RV_TASK( rv, "Print directory"); */
     469        rv = test_sd_card_print_dir( TEST_SD_CARD_MOUNT_POINT, 0);
     470        RTEMS_CHECK_RV_TASK( rv, "Print directory");
     471
     472        (void) rtems_task_delete( RTEMS_SELF);
    498473
    499474        rv = mkdir( TEST_SD_CARD_DIRECTORY, S_IRWXU);
     
    524499        RTEMS_CHECK_RV_TASK( rv, "Print directory");
    525500
     501        (void) rtems_task_delete( RTEMS_SELF);
     502
    526503
    527504        #if 0
     
    562539        #endif
    563540
    564         sc = rtems_task_delete( RTEMS_SELF);
    565         RTEMS_CHECK_SC_TASK( sc, "rtems_task_delete");
    566 }
     541        (void) rtems_task_delete( RTEMS_SELF);
     542}
     543
     544#endif
    567545
    568546#define ITER 4
     
    572550static char outbuf [BUFSIZE];
    573551
     552static void test_mpc55xx_edma_done( mpc55xx_edma_channel_entry *e, uint32_t error_status)
     553{
     554        rtems_semaphore_release( e->id);
     555
     556        if (error_status != 0) {
     557                printk( "%s: Error status: 0x%08x\n", __func__, error_status);
     558        }
     559}
     560
    574561static rtems_status_code test_mpc55xx_edma(void)
    575562{
    576563        rtems_status_code sc = RTEMS_SUCCESSFUL;
    577         int rv = 0;
    578         int channel = 0;
    579         uint32_t error_status = 0;
    580         rtems_id transfer_update;
     564        mpc55xx_edma_channel_entry e = {
     565                .channel = 0,
     566                .done = test_mpc55xx_edma_done,
     567                .id = RTEMS_ID_NONE
     568        };
    581569
    582570        sc = rtems_semaphore_create (
    583571                rtems_build_name ( 'T', 'S', 'T', 'C'),
    584572                0,
    585                 RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
     573                RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
    586574                RTEMS_NO_PRIORITY,
    587                 &transfer_update
     575                &e.id
    588576        );
    589577        RTEMS_CHECK_SC( sc, "rtems_semaphore_create");
    590578
    591         rv = mpc55xx_edma_obtain_channel( channel, &error_status, transfer_update);
    592         RTEMS_CHECK_RV( rv, "mpc55xx_edma_obtain_channel");
     579        sc = mpc55xx_edma_obtain_channel( &e);
     580        RTEMS_CHECK_RV( sc, "mpc55xx_edma_obtain_channel");
    593581
    594582        int i = 0;
     
    600588        rtems_cache_flush_multiple_data_lines( outbuf, BUFSIZE);
    601589
    602         struct tcd_t tcd = MPC55XX_EDMA_TCD_DEFAULT;
     590        struct tcd_t tcd = EDMA_TCD_DEFAULT;
    603591        tcd.SADDR = (uint32_t) &inbuf;
    604592        tcd.DADDR = (uint32_t) &outbuf;
    605593        tcd.NBYTES = BUFSIZE / ITER;
    606594        tcd.SLAST = -BUFSIZE;
    607         tcd.CITER = ITER;
    608         tcd.BITER = ITER;
    609         tcd.INT_HALF = 1;
    610 
    611         EDMA.TCD [channel] = tcd;
     595        tcd.CDF.B.CITER = ITER;
     596        tcd.BMF.B.BITER = ITER;
     597        tcd.BMF.B.INT_HALF = 1;
     598
     599        EDMA.TCD [e.channel] = tcd;
    612600
    613601        while (1) {
    614602                while (1) {
    615                         if (EDMA.TCD [channel].DONE == 1) {
    616                                 EDMA.TCD [channel].DONE = 0;
     603                        if (EDMA.TCD [e.channel].BMF.B.DONE == 1) {
     604                                EDMA.TCD [e.channel].BMF.B.DONE = 0;
    617605                                printk( "%s: Done\n", __func__);
    618606                                break;
    619                         } else if (EDMA.TCD [channel].ACTIVE == 0) {
    620                                 EDMA.SSBR.R = channel;
    621                                 printk( "%s: Start: %i (%i)\n", __func__, EDMA.TCD [channel].CITER, EDMA.TCD [channel].BITER);
     607                        } else if (EDMA.TCD [e.channel].BMF.B.ACTIVE == 0) {
     608                                EDMA.SSBR.R = e.channel;
     609                                printk( "%s: Start: %i (%i)\n", __func__, EDMA.TCD [e.channel].CDF.B.CITER, EDMA.TCD [e.channel].BMF.B.BITER);
    622610                        }
    623                         sc = rtems_semaphore_obtain( transfer_update, RTEMS_WAIT, 10);
     611                        sc = rtems_semaphore_obtain( e.id, RTEMS_WAIT, 10);
    624612                        if (sc == RTEMS_TIMEOUT) {
    625613                                continue;
     
    627615                        RTEMS_CHECK_SC( sc, "rtems_semaphore_obtain");
    628616                }
    629                 printk( "%s: Error status: 0x%08x\n", __func__, error_status);
    630         }
    631 
    632         return sc;
    633 }
     617        }
     618
     619        return RTEMS_SUCCESSFUL;
     620}
     621
     622#include <stdlib.h>
    634623
    635624static unsigned test_mpc55xx_intc_counter = 0;
     
    668657static rtems_task test_mpc55xx_intc( rtems_task_argument arg)
    669658{
     659        rtems_status_code sc = RTEMS_SUCCESSFUL;
     660        rtems_irq_connect_data e = {
     661                .on = NULL,
     662                .off = NULL,
     663                .isOn = NULL
     664        };
    670665        volatile int i = 0;
    671666        int p = 0;
    672667        unsigned s = 0;
    673         rtems_irq_connect_data e;
    674         rtems_status_code sc = RTEMS_SUCCESSFUL;
    675668
    676669        for (i = MPC55XX_IRQ_SOFTWARE_MIN, p = MPC55XX_INTC_MIN_PRIORITY; i <= MPC55XX_IRQ_SOFTWARE_MAX; ++i, ++p) {
     
    685678
    686679                e.hdl = test_mpc55xx_intc_handler_2;
    687                 if (BSP_install_rtems_shared_irq_handler( &e) != RTEMS_SUCCESSFUL) {
     680                if (BSP_install_rtems_shared_irq_handler( &e) != 1) {
    688681                        BSP_panic( "Handler install 2 failed");
    689682                }
    690683
    691684                e.hdl = test_mpc55xx_intc_handler_3;
    692                 if (BSP_install_rtems_shared_irq_handler( &e) != RTEMS_SUCCESSFUL) {
     685                if (BSP_install_rtems_shared_irq_handler( &e) != 1) {
    693686                        BSP_panic( "Handler install 3 failed");
    694687                }
Note: See TracChangeset for help on using the changeset viewer.