version 1.36, 2005/12/11 12:23:22 |
version 1.36.18.1, 2006/09/14 05:07:09 |
Line 471 static int i2c_read_byte(bktr_ptr_t |
|
Line 471 static int i2c_read_byte(bktr_ptr_t |
|
/* |
/* |
* the common attach code, used by all OS versions. |
* the common attach code, used by all OS versions. |
*/ |
*/ |
void |
int |
common_bktr_attach(bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev) |
common_bktr_attach(bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev) |
{ |
{ |
#if defined(__NetBSD__) |
#if defined(__NetBSD__) |
Line 487 common_bktr_attach(bktr_ptr_t bktr, int |
|
Line 487 common_bktr_attach(bktr_ptr_t bktr, int |
|
/* allocate space for DMA program */ |
/* allocate space for DMA program */ |
bktr->dma_prog = get_bktr_mem(bktr, &bktr->dm_prog, |
bktr->dma_prog = get_bktr_mem(bktr, &bktr->dm_prog, |
DMA_PROG_ALLOC); |
DMA_PROG_ALLOC); |
|
if (bktr->dma_prog == 0) |
|
return 0; |
bktr->odd_dma_prog = get_bktr_mem(bktr, &bktr->dm_oprog, |
bktr->odd_dma_prog = get_bktr_mem(bktr, &bktr->dm_oprog, |
DMA_PROG_ALLOC); |
DMA_PROG_ALLOC); |
|
if (bktr->odd_dma_prog == 0) |
|
return 0; |
|
|
/* allocate space for the VBI buffer */ |
/* allocate space for the VBI buffer */ |
bktr->vbidata = get_bktr_mem(bktr, &bktr->dm_vbidata, |
bktr->vbidata = get_bktr_mem(bktr, &bktr->dm_vbidata, |
VBI_DATA_SIZE); |
VBI_DATA_SIZE); |
|
if (bktr->vbidata == 0) |
|
return 0; |
bktr->vbibuffer = get_bktr_mem(bktr, &bktr->dm_vbibuffer, |
bktr->vbibuffer = get_bktr_mem(bktr, &bktr->dm_vbibuffer, |
VBI_BUFFER_SIZE); |
VBI_BUFFER_SIZE); |
|
if (bktr->vbibuffer == 0) |
|
return 0; |
|
|
/* allocate space for pixel buffer */ |
/* allocate space for pixel buffer */ |
if (BROOKTREE_ALLOC) |
if (BROOKTREE_ALLOC) { |
sbuf = get_bktr_mem(bktr, &bktr->dm_mem, BROOKTREE_ALLOC); |
sbuf = get_bktr_mem(bktr, &bktr->dm_mem, BROOKTREE_ALLOC); |
else |
if (sbuf == 0) |
|
return 0; |
|
} else |
sbuf = 0; |
sbuf = 0; |
#endif |
#endif |
|
|
Line 550 bktr_store_address(unit, BKTR_MEM_BUF, |
|
Line 560 bktr_store_address(unit, BKTR_MEM_BUF, |
|
if (bootverbose) { |
if (bootverbose) { |
printf("%s: buffer size %d, addr %p\n", |
printf("%s: buffer size %d, addr %p\n", |
bktr_name(bktr), BROOKTREE_ALLOC, |
bktr_name(bktr), BROOKTREE_ALLOC, |
(void *)(uintptr_t)vtophys(sbuf)); |
(void *)(uintptr_t)bktr->dm_mem->dm_segs[0].ds_addr); |
} |
} |
|
|
if (sbuf != 0) { |
if (sbuf != 0) { |
Line 625 bktr_store_address(unit, BKTR_MEM_BUF, |
|
Line 635 bktr_store_address(unit, BKTR_MEM_BUF, |
|
|
|
/* Initialise any MSP34xx or TDA98xx audio chips */ |
/* Initialise any MSP34xx or TDA98xx audio chips */ |
init_audio_devices(bktr); |
init_audio_devices(bktr); |
|
return 1; |
} |
} |
|
|
|
|
Line 758 common_bktr_intr(void *arg) |
|
Line 768 common_bktr_intr(void *arg) |
|
} |
} |
} |
} |
|
|
OUTL(bktr, BKTR_RISC_STRT_ADD, vtophys(bktr->dma_prog)); |
OUTL(bktr, BKTR_RISC_STRT_ADD, |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
OUTW(bktr, BKTR_GPIO_DMA_CTL, FIFO_ENABLED); |
OUTW(bktr, BKTR_GPIO_DMA_CTL, FIFO_ENABLED); |
OUTW(bktr, BKTR_GPIO_DMA_CTL, bktr->capcontrol); |
OUTW(bktr, BKTR_GPIO_DMA_CTL, bktr->capcontrol); |
|
|
Line 2735 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
Line 2746 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
volatile u_long pitch; |
volatile u_long pitch; |
volatile u_long *dma_prog; /* DMA prog is an array of |
volatile u_long *dma_prog; /* DMA prog is an array of |
32 bit RISC instructions */ |
32 bit RISC instructions */ |
volatile u_long *loop_point; |
volatile bus_addr_t loop_point; |
const struct meteor_pixfmt_internal *pf_int = &pixfmt_table[bktr->pixfmt]; |
const struct meteor_pixfmt_internal *pf_int = &pixfmt_table[bktr->pixfmt]; |
u_int Bpp = pf_int->public.Bpp; |
u_int Bpp = pf_int->public.Bpp; |
unsigned int vbisamples; /* VBI samples per line */ |
unsigned int vbisamples; /* VBI samples per line */ |
Line 2780 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
Line 2791 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
pitch = bktr->video.width; |
pitch = bktr->video.width; |
} |
} |
else { |
else { |
target_buffer = (u_long) vtophys(bktr->bigbuf); |
target_buffer = (u_long) bktr->dm_mem->dm_segs[0].ds_addr; |
pitch = cols*Bpp; |
pitch = cols*Bpp; |
} |
} |
|
|
Line 2792 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
Line 2803 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(OP_SYNC | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(0); |
*dma_prog++ = htole32(0); |
|
|
loop_point = dma_prog; |
loop_point = bktr->dm_prog->dm_segs[0].ds_addr; |
|
|
/* store the VBI data */ |
/* store the VBI data */ |
/* look for sync with packed data */ |
/* look for sync with packed data */ |
Line 2800 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
Line 2811 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(0); |
*dma_prog++ = htole32(0); |
for(i = 0; i < vbilines; i++) { |
for(i = 0; i < vbilines; i++) { |
*dma_prog++ = htole32(OP_WRITE | OP_SOL | OP_EOL | vbisamples); |
*dma_prog++ = htole32(OP_WRITE | OP_SOL | OP_EOL | vbisamples); |
*dma_prog++ = htole32((u_long) vtophys(bktr->vbidata + |
*dma_prog++ = htole32((u_long) |
(i * VBI_LINE_SIZE))); |
bktr->dm_vbidata->dm_segs[0].ds_addr + (i * VBI_LINE_SIZE)); |
} |
} |
|
|
if ((i_flag == 2/*Odd*/) || (i_flag==3) /*interlaced*/) { |
if ((i_flag == 2/*Odd*/) || (i_flag==3) /*interlaced*/) { |
Line 2851 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
Line 2862 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(0); |
*dma_prog++ = htole32(0); |
for(i = 0; i < vbilines; i++) { |
for(i = 0; i < vbilines; i++) { |
*dma_prog++ = htole32(OP_WRITE | OP_SOL | OP_EOL | vbisamples); |
*dma_prog++ = htole32(OP_WRITE | OP_SOL | OP_EOL | vbisamples); |
*dma_prog++ = htole32((u_long) vtophys(bktr->vbidata + |
*dma_prog++ = htole32((u_long) |
((i+MAX_VBI_LINES) * VBI_LINE_SIZE))); |
bktr->dm_vbidata->dm_segs[0].ds_addr + |
|
((i+MAX_VBI_LINES) * VBI_LINE_SIZE)); |
} |
} |
|
|
/* store the video image */ |
/* store the video image */ |
Line 2901 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
Line 2913 rgb_vbi_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys((vaddr_t)loop_point)); |
*dma_prog++ = htole32(loop_point); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
} |
} |
Line 2952 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
Line 2964 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
pitch = bktr->video.width; |
pitch = bktr->video.width; |
} |
} |
else { |
else { |
target_buffer = (u_long) vtophys(bktr->bigbuf); |
target_buffer = (u_long) bktr->dm_mem->dm_segs[0].ds_addr; |
pitch = cols*Bpp; |
pitch = cols*Bpp; |
} |
} |
|
|
Line 2999 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
Line 3011 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 2: |
case 2: |
Line 3008 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
Line 3021 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 3: |
case 3: |
Line 3016 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
Line 3030 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->odd_dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_oprog->dm_segs[0].ds_addr); |
break; |
break; |
} |
} |
|
|
Line 3063 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
Line 3078 rgb_prog(bktr_ptr_t bktr, char i_flag, i |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) bktr->dm_prog->dm_segs[0].ds_addr); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
} |
} |
|
|
Line 3106 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
Line 3121 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
if (bktr->video.addr) |
if (bktr->video.addr) |
target_buffer = (u_long) bktr->video.addr; |
target_buffer = (u_long) bktr->video.addr; |
else |
else |
target_buffer = (u_long) vtophys(bktr->bigbuf); |
target_buffer = (u_long) bktr->dm_mem->dm_segs[0].ds_addr; |
|
|
buffer = target_buffer; |
buffer = target_buffer; |
|
|
Line 3132 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
Line 3147 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32( |
|
(u_long)bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 2: |
case 2: |
Line 3140 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
Line 3156 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_VRO); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_VRO); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 3: |
case 3: |
Line 3148 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
Line 3165 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->odd_dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_oprog->dm_segs[0].ds_addr); |
break; |
break; |
} |
} |
|
|
Line 3175 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
Line 3193 yuvpack_prog(bktr_ptr_t bktr, char i_fla |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) bktr->dm_prog->dm_segs[0].ds_addr); |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long)bktr->dm_prog->dm_segs[0].ds_addr); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
} |
} |
|
|
Line 3224 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
Line 3242 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
if (bktr->video.addr) |
if (bktr->video.addr) |
target_buffer = (u_long) bktr->video.addr; |
target_buffer = (u_long) bktr->video.addr; |
else |
else |
target_buffer = (u_long) vtophys(bktr->bigbuf); |
target_buffer = (u_long) bktr->dm_mem->dm_segs[0].ds_addr; |
|
|
buffer = target_buffer; |
buffer = target_buffer; |
|
|
Line 3249 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
Line 3267 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 2: |
case 2: |
Line 3257 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
Line 3276 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 3: |
case 3: |
Line 3265 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
Line 3285 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->odd_dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_oprog->dm_segs[0].ds_addr); |
break; |
break; |
} |
} |
|
|
Line 3291 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
Line 3312 yuv422_prog(bktr_ptr_t bktr, char i_flag |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long)bktr->dm_prog->dm_segs[0].ds_addr); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
} |
} |
|
|
Line 3325 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
Line 3346 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
if (bktr->video.addr) |
if (bktr->video.addr) |
target_buffer = (u_long) bktr->video.addr; |
target_buffer = (u_long) bktr->video.addr; |
else |
else |
target_buffer = (u_long) vtophys(bktr->bigbuf); |
target_buffer = (u_long) bktr->dm_mem->dm_segs[0].ds_addr; |
|
|
buffer = target_buffer; |
buffer = target_buffer; |
t1 = buffer; |
t1 = buffer; |
Line 3353 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
Line 3374 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 2: |
case 2: |
Line 3361 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
Line 3383 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
|
|
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_prog->dm_segs[0].ds_addr); |
return; |
return; |
|
|
case 3: |
case 3: |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->odd_dma_prog)); |
*dma_prog++ = htole32((u_long) |
|
bktr->dm_oprog->dm_segs[0].ds_addr); |
break; |
break; |
} |
} |
|
|
Line 3401 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
Line 3425 yuv12_prog(bktr_ptr_t bktr, char i_flag, |
|
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32(OP_JUMP); |
*dma_prog++ = htole32((u_long) vtophys(bktr->dma_prog)); |
*dma_prog++ = htole32((u_long)bktr->dm_prog->dm_segs[0].ds_addr); |
*dma_prog++ = htole32(0); /* NULL WORD */ |
*dma_prog++ = htole32(0); /* NULL WORD */ |
} |
} |
|
|
Line 3561 build_dma_prog(bktr_ptr_t bktr, char i_f |
|
Line 3585 build_dma_prog(bktr_ptr_t bktr, char i_f |
|
break; |
break; |
} |
} |
|
|
OUTL(bktr, BKTR_RISC_STRT_ADD, vtophys(bktr->dma_prog)); |
OUTL(bktr, BKTR_RISC_STRT_ADD, bktr->dm_prog->dm_segs[0].ds_addr); |
|
|
rows = bktr->rows; |
rows = bktr->rows; |
cols = bktr->cols; |
cols = bktr->cols; |
Line 3669 start_capture(bktr_ptr_t bktr, unsigned |
|
Line 3693 start_capture(bktr_ptr_t bktr, unsigned |
|
} |
} |
|
|
|
|
OUTL(bktr, BKTR_RISC_STRT_ADD, vtophys(bktr->dma_prog)); |
OUTL(bktr, BKTR_RISC_STRT_ADD, bktr->dm_prog->dm_segs[0].ds_addr); |
|
|
} |
} |
|
|