mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-21 10:01:57 +00:00
Fix handling of cache attribute with RAM
Adapt drivers for Exynos5 and PandaBoard to cache attribute changes in 786fe80. Fixes #1301.
This commit is contained in:
parent
8f9355b360
commit
dfe95b26c8
@ -910,7 +910,7 @@ struct Sata_ahci : Attached_mmio
|
|||||||
*/
|
*/
|
||||||
Sata_ahci()
|
Sata_ahci()
|
||||||
: Attached_mmio(0x122f0000, 0x10000),
|
: Attached_mmio(0x122f0000, 0x10000),
|
||||||
ds(env()->ram_session()->alloc(0x20000, 0)),
|
ds(env()->ram_session()->alloc(0x20000, Genode::UNCACHED)),
|
||||||
cl_phys(Dataspace_client(ds).phys_addr()),
|
cl_phys(Dataspace_client(ds).phys_addr()),
|
||||||
cl_virt(env()->rm_session()->attach(ds)),
|
cl_virt(env()->rm_session()->attach(ds)),
|
||||||
fb_phys(cl_phys + CMD_LIST_SIZE),
|
fb_phys(cl_phys + CMD_LIST_SIZE),
|
||||||
@ -1223,7 +1223,7 @@ struct Sata_ahci : Attached_mmio
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* create receive buffer DMA */
|
/* create receive buffer DMA */
|
||||||
Ram_dataspace_capability dev_id_ds = env()->ram_session()->alloc(0x1000, 0);;
|
Ram_dataspace_capability dev_id_ds = env()->ram_session()->alloc(0x1000, Genode::UNCACHED);;
|
||||||
addr_t dev_id_virt = (addr_t)env()->rm_session()->attach(dev_id_ds);
|
addr_t dev_id_virt = (addr_t)env()->rm_session()->attach(dev_id_ds);
|
||||||
addr_t dev_id_phys = Dataspace_client(dev_id_ds).phys_addr();
|
addr_t dev_id_phys = Dataspace_client(dev_id_ds).phys_addr();
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ class Ahci_driver : public Block::Driver
|
|||||||
bool dma_enabled() { return true; }
|
bool dma_enabled() { return true; }
|
||||||
|
|
||||||
Genode::Ram_dataspace_capability alloc_dma_buffer(Genode::size_t size) {
|
Genode::Ram_dataspace_capability alloc_dma_buffer(Genode::size_t size) {
|
||||||
return Genode::env()->ram_session()->alloc(size, UNCACHED); }
|
return Genode::env()->ram_session()->alloc(size, Genode::UNCACHED); }
|
||||||
|
|
||||||
void free_dma_buffer(Genode::Ram_dataspace_capability c) {
|
void free_dma_buffer(Genode::Ram_dataspace_capability c) {
|
||||||
return Genode::env()->ram_session()->free(c); }
|
return Genode::env()->ram_session()->free(c); }
|
||||||
|
@ -134,7 +134,7 @@ int main(int argc, char **argv)
|
|||||||
size_t const buffer_size = 1024*1024;
|
size_t const buffer_size = 1024*1024;
|
||||||
|
|
||||||
/* allocate read/write buffer */
|
/* allocate read/write buffer */
|
||||||
static Attached_ram_dataspace buffer(env()->ram_session(), buffer_size, false);
|
static Attached_ram_dataspace buffer(env()->ram_session(), buffer_size, Genode::UNCACHED);
|
||||||
char * const buffer_virt = buffer.local_addr<char>();
|
char * const buffer_virt = buffer.local_addr<char>();
|
||||||
addr_t const buffer_phys = Dataspace_client(buffer.cap()).phys_addr();
|
addr_t const buffer_phys = Dataspace_client(buffer.cap()).phys_addr();
|
||||||
|
|
||||||
|
@ -500,7 +500,7 @@ struct Exynos5_msh_controller : private Dwmmc, Sd_card::Host_controller
|
|||||||
: Dwmmc(mmio_base),
|
: Dwmmc(mmio_base),
|
||||||
_idmac_desc_ds(Genode::env()->ram_session(),
|
_idmac_desc_ds(Genode::env()->ram_session(),
|
||||||
IDMAC_DESC_MAX_ENTRIES*sizeof(Idmac_desc),
|
IDMAC_DESC_MAX_ENTRIES*sizeof(Idmac_desc),
|
||||||
false),
|
Genode::UNCACHED),
|
||||||
_idmac_desc(_idmac_desc_ds.local_addr<Idmac_desc>()),
|
_idmac_desc(_idmac_desc_ds.local_addr<Idmac_desc>()),
|
||||||
_idmac_desc_phys(Genode::Dataspace_client(_idmac_desc_ds.cap()).phys_addr()),
|
_idmac_desc_phys(Genode::Dataspace_client(_idmac_desc_ds.cap()).phys_addr()),
|
||||||
_delayer(delayer), _card_info(_init()), _irq(IRQ_NUMBER)
|
_delayer(delayer), _card_info(_init()), _irq(IRQ_NUMBER)
|
||||||
@ -602,7 +602,7 @@ struct Exynos5_msh_controller : private Dwmmc, Sd_card::Host_controller
|
|||||||
size_t _read_ext_csd()
|
size_t _read_ext_csd()
|
||||||
{
|
{
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
Attached_ram_dataspace ds(env()->ram_session(), 0x1000, false);
|
Attached_ram_dataspace ds(env()->ram_session(), 0x1000, UNCACHED);
|
||||||
|
|
||||||
addr_t phys = Genode::Dataspace_client(ds.cap()).phys_addr();
|
addr_t phys = Genode::Dataspace_client(ds.cap()).phys_addr();
|
||||||
_setup_idmac_descriptor_table(1, phys);
|
_setup_idmac_descriptor_table(1, phys);
|
||||||
|
@ -96,7 +96,7 @@ int main(int argc, char **argv)
|
|||||||
size_t const buffer_size = 10*1024*1024;
|
size_t const buffer_size = 10*1024*1024;
|
||||||
|
|
||||||
/* allocate read/write buffer */
|
/* allocate read/write buffer */
|
||||||
static Attached_ram_dataspace buffer(env()->ram_session(), buffer_size, false);
|
static Attached_ram_dataspace buffer(env()->ram_session(), buffer_size, Genode::UNCACHED);
|
||||||
char * const buffer_virt = buffer.local_addr<char>();
|
char * const buffer_virt = buffer.local_addr<char>();
|
||||||
addr_t const buffer_phys = Dataspace_client(buffer.cap()).phys_addr();
|
addr_t const buffer_phys = Dataspace_client(buffer.cap()).phys_addr();
|
||||||
|
|
||||||
|
@ -764,7 +764,7 @@ struct Omap4_hsmmc_controller : private Mmchs, public Sd_card::Host_controller
|
|||||||
_use_dma(use_dma),
|
_use_dma(use_dma),
|
||||||
_adma_desc_ds(Genode::env()->ram_session(),
|
_adma_desc_ds(Genode::env()->ram_session(),
|
||||||
ADMA_DESC_MAX_ENTRIES*sizeof(Adma_desc::access_t),
|
ADMA_DESC_MAX_ENTRIES*sizeof(Adma_desc::access_t),
|
||||||
false),
|
Genode::UNCACHED),
|
||||||
_adma_desc(_adma_desc_ds.local_addr<Adma_desc::access_t>()),
|
_adma_desc(_adma_desc_ds.local_addr<Adma_desc::access_t>()),
|
||||||
_adma_desc_phys(Genode::Dataspace_client(_adma_desc_ds.cap()).phys_addr()),
|
_adma_desc_phys(Genode::Dataspace_client(_adma_desc_ds.cap()).phys_addr()),
|
||||||
_irq(IRQ_NUMBER)
|
_irq(IRQ_NUMBER)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user