亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rf_dev.c

?? 軟件無線電的平臺(tái)
?? C
字號(hào):
/***************************************************************************             rf_dev.c  -  The device-interface for the rf                            -------------------    begin                :  2002    authors              :  Linus Gasser    emails               :  linus.gasser@epfl.ch ***************************************************************************//***************************************************************************                                 Changes                                 ------- date - name - description 02-10-01 - ineiti - create 02-12-11 - ineiti - changed the name from daq.c  **************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************//** * This is the linux-device part of the rf-implementation */#define DBG_LVL 0#include "system.h"#include "debugging.h"#include "channel_rf.h"#include "rf_io.h"#include "rf_dev.h"#include "rf_eeprom.h"#include "memory.h"#include "mmx.h"device_t *rf_cards;int num_cards;static int rf_open ( struct inode *inode,struct file *filp ) {  PR_DBG( 4, "Opening RF driver\n" );  return 0;}static int rf_release ( struct inode *inode,struct file *filp ) {  PR_DBG( 4, "Closing RF\n" );  return 0;}/* arg is not meaningful if no arg is passed in user space */static int rf_ioctl( struct inode *inode,struct file *filp, unsigned int cmd,                     unsigned long arg ) {  int ret,tmp;  int fpga_size = 0;  int gain,freq,time, nbr_rf = MINOR( inode->i_rdev );  device_t *dev_rf;  unsigned int baseptr;  unsigned int rx_pci_address;  unsigned int tx_pci_address;  unsigned int mbox_pci_address;  int i;  char bit;  dev_rf = &rf_cards[ nbr_rf ];  baseptr = (int)dev_rf->data_base;  PR_DBG( 4, "Accessing card-number: %i\n", nbr_rf );  rx_pci_address = ( unsigned int ) virt_to_phys( dev_rf->rx_buffer );  tx_pci_address = ( unsigned int ) virt_to_phys( dev_rf->tx_buffer );  mbox_pci_address = ( unsigned int ) virt_to_phys( dev_rf->mboxes );  switch( cmd ) {  case RF_FPGA_RESET:    PR_DBG( 4, "Resetting FPGA logic\n" );    tmp = inl( dev_rf->addr[1] + 0x6C );    outl( tmp | 0x10000, dev_rf->addr[1] + 0x6C );    /* Set PROGRAM value to LOW */    rf_writel( 0x00000000, baseptr + 0x200000 ); /* A21, !D31 */    rf_writel( 0xFF, baseptr + 0x200000 ); /* A21, D31 */    udelay( 20 );    PR_DBG( 4, "Readback=%x\n",readl( baseptr + 0x200000 ) );    break;  case RF_FPGA_PROGRAM:    /* verify addresses */    if( ( ret = verify_area( VERIFY_READ, ( void * )arg, sizeof( int ) ) ) != 0 ) {      PR_DBG( 4, "FPGA_PROGRAM: size verify error: %d\n", ret );      return -1;    }    get_user( fpga_size,( unsigned int * )arg );    PR_DBG( 4, "FPGA_PROGRAM: size : %d OK\n", fpga_size );    if( ( ret = verify_area( VERIFY_READ, ( void * )arg, fpga_size ) ) != 0 ) {      PR_DBG( 4, "FPGA_PROGRAM: verify error: %d\n", ret );      return -1;    }    // Give Local Bus control to GAL arbiter    tmp = inl( dev_rf->addr[1] + 0x6C );    outl( tmp | 0x10000, dev_rf->addr[1] + 0x6C );    PR_DBG( 4, "Start loading\n" );    // Set PROGRAM value to LOW    rf_writel( 0x00000000, baseptr + 0x200000 ); // put PROGRAM* low    rf_writel( 0xFFFFFFFF, baseptr + 0x200000 ); // put PROGRAM* high    /* Was 1 but some errors appear. Could be as       big as 100 ( from the Xilynx doc ). Looking for INIT is the correct       method, but this doesn't work. WHY ? */    udelay( 10 );    for( i = 0; i < fpga_size; ++i ) {      /* +4 : We have the buffer size ( 4 bytes ) at the beginning */      get_user( bit,( unsigned char * )arg + i + 4 );      if ( bit ) {        writel( 0xFFFFFFFF,baseptr+0x220000 );        mb( );      } else {        rf_writel( 0x00000000, baseptr + 0x220000 );      }    }    for( i = 0; i < 250; ++i )      rf_writel( 0xFFFFFFFF, baseptr + 0x220000 );    udelay( 100 );    // sleep 20usec    // Give Local bus Control to FPGA    tmp = inl( dev_rf->addr[1] + 0x6C );    outl( tmp & ( ~0x10000 ), dev_rf->addr[1] + 0x6C );    PR_DBG( 4, "FPGA LOAD = %x\n",readl( baseptr + 0x200000 ) );    PR_DBG( 4, "Writing %x\n",rx_pci_address );    rf_writel( rx_pci_address,baseptr+0x400000 );    PR_DBG( 4, "Read back %x\n",readl( baseptr + 0x400000 ) );    rf_writel( 0,baseptr+DAC_BUFFER );    break;  case RF_GETPHYS_RX:    put_user( rx_pci_address, ( unsigned long * )arg );    break;  case RF_GETPHYS_TX:    put_user( tx_pci_address, ( unsigned long * )arg );    break;  case RF_GETPHYS_MBOX:    put_user( mbox_pci_address, ( unsigned long * )arg );    break;  case RF_SET_TEST_TX1:    setmode( dev_rf, TEST_TX1 );    break;  case RF_SET_TEST_TX2:    setmode( dev_rf, TEST_TX2 );    break;  case RF_SET_TEST_RX1:    setmode( dev_rf, TEST_RX1 );    break;  case RF_SET_TEST_RX2:    setmode( dev_rf, TEST_RX2 );    break;  case RF_SET_TX_PA_GAIN:    get_user( gain,( int * )arg );    writegain( dev_rf, TX_PA_GAIN,gain );    break;  case RF_SET_TX_MED_GAIN:    get_user( gain,( int * )arg );    writegain( dev_rf, TX_MED_GAIN,gain );    break;  case RF_SET_TX_IF_GAIN:    get_user( gain,( int * )arg );    writegain( dev_rf, TX_IF_GAIN,gain );    break;  case RF_SET_RX_IF_GAIN:    get_user( gain,( int * )arg );    writegain( dev_rf, RX_IF_GAIN,gain );    break;  case RF_SET_SDAC:    get_user( gain,( int * )arg );    write_sdac( dev_rf, gain );    break;  case RF_SET_FSYN:    get_user( freq,( unsigned int * )arg );    PR_DBG( 4, "freq=%d\n",freq );    write_lo( dev_rf, freq );    break;  case RF_TEST_FPGA_MEM:    return( test_FPGA_mem( dev_rf ) );    break;  case RF_TEST_ADC_DMA:    get_user( time,( unsigned int * )arg );    return( test_adc_dma( dev_rf, time ) );    break;  case RF_TEST_DAC_DMA:    get_user( time,( unsigned int * )arg );    return( test_dac_dma( dev_rf, time ) );    break;  case RF_START_TEST_DAC:    return( start_test_dac( dev_rf ) );    break;  case RF_STOP_TEST_DAC:    return( stop_test_dac( dev_rf ) );    break;  case RF_DUMP_PLX_REGS:    PR_DBG( 4, "PLX 9080 Local Register Dump\n" );    for ( i=0;i<256;i+=4 ) {      tmp = inl( dev_rf->addr[1] + i );      PR_DBG( 4, "%x:%x\n",i,tmp );    }    break;  case RF_EEPROM_WRITE:    rf_ee_write_data( dev_rf );    break;  case RF_EEPROM_READ:    rf_ee_read_data( dev_rf );    break;  default:    return -EPERM;    break;  }  PR_DBG( 4, "Done with ioctl %x\n",cmd );  return 0;}static struct file_operations rf_fops[] = { {        THIS_MODULE,        NULL,               //llseek        NULL,               //read        NULL,               //write        NULL,               //readdir        NULL,               //poll        rf_ioctl,          //ioctl        NULL,               //mmap        rf_open,           //open        NULL,               //flush        rf_release,        //release        NULL,               //fsync        NULL,               //fasync        NULL,               //check_media_change        NULL,               //revalidate        NULL      }    }    ;              //lockint init_dev( void ) {  device_t *dev_rf;  int res = 0, i;  unsigned short vendor = 0x10b5;  unsigned short id = 0x9080;  unsigned short ind,index[256];  unsigned char bus[256];  unsigned char function[256];  // Register the device  if( ( res = register_chrdev( RF_MAJOR, "rf", rf_fops ) ) < 0 ) {    PR_DBG( 4, "can't register, major : %d, error: %d\n", RF_MAJOR, res );    return -EIO;  } else {    PR_DBG( 4, "register OK, major : %d\n", RF_MAJOR );  }  // Check for PCI Bios  if( pcibios_present( ) ) {    PR_DBG( 4, "pci bios present\n" );  } else {    PR_DBG( 4, "NO pci bios found\n" );    return -ENODEV;  }  // Look for 1 PLX 9080#define MAX_DEV 256  rf_cards = swr_malloc( sizeof( device_t ) * MAX_ANTENNAS );  for( ind = 0; ind < MAX_DEV; ++ind ) {    res = pcibios_find_device( vendor, id, ind, &bus[num_cards], &function[num_cards] );    if( res == PCIBIOS_SUCCESSFUL ) {      PR_DBG( 4, "card found: bus: 0x%02x, index: 0x%02x, function: 0x%02x\n",              bus[num_cards], index[num_cards], function[num_cards] );      index[num_cards] = ind;      num_cards++;    }  }  if( num_cards==0 ) { // Loop has ended, and device not found    PR_DBG( 4, "No card found\n" );    return -ENODEV;		// Must look if there is another return code  }  for ( i=0; i < num_cards; i++ ) {    PR_DBG( 0, "Detected card number %i\n", i );    // Now read the configuration    dev_rf = &rf_cards[ i ];    dev_rf->vendor = vendor;    dev_rf->id = id;    dev_rf->index = index[ i ];    dev_rf->bus = bus[ i ];    dev_rf->func = function[ i ];    dump_config( dev_rf, bus[i], function[i] );    pthread_mutex_init( &dev_rf->mutex, NULL );    // Now map the DMA Memory Space    dev_rf->data_base = (unsigned int)ioremap_nocache( dev_rf->addr[2],RAMSIZE );    PR_DBG( 4, "Starting RF\n" );    PR_DBG( 4, "I/O Virtual address is : 0x%x\n", dev_rf->data_base );  }  // END OF MODULE Initializations  dev_rf = &rf_cards[ 0 ];  PR_DBG( 4, "dev_rf = %p\n",dev_rf );  return 0;}void cleanup_dev( void ) {  int i;  device_t *dev_rf;  for ( i=0; i < num_cards; i++ ) {    PR_DBG( 4, "Freeing dispatcher %i\n", i );    dev_rf = &rf_cards[ i ];    PR_DBG( 4, "Removing rf card %i\n", i );    // Unmap the FPGA memory space    iounmap( ( char * )dev_rf->data_base );    dev_rf->data_base = 0;    dev_rf->offset = 0;  }  // unregister device  unregister_chrdev( RF_MAJOR, "rf" );  PR_DBG( 4, "unregister, major : %d\n", RF_MAJOR );}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区欧美激情| 日韩一卡二卡三卡| 蜜臀av在线播放一区二区三区| 国产欧美精品日韩区二区麻豆天美| 在线免费亚洲电影| 亚洲自拍偷拍欧美| 欧美国产成人在线| 日韩欧美电影一区| 欧美在线不卡一区| 成人小视频在线| 久久国产精品色婷婷| 亚洲大片免费看| 亚洲狼人国产精品| 国产精品久久综合| 国产喷白浆一区二区三区| 在线播放一区二区三区| 日本韩国欧美一区二区三区| 国产91精品久久久久久久网曝门| 久久精品99国产国产精| 日韩高清不卡在线| 亚洲va欧美va人人爽午夜| 亚洲人吸女人奶水| 中文字幕一区二区视频| 国产午夜精品久久久久久久| 2020国产精品久久精品美国| 日韩欧美激情四射| 4438成人网| 欧美精品在线一区二区| 欧美性一区二区| 在线精品观看国产| 91激情在线视频| 99国产一区二区三精品乱码| 成人爱爱电影网址| 成人三级在线视频| 成人精品免费看| av激情综合网| 91在线视频观看| 91国内精品野花午夜精品| 91高清视频免费看| 欧美日韩一区二区三区不卡| 欧美日韩视频不卡| 欧美视频在线观看一区二区| 欧美性生活大片视频| 欧美亚洲国产一区二区三区va| 色94色欧美sute亚洲线路二 | 99久久99久久免费精品蜜臀| 国产精品一卡二卡| 成人在线一区二区三区| 国产成人免费视频一区| 国产福利91精品| 99在线热播精品免费| 91麻豆高清视频| 欧美怡红院视频| 欧美精品在欧美一区二区少妇| 777午夜精品视频在线播放| 欧美一区二区三区在线| 日韩欧美高清一区| 欧美激情一二三区| 亚洲黄色性网站| 视频一区二区三区在线| 久久66热re国产| 成人国产一区二区三区精品| 91在线porny国产在线看| 欧美日韩一区二区三区高清| 日韩精品一区二区三区在线播放| 精品久久人人做人人爽| 中文字幕在线观看不卡| 亚洲国产日韩在线一区模特 | 久久99国产乱子伦精品免费| 国产精品亚洲一区二区三区妖精| 97久久精品人人澡人人爽| 在线免费观看日本一区| 日韩欧美视频在线| 国产精品久久久久久久久图文区| 洋洋av久久久久久久一区| 手机精品视频在线观看| 国产一区二区三区四区五区入口| 99国产精品国产精品久久| 欧美色倩网站大全免费| 久久影院视频免费| 亚洲男人的天堂在线观看| 麻豆91在线播放免费| www.亚洲精品| 日韩视频国产视频| 亚洲色欲色欲www在线观看| 奇米色777欧美一区二区| 不卡高清视频专区| 欧美大片一区二区三区| 亚洲女同女同女同女同女同69| 久久精品国产999大香线蕉| 色综合久久88色综合天天免费| 日韩欧美一二三| 一区二区三区日韩欧美精品| 国产在线视频一区二区| 欧美日韩一区二区不卡| 国产色婷婷亚洲99精品小说| 三级久久三级久久| 成人av在线观| 精品成人在线观看| 亚洲小少妇裸体bbw| 成人黄动漫网站免费app| 日韩欧美视频在线| 午夜亚洲国产au精品一区二区| 成人av在线一区二区三区| 欧美成人a∨高清免费观看| 亚洲电影在线免费观看| 91影院在线观看| 国产欧美日韩麻豆91| 精品一区二区三区免费观看| 欧美图区在线视频| 成人免费一区二区三区视频| 国产一区二区三区四区在线观看| 91精品在线观看入口| 一卡二卡三卡日韩欧美| 99久久精品免费看| 国产欧美日韩亚州综合| 国产在线播放一区| 日韩欧美在线123| 亚洲国产成人私人影院tom| 美国欧美日韩国产在线播放| 欧美视频一区二区| 亚洲欧美日韩久久| av激情成人网| 国产精品人成在线观看免费| 国产精品一区二区黑丝| 久久久五月婷婷| 国产一区二区伦理| 亚洲精品一线二线三线| 日韩电影一区二区三区| 91精品免费在线观看| 丝袜国产日韩另类美女| 欧美久久免费观看| 亚洲不卡一区二区三区| 欧美电影一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 91视频国产资源| 亚洲色图欧美偷拍| 色香色香欲天天天影视综合网| 亚洲免费观看高清完整| 色一情一伦一子一伦一区| 亚洲综合免费观看高清完整版| 日本韩国欧美一区二区三区| 亚洲另类在线一区| 欧美日韩美女一区二区| 天堂av在线一区| 91精品国产乱码久久蜜臀| 免费久久精品视频| 2022国产精品视频| 成熟亚洲日本毛茸茸凸凹| 国产丶欧美丶日本不卡视频| 欧美日韩一区在线| 日韩精品电影在线观看| 日韩一区二区三| 韩国成人在线视频| 国产精品美女久久久久久久久久久 | 久久精品人人做人人综合 | 色综合久久久久综合| 亚洲综合精品自拍| 欧美一区二区三区四区在线观看| 蜜臀91精品一区二区三区| 久久久精品影视| av影院午夜一区| 亚洲国产欧美在线人成| 91精品国产综合久久福利软件| 美女脱光内衣内裤视频久久影院| 久久综合资源网| 91啦中文在线观看| 亚欧色一区w666天堂| 精品剧情在线观看| 99久久伊人网影院| 亚洲国产aⅴ成人精品无吗| 日韩一区二区麻豆国产| 国产成人av自拍| 亚洲综合精品自拍| 久久影视一区二区| 一本久久综合亚洲鲁鲁五月天| 日韩精品一二区| 国产校园另类小说区| 欧美午夜寂寞影院| 国产在线一区二区综合免费视频| 亚洲三级视频在线观看| 91精品一区二区三区久久久久久 | 久久综合资源网| 日本精品视频一区二区| 精品在线一区二区三区| 亚洲精品欧美在线| 精品国产凹凸成av人网站| 91色porny蝌蚪| 狠狠色狠狠色合久久伊人| 一二三四区精品视频| 久久久不卡网国产精品一区| 欧美影院午夜播放| 成人综合在线网站| 美女一区二区在线观看| 亚洲欧洲综合另类在线| 久久久精品免费网站| 9191精品国产综合久久久久久 | 色婷婷国产精品| 国产+成+人+亚洲欧洲自线| 日本成人中文字幕|