📄 prism2_8c-source.html
字号:
00436 00437 u08 prism2WriteRID(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00438 {00439 u08 result;00440 result = prism2WriteBAP0(<span class="keywordtype">id</span>, offset, data, len);00441 prism2Command(PRISM2_CMD_ACCESS_WR, <span class="keywordtype">id</span>);00442 <span class="keywordflow">return</span> result;00443 }00444 00445 u08 prism2ReadBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00446 {00447 <span class="comment">// wait for BAP to be ready</span>00448 <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00449 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00450 <span class="comment">// set ID</span>00451 prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00452 <span class="comment">// set offset</span>00453 prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00454 <span class="comment">// wait for BAP to be ready</span>00455 <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00456 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00457 <span class="comment">// check for error</span>00458 <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_ERROR)00459 <span class="keywordflow">return</span> -1;00460 <span class="comment">// read data</span>00461 <span class="comment">//rprintf("PRISM_BAP: Read\r\n");</span>00462 <span class="keywordflow">while</span>(len--)00463 *data++ = prism2Read16(PRISM2_REG_BAP0DATA);00464 <span class="comment">// return success</span>00465 <span class="keywordflow">return</span> 0;00466 }00467 00468 u08 prism2WriteBAP0(u16 <span class="keywordtype">id</span>, u16 offset, u16* data, u16 len)00469 {00470 <span class="comment">// wait for BAP to be ready</span>00471 <span class="comment">//rprintf("PRISM_BAP: Wait1\r\n");</span>00472 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00473 <span class="comment">// set ID</span>00474 prism2Write16(PRISM2_REG_BAP0SEL, <span class="keywordtype">id</span>);00475 <span class="comment">// set offset</span>00476 prism2Write16(PRISM2_REG_BAP0OFFSET, offset);00477 <span class="comment">// wait for BAP to be ready</span>00478 <span class="comment">//rprintf("PRISM_BAP: Wait2\r\n");</span>00479 <span class="keywordflow">while</span>( prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_BUSY);00480 <span class="comment">// check for error</span>00481 <span class="keywordflow">if</span>(prism2Read16(PRISM2_REG_BAP0OFFSET) & PRISM2_BAPOFFSET_ERROR)00482 <span class="keywordflow">return</span> -1;00483 <span class="comment">// write data</span>00484 <span class="comment">//rprintf("PRISM_BAP: Write\r\n");</span>00485 <span class="keywordflow">while</span>(len--)00486 prism2Write16(PRISM2_REG_BAP0DATA, *data++);00487 <span class="comment">// return success</span>00488 <span class="keywordflow">return</span> 0;00489 }00490 00491 <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)00492 {00493 cli();00494 <span class="comment">// assert the address</span>00495 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00496 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00497 <span class="comment">// set data bus as output</span>00498 outb(PRISM2_DATA_DDR, 0xFF);00499 <span class="comment">// place data on bus</span>00500 outb(PRISM2_DATA_PORT, data);00501 <span class="comment">// assert write</span>00502 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00503 <span class="comment">// delay</span>00504 PRISM2_IO_ACCESS_DELAY;00505 <span class="comment">// negate write</span>00506 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IOWR);00507 <span class="comment">// set data bus back to input with pullups enabled</span>00508 outb(PRISM2_DATA_DDR, 0x00);00509 outb(PRISM2_DATA_PORT, 0xFF);00510 sei();00511 }00512 00513 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> prism2Read(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00514 {00515 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00516 cli();00517 <span class="comment">// assert the address</span>00518 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00519 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00520 <span class="comment">// set data bus to input with pullups enabled</span>00521 outb(PRISM2_DATA_DDR, 0x00);00522 outb(PRISM2_DATA_PORT, 0xFF);00523 <span class="comment">// assert read</span>00524 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00525 <span class="comment">// delay</span>00526 PRISM2_IO_ACCESS_DELAY;00527 <span class="comment">// read in the data</span>00528 data = inb( PRISM2_DATA_PIN );00529 <span class="comment">// negate read</span>00530 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_IORD);00531 <span class="comment">// return data</span>00532 sei();00533 <span class="keywordflow">return</span> data;00534 }00535 00536 <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)00537 {00538 prism2Write(address, data);00539 prism2Write(address+1, data>>8);00540 }00541 00542 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2Read16(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00543 {00544 <span class="keywordflow">return</span> prism2Read(address) | (prism2Read(address+1)<<8);00545 }00546 00547 <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)00548 {00549 cli();00550 <span class="comment">// assert the address</span>00551 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00552 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00553 <span class="comment">// set data bus as output</span>00554 outb(PRISM2_DATA_DDR, 0xFF);00555 <span class="comment">// place data on bus</span>00556 outb(PRISM2_DATA_PORT, data);00557 <span class="comment">// assert write</span>00558 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00559 <span class="comment">// delay</span>00560 PRISM2_MEM_ACCESS_DELAY;00561 <span class="comment">// negate write</span>00562 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMWR);00563 <span class="comment">// set data bus back to input with pullups enabled</span>00564 outb(PRISM2_DATA_DDR, 0x00);00565 outb(PRISM2_DATA_PORT, 0xFF);00566 sei();00567 }00568 00569 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> prism2ReadMem(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> address)00570 {00571 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00572 cli();00573 <span class="comment">// assert the address</span>00574 outb(PRISM2_HADDRESS_PORT, (address>>8) | (inb(PRISM2_HADDRESS_PORT)&~PRISM2_HADDRESS_MASK));00575 outb(PRISM2_ADDRESS_PORT, address | (inb(PRISM2_ADDRESS_PORT)&~PRISM2_ADDRESS_MASK));00576 <span class="comment">// set data bus to input with pullups enabled</span>00577 outb(PRISM2_DATA_DDR, 0x00);00578 outb(PRISM2_DATA_PORT, 0xFF);00579 <span class="comment">// assert read</span>00580 cbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00581 <span class="comment">// delay</span>00582 PRISM2_MEM_ACCESS_DELAY;00583 <span class="comment">// read in the data</span>00584 data = inb( PRISM2_DATA_PIN );00585 <span class="comment">// negate read</span>00586 sbi(PRISM2_CONTROL_PORT, PRISM2_CONTROL_MEMRD);00587 sei();00588 <span class="comment">// return data</span>00589 <span class="keywordflow">return</span> data;00590 }00591 00592 <span class="keywordtype">void</span> prism2CardRegDump(<span class="keywordtype">void</span>)00593 {00594 u16 i;00595 u08 buffer[0x100];00596 00597 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Card Config Registers\r\n"</span>);00598 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"-------------------------------\r\n"</span>);00599 <span class="comment">// read card CIS (16 bytes)</span>00600 rprintf(<span class="stringliteral">"CIS : \r\n"</span>);00601 <span class="keywordflow">for</span>(i=0; i<0x100; i++)00602 buffer[i] = prism2ReadMem(i<<1);00603 <a class="code" href="debug_8c.html#a0">debugPrintHexTable</a>(0x100, buffer);00604 00605 <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00606 00607 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>();00608 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>();00609 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>();00610 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>();00611 }00612 00613 <span class="keywordtype">void</span> prism2RegDump(<span class="keywordtype">void</span>)00614 {00615 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Prism2 Registers\r\n"</span>);00616 <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>();00617 <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>();00618 <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>();00619 <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>();00620 <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>();00621 <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>();00622 <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>();00623 <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>();00624 00625 <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>();00626 <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>();00627 <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>();00628 <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>();00629 00630 <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>();00631 <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>();00632 <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>();00633 00634 <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>();00635 <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>();00636 <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>();00637 00638 <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>();00639 <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>();00640 <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>();00641 00642 <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>();00643 <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>();00644 <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>();00645 00646 <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>();00647 <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>();00648 <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>();00649 00650 delay_ms(25);00651 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Oct 24 16:03:55 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 + -