⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrt_arg.c

📁 详细介绍了一篇关于pci开发的接口芯片
💻 C
字号:
/*
	wrt_arg.c

	Common function for Hal Gunner cmdline routines.

	Write a register based on <name>=<value> string.
*/

#include <stdtypes.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

/* non-standard includes... */
#include <display.h>
#include <amcclib.h>

void write_arg( char *cmd, UINT32 base, struct PAGE_STRUCT opr_page[], int disp_num_opr )
/*
	Entry:	cmd - string in format "<name>=<value>"
			base - base address of region
			opr_page - structure defining register name, offset, size
 			disp_num_opr - how many entries in the structure

	Return:	only if understood the command, else print error
			and exit(1)
*/

{
int i, index, found = FALSE;
unsigned int amt;
unsigned long lamt;

   if ( (index=strcspn(cmd,"=")) > 0 ) 
   {
     for(i=0; i<disp_num_opr; i++) 
     {
	   // look for matching register by name...
       if ( memicmp(cmd, opr_page[i].tag, strlen(opr_page[i].tag)) == 0 )
       {
 		 found =- TRUE;
         printf("Setting: %s = %s\n", opr_page[i].desc, (cmd+index+1));
         switch (opr_page[i].type_byte) 
         {
           case T_BYTE:
             sscanf(cmd+index+1, "%x", &amt); /*  = atol(cmd+index+1);*/
             reg_write8(base, opr_page[i].byte, amt);
             break;
           case T_WORD:
             sscanf(cmd+index+1, "%x", &amt); /*  = atol(cmd+index+1);*/
             reg_write16(base, opr_page[i].byte, amt);
             break;
           case T_DWORD:
             sscanf(cmd+index+1, "%lx", &lamt); /*  = atol(cmd+index+1);*/
             reg_write32(base, opr_page[i].byte, lamt);
             break;
         }
       }
     } // looking for register name match
   }

	if ( !found )
	{
		printf( "Unrecognized register or improperly formatted write option.\n" );
		printf( "<register name>=<value>.\n" );
		exit(1);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -