1.1 --- a/pkg/devices/lib/msc/include/msc-defs.h Tue Apr 30 01:34:57 2024 +0200
1.2 +++ b/pkg/devices/lib/msc/include/msc-defs.h Tue Apr 30 01:37:52 2024 +0200
1.3 @@ -415,7 +415,6 @@
1.4 App_command_sd_send_op_cond = 41,
1.5 App_command_set_clr_card_detect = 42,
1.6 App_command_send_scr = 51,
1.7 - App_command_read_ocr = 58,
1.8 };
1.9
1.10 enum Bus_width_bits : unsigned
2.1 --- a/pkg/devices/lib/msc/include/msc-generic.h Tue Apr 30 01:34:57 2024 +0200
2.2 +++ b/pkg/devices/lib/msc/include/msc-generic.h Tue Apr 30 01:37:52 2024 +0200
2.3 @@ -132,7 +132,7 @@
2.4 uint8_t num_cards();
2.5
2.6 uint32_t read(uint8_t card, struct dma_region *region,
2.7 - uint32_t address, uint32_t count);
2.8 + uint64_t address, uint64_t count);
2.9
2.10 uint32_t read_blocks(uint8_t card, struct dma_region *region,
2.11 uint32_t block_address, uint32_t block_count);
3.1 --- a/pkg/devices/lib/msc/include/msc-jz4780.h Tue Apr 30 01:34:57 2024 +0200
3.2 +++ b/pkg/devices/lib/msc/include/msc-jz4780.h Tue Apr 30 01:37:52 2024 +0200
3.3 @@ -102,7 +102,7 @@
3.4
3.5 uint32_t jz4780_msc_read(void *msc_channel, uint8_t card,
3.6 struct dma_region *region,
3.7 - uint32_t address, uint32_t count);
3.8 + uint64_t address, uint64_t count);
3.9
3.10 uint32_t jz4780_msc_read_blocks(void *msc_channel, uint8_t card,
3.11 struct dma_region *region,
4.1 --- a/pkg/devices/lib/msc/include/msc-x1600.h Tue Apr 30 01:34:57 2024 +0200
4.2 +++ b/pkg/devices/lib/msc/include/msc-x1600.h Tue Apr 30 01:37:52 2024 +0200
4.3 @@ -104,7 +104,7 @@
4.4
4.5 uint32_t x1600_msc_read(void *msc_channel, uint8_t card,
4.6 struct dma_region *region,
4.7 - uint32_t address, uint32_t count);
4.8 + uint64_t address, uint64_t count);
4.9
4.10 uint32_t x1600_msc_read_blocks(void *msc_channel, uint8_t card,
4.11 struct dma_region *region,
5.1 --- a/pkg/devices/lib/msc/src/common.cc Tue Apr 30 01:34:57 2024 +0200
5.2 +++ b/pkg/devices/lib/msc/src/common.cc Tue Apr 30 01:37:52 2024 +0200
5.3 @@ -557,6 +557,10 @@
5.4 continue;
5.5 }
5.6 while (!(r3.ocr & Ocr_card_powered_up));
5.7 +
5.8 + // Set the OCR in the current card since we need the CCS indicator.
5.9 +
5.10 + _cards[_num_cards].ocr = ocr;
5.11 }
5.12
5.13 void
5.14 @@ -593,8 +597,6 @@
5.15 struct R2 r2;
5.16 struct R6 r6;
5.17
5.18 - _num_cards = 0;
5.19 -
5.20 while (send_command(Command_all_send_cid, 0))
5.21 {
5.22 read_response((uint16_t *) &r2, Response_size_R2);
5.23 @@ -650,7 +652,7 @@
5.24 // Employ 1-based relative addressing.
5.25
5.26 if (!send_command(Command_send_csd, _cards[card].rca << 16))
5.27 - return;
5.28 + continue;
5.29
5.30 read_response((uint16_t *) &r2, Response_size_R2);
5.31
5.32 @@ -689,15 +691,6 @@
5.33 printf("read access time (1 2): %d %d\n", csd->data_read_access_time_1,
5.34 csd->data_read_access_time_2);
5.35 printf("DSR: %s\n", csd->dsr_implemented ? "yes" : "no");
5.36 -
5.37 - // Query the OCR again now that we can associate it with a specific card.
5.38 -
5.39 - if (!send_app_command(App_command_read_ocr, 0))
5.40 - return;
5.41 -
5.42 - read_response((uint16_t *) &r3, Response_size_R3);
5.43 -
5.44 - _cards[card].ocr = r3.ocr;
5.45 }
5.46 }
5.47
5.48 @@ -723,10 +716,15 @@
5.49
5.50 send_command(Command_go_idle_state, 0);
5.51
5.52 + // Reset the number of SDMEM and MMC cards prior to identification.
5.53 +
5.54 + _num_cards = 0;
5.55 +
5.56 if (check_sd())
5.57 {
5.58 init_sdio();
5.59 init_sdmem();
5.60 + identify_cards();
5.61 }
5.62
5.63 init_mmc();
5.64 @@ -808,7 +806,7 @@
5.65
5.66 uint32_t
5.67 Msc_channel::read(uint8_t card, struct dma_region *region,
5.68 - uint32_t address, uint32_t count)
5.69 + uint64_t address, uint64_t count)
5.70 {
5.71 uint32_t block_size = 1 << _cards[card].csd.read_blocklen;
5.72
6.1 --- a/pkg/devices/lib/msc/src/jz4780.cc Tue Apr 30 01:34:57 2024 +0200
6.2 +++ b/pkg/devices/lib/msc/src/jz4780.cc Tue Apr 30 01:37:52 2024 +0200
6.3 @@ -128,7 +128,7 @@
6.4
6.5 uint32_t jz4780_msc_read(void *msc_channel, uint8_t card,
6.6 struct dma_region *region,
6.7 - uint32_t address, uint32_t count)
6.8 + uint64_t address, uint64_t count)
6.9 {
6.10 return static_cast<Msc_channel *>(msc_channel)->read(card, region,
6.11 address, count);
7.1 --- a/pkg/devices/lib/msc/src/x1600.cc Tue Apr 30 01:34:57 2024 +0200
7.2 +++ b/pkg/devices/lib/msc/src/x1600.cc Tue Apr 30 01:37:52 2024 +0200
7.3 @@ -145,7 +145,7 @@
7.4
7.5 uint32_t x1600_msc_read(void *msc_channel, uint8_t card,
7.6 struct dma_region *region,
7.7 - uint32_t address, uint32_t count)
7.8 + uint64_t address, uint64_t count)
7.9 {
7.10 return static_cast<Msc_channel *>(msc_channel)->read(card, region,
7.11 address, count);
8.1 --- a/pkg/landfall-examples/msc_block_server/msc_region_accessor.cc Tue Apr 30 01:34:57 2024 +0200
8.2 +++ b/pkg/landfall-examples/msc_block_server/msc_region_accessor.cc Tue Apr 30 01:37:52 2024 +0200
8.3 @@ -34,8 +34,8 @@
8.4 {
8.5 // NOTE: Block size assumption employed.
8.6
8.7 - _start = start_block * 512;
8.8 - _size = num_blocks * 512;
8.9 + _start = start_block * (offset_t) 512;
8.10 + _size = num_blocks * (offset_t) 512;
8.11 }
8.12
8.13 /* Return the size of the file. */
9.1 --- a/pkg/landfall-examples/msc_block_server/msc_region_accessor.h Tue Apr 30 01:34:57 2024 +0200
9.2 +++ b/pkg/landfall-examples/msc_block_server/msc_region_accessor.h Tue Apr 30 01:37:52 2024 +0200
9.3 @@ -21,8 +21,6 @@
9.4
9.5 #pragma once
9.6
9.7 -#include <stdio.h>
9.8 -
9.9 #include <fsserver/accessor.h>
9.10
9.11 #include "msc_region_operations.h"
9.12 @@ -36,7 +34,7 @@
9.13 {
9.14 protected:
9.15 MscRegionOperations *_ops;
9.16 - uint32_t _start;
9.17 + offset_t _start;
9.18 offset_t _size;
9.19
9.20 /* Data transfer helper methods. */
10.1 --- a/pkg/landfall-examples/msc_block_server/msc_region_operations.cc Tue Apr 30 01:34:57 2024 +0200
10.2 +++ b/pkg/landfall-examples/msc_block_server/msc_region_operations.cc Tue Apr 30 01:37:52 2024 +0200
10.3 @@ -92,7 +92,7 @@
10.4
10.5 l4_cache_inv_data(vaddr, vaddr + size);
10.6
10.7 - _msc_channel->read(_card, ®ion, (uint32_t) filepos, (uint32_t) size);
10.8 + _msc_channel->read(_card, ®ion, filepos, size);
10.9 }
10.10
10.11 void MscRegionOperations::write(l4_addr_t vaddr, l4re_dma_space_dma_addr_t paddr,