📄 prism2_8c-source.html
字号:
00434 u08 result;00435 result = prism2WriteBAP0(<span class="keywordtype">id</span>, offset, data, len);00436 prism2Command(PRISM2_CMD_ACCESS_WR, <span class="keywordtype">id</span>);00437 <span class="keywordflow">return</span> result;00438 }00439 00440 u08 prism2ReadBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00441 {00442 <span class="comment">// wait for BAP to be ready</span>00443 <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00444 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00445 <span class="comment">// set ID</span>00446 prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00447 <span class="comment">// set offset</span>00448 prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00449 <span class="comment">// wait for BAP to be ready</span>00450 <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00451 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00452 <span class="comment">// check for error</span>00453 <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_ERROR)00454 <span class="keywordflow">return</span> -1;00455 <span class="comment">// read data</span>00456 <span class="comment">//rprintf("PRISM_BAP: Read\r\n");</span>00457 <span class="keywordflow">while</span>(len--)00458 *data++ = prism2Read16(PRISM2_REG_BAP0DATA);00459 <span class="comment">// return success</span>00460 <span class="keywordflow">return</span> 0;00461 }00462 00463 u08 prism2WriteBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00464 {00465 <span class="comment">// wait for BAP to be ready</span>00466 <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00467 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00468 <span class="comment">// set ID</span>00469 prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00470 <span class="comment">// set offset</span>00471 prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00472 <span class="comment">// wait for BAP to be ready</span>00473 <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00474 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00475 <span class="comment">// check for error</span>00476 <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_ERROR)00477 <span class="keywordflow">return</span> -1;00478 <span class="comment">// write data</span>00479 <span class="comment">//rprintf("PRISM_BAP: Write\r\n");</span>00480 <span class="keywordflow">while</span>(len--)00481 prism2Write16(PRISM2_REG_BAP0DATA, *data++);00482 <span class="comment">// return success</span>00483 <span class="keywordflow">return</span> 0;00484 }00485 00486 <span class="keywordtype">void</span> prism2Write(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data)00487 {00488 cli();00489 <span class="comment">// assert the address</span>00490 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00491 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00492 <span class="comment">// set data bus as output</span>00493 outb(PRISM2_DATA_DDR, 0xFF);00494 <span class="comment">// place data on bus</span>00495 outb(PRISM2_DATA_PORT, data);00496 <span class="comment">// assert write</span>00497 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00498 <span class="comment">// delay</span>00499 PRISM2_IO_ACCESS_DELAY;00500 <span class="comment">// negate write</span>00501 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00502 <span class="comment">// set data bus back to input with pullups enabled</span>00503 outb(PRISM2_DATA_DDR, 0x00);00504 outb(PRISM2_DATA_PORT, 0xFF);00505 sei();00506 }00507 00508 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> prism2Read(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00509 {00510 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00511 cli();00512 <span class="comment">// assert the address</span>00513 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00514 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00515 <span class="comment">// set data bus to input with pullups enabled</span>00516 outb(PRISM2_DATA_DDR, 0x00);00517 outb(PRISM2_DATA_PORT, 0xFF);00518 <span class="comment">// assert read</span>00519 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00520 <span class="comment">// delay</span>00521 PRISM2_IO_ACCESS_DELAY;00522 <span class="comment">// read in the data</span>00523 data = inb( PRISM2_DATA_PIN );00524 <span class="comment">// negate read</span>00525 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00526 <span class="comment">// return data</span>00527 sei();00528 <span class="keywordflow">return</span> data;00529 }00530 00531 <span class="keywordtype">void</span> prism2Write16(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> data)00532 {00533 prism2Write(address, data);00534 prism2Write(address+1, data>>8);00535 }00536 00537 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2Read16(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00538 {00539 <span class="keywordflow">return</span> prism2Read(address) | (prism2Read(address+1)<<8);00540 }00541 00542 <span class="keywordtype">void</span> prism2WriteMem(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> data)00543 {00544 cli();00545 <span class="comment">// assert the address</span>00546 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00547 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00548 <span class="comment">// set data bus as output</span>00549 outb(PRISM2_DATA_DDR, 0xFF);00550 <span class="comment">// place data on bus</span>00551 outb(PRISM2_DATA_PORT, data);00552 <span class="comment">// assert write</span>00553 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00554 <span class="comment">// delay</span>00555 PRISM2_MEM_ACCESS_DELAY;00556 <span class="comment">// negate write</span>00557 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00558 <span class="comment">// set data bus back to input with pullups enabled</span>00559 outb(PRISM2_DATA_DDR, 0x00);00560 outb(PRISM2_DATA_PORT, 0xFF);00561 sei();00562 }00563 00564 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2ReadMem(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00565 {00566 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00567 cli();00568 <span class="comment">// assert the address</span>00569 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00570 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00571 <span class="comment">// set data bus to input with pullups enabled</span>00572 outb(PRISM2_DATA_DDR, 0x00);00573 outb(PRISM2_DATA_PORT, 0xFF);00574 <span class="comment">// assert read</span>00575 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00576 <span class="comment">// delay</span>00577 PRISM2_MEM_ACCESS_DELAY;00578 <span class="comment">// read in the data</span>00579 data = inb( PRISM2_DATA_PIN );00580 <span class="comment">// negate read</span>00581 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00582 sei();00583 <span class="comment">// return data</span>00584 <span class="keywordflow">return</span> data;00585 }00586 00587 <span class="keywordtype">void</span> prism2CardRegDump(<span class="keywordtype">void</span>)00588 {00589 u16 i;00590 u08 buffer[0x100];00591 00592 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Card Config Registers\r\n"</span>);00593 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"-------------------------------\r\n"</span>);00594 <span class="comment">// read card CIS (16 bytes)</span>00595 rprintf(<span class="stringliteral">"CIS : \r\n"</span>);00596 <span class="keywordflow">for</span>(i=0; i<0x100; i++)00597 buffer[i] = prism2ReadMem(i<<1);00598 <a class="code" href="debug_8c.html#a0">debugPrintHexTable</a>(0x100, buffer);00599 00600 <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00601 00602 rprintf(<span class="stringliteral">"COR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_COR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00603 rprintf(<span class="stringliteral">"CSR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_CSR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00604 rprintf(<span class="stringliteral">"PRR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_PRR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00605 rprintf(<span class="stringliteral">"SCR : "</span>); <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(prism2ReadMem(0x3E0+PCMCIA_ATTR_SCR)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00606 }00607 00608 <span class="keywordtype">void</span> prism2RegDump(<span class="keywordtype">void</span>)00609 {00610 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Prism2 Registers\r\n"</span>);00611 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"CMD : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_CMD)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00612 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"PARAM0 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_PARAM0)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00613 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"PARAM1 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_PARAM1)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00614 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"PARAM2 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_PARAM2)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00615 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"STATUS : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_STATUS)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00616 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RESP0 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RESP0)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00617 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RESP1 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RESP1)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00618 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RESP2 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RESP2)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00619 00620 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"INFOFID : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_INFOFID)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00621 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"RXFID : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_RXFID)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00622 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"ALLOCFID: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_ALLOCFID)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00623 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"TXFID : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_TXFID)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00624 00625 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP0SEL : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP0SEL)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00626 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP0OFFS: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP0OFFSET)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00627 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP0DATA: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP0DATA)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00628 00629 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP1SEL : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP1SEL)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00630 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP1OFFS: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP1OFFSET)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00631 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BAP1DATA: "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_BAP1DATA)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00632 00633 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"EVSTAT : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_EVSTAT)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00634 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"INTEN : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_INTEN)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00635 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"EVACK : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_EVACK)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00636 00637 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SWSUP0 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_SWSUP0)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00638 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SWSUP0 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_SWSUP1)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00639 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SWSUP0 : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_SWSUP2)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00640 00641 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"AUXPAGE : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_AUXPAGE)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00642 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"AUXOFFS : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_AUXOFFSET)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00643 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"AUXDATA : "</span>); <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(prism2Read16(PRISM2_REG_AUXDATA)); <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00644 00645 delay_ms(25);00646 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Aug 22 04:29:27 2005 for Procyon AVRlib by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -