kopia lustrzana https://github.com/F5OEO/rpidatv
Add DMA information : always finding the right way to use a free DMA channel
rodzic
883238e5d4
commit
2c3d9b69bb
|
@ -265,3 +265,23 @@ int mbox_open() {
|
||||||
void mbox_close(int file_desc) {
|
void mbox_close(int file_desc) {
|
||||||
close(file_desc);
|
close(file_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//https://github.com/sarfata/pi-blaster/pull/38#discussion_r28041695
|
||||||
|
unsigned get_dma_channels(int file_desc)
|
||||||
|
{
|
||||||
|
int i=0;
|
||||||
|
unsigned p[32];
|
||||||
|
p[i++] = 0; // size
|
||||||
|
p[i++] = 0x00000000; // process request
|
||||||
|
|
||||||
|
p[i++] = 0x60001; // (the tag id)
|
||||||
|
p[i++] = 4; // (size of the buffer)
|
||||||
|
p[i++] = 0; // (size of the data)
|
||||||
|
p[i++] = 0; // response buffer
|
||||||
|
|
||||||
|
p[i++] = 0x00000000; // end tag
|
||||||
|
p[0] = i*sizeof *p; // actual size
|
||||||
|
|
||||||
|
mbox_property(file_desc, p);
|
||||||
|
return p[5];
|
||||||
|
}
|
||||||
|
|
|
@ -46,3 +46,4 @@ void *unmapmem(void *addr, unsigned size);
|
||||||
unsigned execute_code(int file_desc, unsigned code, unsigned r0, unsigned r1, unsigned r2, unsigned r3, unsigned r4, unsigned r5);
|
unsigned execute_code(int file_desc, unsigned code, unsigned r0, unsigned r1, unsigned r2, unsigned r3, unsigned r4, unsigned r5);
|
||||||
unsigned execute_qpu(int file_desc, unsigned num_qpus, unsigned control, unsigned noflush, unsigned timeout);
|
unsigned execute_qpu(int file_desc, unsigned num_qpus, unsigned control, unsigned noflush, unsigned timeout);
|
||||||
unsigned qpu_enable(int file_desc, unsigned enable);
|
unsigned qpu_enable(int file_desc, unsigned enable);
|
||||||
|
unsigned get_dma_channels(int file_desc);
|
||||||
|
|
|
@ -32,7 +32,7 @@ char InitDma(void *FunctionTerminate)
|
||||||
printf("Failed to open mailbox\n");
|
printf("Failed to open mailbox\n");
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
printf("DMA used : %x\n",get_dma_channels(mbox.handle));
|
||||||
mbox.mem_ref = mem_alloc(mbox.handle, NUM_PAGES* PAGE_SIZE, PAGE_SIZE, mem_flag);
|
mbox.mem_ref = mem_alloc(mbox.handle, NUM_PAGES* PAGE_SIZE, PAGE_SIZE, mem_flag);
|
||||||
/* TODO: How do we know that succeeded? */
|
/* TODO: How do we know that succeeded? */
|
||||||
//printf("mem_ref %x\n", mbox.mem_ref);
|
//printf("mem_ref %x\n", mbox.mem_ref);
|
||||||
|
|
Ładowanie…
Reference in New Issue