URL
https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk
Subversion Repositories or1k_soc_on_altera_embedded_dev_kit
Compare Revisions
- This comparison shows the changes necessary to convert path
/or1k_soc_on_altera_embedded_dev_kit
- from Rev 18 to Rev 19
- ↔ Reverse comparison
Rev 18 → Rev 19
/trunk/linux-2.6/linux-2.6.24/include/asm-or32/unaligned.h
2,6 → 2,7
#ifndef _OR32_UNALIGNED_H |
#define _OR32_UNALIGNED_H |
|
/* |
#define get_unaligned(ptr) ({ \ |
typeof((*(ptr))) x; \ |
memcpy(&x, (void*)ptr, sizeof(*(ptr))); \ |
12,6 → 13,15
typeof((*(ptr))) x = val; \ |
memcpy((void*)ptr, &x, sizeof(*(ptr))); \ |
}) |
*/ |
|
#define get_unaligned(ptr) \ |
({ __typeof__(*(ptr)) __tmp; memmove(&__tmp, (ptr), sizeof(*(ptr))); __tmp; }) |
|
#define put_unaligned(val, ptr) \ |
({ __typeof__(*(ptr)) __tmp = (val); \ |
memmove((ptr), &__tmp, sizeof(*(ptr))); \ |
(void)0; }) |
|
#endif |
#endif /* __KERNEL__ */ |
/trunk/linux-2.6/linux-2.6.24/fs/partitions/msdos.c
494,7 → 494,6
printk("\n"); |
|
/* second pass - output for each on a separate line */ |
#if 0 |
p = (struct partition *) (0x1be + data); |
for (slot = 1 ; slot <= 4 ; slot++, p++) { |
unsigned char id = SYS_IND(p); |
511,7 → 510,6
subtypes[n].parse(state, bdev, START_SECT(p)*sector_size, |
NR_SECTS(p)*sector_size, slot); |
} |
#endif |
put_dev_sector(sect); |
return 1; |
} |
/trunk/linux-2.6/linux-2.6.24/arch/or32/drivers/sd_card.c
41,7 → 41,7
|
#include "sd_card.h" |
|
#define SDC_DEBUG 1 |
//#define SDC_DEBUG 1 |
|
#ifdef SDC_DEBUG |
# define SDC_PRINTK(fmt, args...) printk( KERN_WARNING "sd_card:" fmt, ## args) |
52,6 → 52,8
#define DRIVER_NAME "sd_card" |
#define SD_CARD_MINORS 8 |
#define SD_CARD_SIZE 1995440128 |
//(512*1024*1024) |
//1995440128 |
|
static int major = 8; |
|
105,18 → 107,21
int i; |
unsigned int buffer_offset = 0; |
unsigned int blockCnt; |
unsigned int start = sector << 9; /* x512*/ |
|
SDC_PRINTK("read_sd_block begin: sector=%d, nsect=%d\n", sector, nsect); |
SDC_PRINTK("read_sd_block begin: sector=%ld, nsect=%ld\n", sector, nsect); |
|
for (blockCnt = 0; blockCnt < nsect; blockCnt++) { |
REG8(sd_vbase + SD_ADDR_7_0_REG) = 0; |
REG8(sd_vbase + SD_ADDR_15_8_REG) = (unsigned char) ((sector >> 8) & 0xff); |
REG8(sd_vbase + SD_ADDR_23_16_REG) = (unsigned char) ((sector >> 16) & 0xff); |
REG8(sd_vbase + SD_ADDR_31_24_REG) = (unsigned char) ((sector >> 24) & 0xff); |
REG8(sd_vbase + SD_ADDR_15_8_REG) = (unsigned char) ((start >> 8) & 0xff); |
REG8(sd_vbase + SD_ADDR_23_16_REG) = (unsigned char) ((start >> 16) & 0xff); |
REG8(sd_vbase + SD_ADDR_31_24_REG) = (unsigned char) ((start >> 24) & 0xff); |
|
REG8(sd_vbase + SD_TRANS_TYPE_REG) = SD_RW_READ_SD_BLOCK; |
REG8(sd_vbase + SD_RX_FIFO_CONTROL_REG) = 0x1; /* Clean the RX FIFO */ |
REG8(sd_vbase + SD_TRANS_CTRL_REG) = 0x1; /* TRANS_START */ |
|
|
while (REG8(sd_vbase + SD_TRANS_STS_REG) & 0x1) { /* exit while !TRABS_BUSY */ |
; |
} |
125,10 → 130,16
if ( transError == SD_READ_NO_ERROR) { |
for (i = 0; i < 512; i++) { |
data = REG8(sd_vbase + SD_RX_FIFO_DATA_REG) ; |
REG8(buffer + buffer_offset + i) = data ; |
//REG8(buffer + buffer_offset + i) = data ; |
buffer[buffer_offset + i] = data ; |
// printk("%x\t",data); |
// if (i%16 == 0) { |
// printk("\n"); |
// } |
} |
// printk("\n"); |
buffer_offset += 512; |
sector += 512; |
start += 512; |
} else { |
SDC_PRINTK("read_sd_block failed. Re-try\n"); |
spiMaster_init(sd_vbase); /* Init again and retry */ |
148,9 → 159,11
unsigned char data; |
unsigned int blockCnt; |
char *p = buffer; |
unsigned int start = sector << 9; /* x512*/ |
|
SDC_PRINTK("write_sd_block begin: sector=%d, nsect=%d\n", sector, nsect); |
|
SDC_PRINTK("write_sd_block begin: sector=%ld, nsect=%ld\n", sector, nsect); |
|
for (blockCnt = 0; blockCnt < nsect; blockCnt++) { |
|
/* Clean the TX FIFO */ |
157,9 → 170,9
REG8(sd_vbase + SD_TX_FIFO_CONTROL_REG) = 0x1; |
|
REG8(sd_vbase + SD_ADDR_7_0_REG) = 0; |
REG8(sd_vbase + SD_ADDR_15_8_REG) = (unsigned char) ((sector >> 8) & 0xff); |
REG8(sd_vbase + SD_ADDR_23_16_REG) = (unsigned char) ((sector >> 16) & 0xff); |
REG8(sd_vbase + SD_ADDR_31_24_REG) = (unsigned char) ((sector >> 24) & 0xff); |
REG8(sd_vbase + SD_ADDR_15_8_REG) = (unsigned char) ((start >> 8) & 0xff); |
REG8(sd_vbase + SD_ADDR_23_16_REG) = (unsigned char) ((start >> 16) & 0xff); |
REG8(sd_vbase + SD_ADDR_31_24_REG) = (unsigned char) ((start >> 24) & 0xff); |
|
|
// Write data to TX_FIFO_DATA_REG |
167,11 → 180,10
REG8(sd_vbase + SD_TX_FIFO_DATA_REG) = p[i]; |
} |
|
|
REG8(sd_vbase + SD_TRANS_TYPE_REG) = SD_RW_WRITE_SD_BLOCK; |
REG8(sd_vbase + SD_TRANS_CTRL_REG) = 1; /* TRANS_START */ |
|
|
udelay(10); |
while (REG8(sd_vbase + SD_TRANS_STS_REG) & 0x1) { /* exit while !TRABS_BUSY */ |
; |
} |
178,14 → 190,14
|
data = REG8(sd_vbase + SD_TRANS_ERROR_REG) & 0x30; |
if (data == 1) { |
SDC_PRINTK("WRITE_CMD_ERROR\n\r"); |
printk("sd_card:WRITE_CMD_ERROR\n\r"); |
} else if (data == 2) { |
SDC_PRINTK("WRITE_DATA_ERROR\n\r"); |
printk("sd_card:WRITE_DATA_ERROR\n\r"); |
} else if (data == 3) { |
SDC_PRINTK("WRITE_BUSY_ERROR\n\r"); |
printk("sd_card:WRITE_BUSY_ERROR\n\r"); |
} |
|
sector += 512; |
start += 512; |
p += 512; |
} |
|
310,6 → 322,36
* The ioctl() implementation |
*/ |
|
static int sd_card_getgeo(struct block_device *bdev, |
struct hd_geometry *geo) |
{ |
/* |
* capacity heads sectors cylinders |
* 0~16M 1 1 0~32768 |
* 16M~512M 1 32 1024~32768 |
* 512M~16G 32 32 1024~32768 |
* 16G~... 255 63 2088~... |
*/ |
if (SD_CARD_SIZE < 16 * 1024 * 1024) { |
geo->heads = 1; |
geo->sectors = 1; |
|
} else if (SD_CARD_SIZE < 512 * 1024 * 1024) { |
geo->heads = 1; |
geo->sectors = 32; |
} else if (SD_CARD_SIZE < 16ULL * 1024 * 1024 * 1024) { |
geo->heads = 32; |
geo->sectors = 32; |
} else { |
geo->heads = 255; |
geo->sectors = 63; |
} |
|
geo->cylinders = SD_CARD_SIZE>>9/geo->heads/geo->sectors; |
|
return 0; |
} |
|
int sd_card_ioctl (struct inode *inode, struct file *filp, |
unsigned int cmd, unsigned long arg) |
{ |
348,7 → 390,8
.release = sd_card_release, |
.media_changed = sd_card_media_changed, |
.revalidate_disk = sd_card_revalidate, |
.ioctl = sd_card_ioctl |
// .ioctl = sd_card_ioctl, |
.getgeo = sd_card_getgeo |
}; |
|
/** |