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

Update for MPC55XX changes

Location:
c/src/lib/libbsp/powerpc/mpc55xxevb/startup
Files:
2 edited

Legend:

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

    r115971c rd374492  
    9393static void mpc55xx_ebi_init()
    9494{
    95         struct EBI_CS_tag cs = { BR : MPC55XX_ZERO_FLAGS, OR : MPC55XX_ZERO_FLAGS };
     95        struct EBI_CS_tag cs = { .BR = MPC55XX_ZERO_FLAGS, .OR = MPC55XX_ZERO_FLAGS };
    9696        union SIU_PCR_tag pcr = MPC55XX_ZERO_FLAGS;
     97        struct MMU_tag mmu = MMU_DEFAULT;
    9798        int i = 0;
    9899
    99         /* External SRAM (0 wait states, 512kB, 4 word burst) */
     100        /* ADDR [8 : 31] */
     101        for (i = 4; i < 4 + 24; ++i) {
     102                SIU.PCR [i].R = 0x440;
     103        }
     104
     105        /* DATA [0 : 15] */
     106        for (i = 28; i < 28 + 16; ++i) {
     107                SIU.PCR [i].R = 0x440;
     108        }
     109
     110        /* RD_!WR */
     111        SIU.PCR [62].R = 0x443;
     112
     113        /* !BDIP */
     114        SIU.PCR [63].R = 0x443;
     115
     116        /* !WE [0 : 3] */
     117        for (i = 64; i < 64 + 4; ++i) {
     118                SIU.PCR [i].R = 0x443;
     119        }
     120
     121        /* !OE */
     122        SIU.PCR [68].R = 0x443;
     123
     124        /* !TS */
     125        SIU.PCR [69].R = 0x443;
     126
     127        /* External SRAM (2 wait states, 512kB, 4 word burst) */
     128
    100129        cs.BR.B.BA = 0;
    101130        cs.BR.B.PS = 1;
     
    115144        SIU.PCR [0].R = 0x443;
    116145
    117         /* ADDR [8 : 31] */
    118         for (i = 4; i < 4 + 24; ++i) {
    119                 SIU.PCR [i].R = 0x440;
    120         }
    121 
    122         /* DATA [0 : 15] */
    123         for (i = 28; i < 28 + 16; ++i) {
    124                 SIU.PCR [i].R = 0x440;
    125         }
    126 
    127         /* RD_!WR */
    128         SIU.PCR [62].R = 0x443;
    129 
    130         /* !BDIP */
    131         SIU.PCR [63].R = 0x443;
    132 
    133         /* !WE [0 : 3] */
    134         for (i = 64; i < 64 + 4; ++i) {
    135                 SIU.PCR [i].R = 0x443;
    136         }
    137 
    138         /* !OE */
    139         SIU.PCR [68].R = 0x443;
    140 
    141         /* !TS */
    142         SIU.PCR [69].R = 0x443;
     146        /* External Ethernet Controller (3 wait states, 64kB) */
     147
     148        mmu.MAS0.B.ESEL = 5;
     149        mmu.MAS1.B.VALID = 1;
     150        mmu.MAS1.B.IPROT = 1;
     151        mmu.MAS1.B.TSIZ = 1;
     152        mmu.MAS2.B.EPN = 0x3fff8;
     153        mmu.MAS2.B.I = 1;
     154        mmu.MAS2.B.G = 1;
     155        mmu.MAS3.B.RPN = 0x3fff8;
     156        mmu.MAS3.B.UW = 1;
     157        mmu.MAS3.B.SW = 1;
     158        mmu.MAS3.B.UR = 1;
     159        mmu.MAS3.B.SR = 1;
     160
     161        PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS0, mmu.MAS0.R);
     162        PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS1, mmu.MAS1.R);
     163        PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS2, mmu.MAS2.R);
     164        PPC_SET_SPECIAL_PURPOSE_REGISTER( FREESCALE_EIS_MAS3, mmu.MAS3.R);
     165
     166        asm volatile ("tlbwe");
     167
     168        cs.BR.B.BA = 0x7fff;
     169        cs.BR.B.PS = 1;
     170        cs.BR.B.BL = 0;
     171        cs.BR.B.WEBS = 0;
     172        cs.BR.B.TBDIP = 0;
     173        cs.BR.B.BI = 1;
     174        cs.BR.B.V = 1;
     175
     176        cs.OR.B.AM = 0x1ffff;
     177        cs.OR.B.SCY = 1;
     178        cs.OR.B.BSCY = 0;
     179
     180        EBI.CS [3] = cs;
     181
     182        /* !CS [3] */
     183        SIU.PCR [3].R = 0x443;
    143184}
    144185
     
    199240        }
    200241       
    201         RTEMS_DEBUG_PRINT( "BSP start done\n");
     242        /* Initialize eMIOS */
     243        mpc55xx_emios_initialize( 1);
    202244
    203245        return;
  • c/src/lib/libbsp/powerpc/mpc55xxevb/startup/sd-card-init.c

    r115971c rd374492  
    1919 */
    2020
    21 #include  <stdio.h>
     21#include <stdio.h>
    2222
    2323#include <mpc55xx/mpc55xx.h>
     
    2525#include <mpc55xx/dspi.h>
    2626
    27 #include <libchip/spi-sd-card.h>
    28 
    29 #define DEBUG
     27#include <bsp.h>
    3028
    3129#include <rtems/status-checks.h>
    32 
    33 #include <bsp.h>
    3430
    3531static rtems_status_code mpc55xx_dspi_init(void)
     
    8985}
    9086
    91 #include <sys/types.h>
    92 #include <sys/stat.h>
    93 #include <unistd.h>
    94 #include <fcntl.h>
    95 #include <dirent.h>
    9687#include <stdio.h>
    9788#include <rtems/fsmount.h>
    9889#include <rtems/dosfs.h>
    99 #include <rtems/ide_part_table.h>
     90#include <rtems/bdpart.h>
    10091#include <rtems/console.h>
     92
     93#include <libchip/spi-sd-card.h>
    10194
    10295#define MPC55XX_DEVICE "sd-card-a"
     
    118111};
    119112
    120 #define SD_CARD_NUMBER 1
    121 
    122 sd_card_driver_entry sd_card_driver_table [SD_CARD_NUMBER] = { {
    123 #if 0
    124                 .driver = {
    125                         .ops = &sd_card_driver_ops,
    126                         .size = sizeof( sd_card_driver_entry)
    127                 },
    128                 .table_index = 0,
    129                 .minor = 0,
    130 #endif
    131                 .device_name = "sd-card-a",
    132 #if 0
    133                 .disk_device_name = "/dev/sd-card-a",
    134 #endif
     113sd_card_driver_entry sd_card_driver_table [] = {
     114        {
     115                .device_name = "/dev/sd-card-a",
     116                .bus = 0,
    135117                .transfer_mode = SD_CARD_TRANSFER_MODE_DEFAULT,
    136118                .command = SD_CARD_COMMAND_DEFAULT,
     
    141123                .block_size = 0,
    142124                .block_size_shift = 0,
    143                 .busy = 1,
    144                 .verbose = 1,
    145                 .schedule_if_busy = 0,
     125                .busy = true,
     126                .verbose = true,
     127                .schedule_if_busy = false
    146128        }
    147129};
    148130
    149 rtems_status_code mpc55xx_sd_card_init(void)
     131size_t sd_card_driver_table_size = sizeof( sd_card_driver_table) / sizeof( sd_card_driver_table [0]);
     132
     133rtems_status_code mpc55xx_sd_card_init( bool mount)
    150134{
    151135        rtems_status_code sc = RTEMS_SUCCESSFUL;
     
    158142        RTEMS_CHECK_SC( rv, "Intitalize DSPI bus");
    159143
    160         rv = rtems_libi2c_register_drv( e->device_name, (rtems_libi2c_drv_t *) e, mpc55xx_dspi_bus_table [0].bus_number, 0);
    161         RTEMS_CHECK_RV_SC( rv, "Register SD Card driver");
     144        e->bus = mpc55xx_dspi_bus_table [0].bus_number;
    162145
    163         sc = rtems_ide_part_table_initialize( MPC55XX_DEVICE_FILE);
    164         RTEMS_CHECK_SC( sc, "Initialize IDE partition table");
     146        sc = sd_card_register();
     147        RTEMS_CHECK_SC( sc, "Register SD Card");
    165148
    166         rv = mkdir( MPC55XX_MOUNT_POINT, S_IRWXU);
    167         RTEMS_CHECK_RV_SC( rv, "Create mount point");
     149        if (mount) {
     150                sc = rtems_bdpart_register_from_disk( MPC55XX_DEVICE_FILE);
     151                RTEMS_CHECK_SC( sc, "Initialize IDE partition table");
    168152
    169         rv = rtems_fsmount( mpc55xx_fs_table, sizeof( mpc55xx_fs_table) / sizeof( mpc55xx_fs_table [0]), NULL);
    170         RTEMS_CHECK_RV_SC( rv, "Mount file systems");
     153                rv = rtems_fsmount( mpc55xx_fs_table, sizeof( mpc55xx_fs_table) / sizeof( mpc55xx_fs_table [0]), NULL);
     154                RTEMS_CHECK_RV_SC( rv, "Mount file systems");
     155        }
    171156
    172157        return RTEMS_SUCCESSFUL;
Note: See TracChangeset for help on using the changeset viewer.