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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? max7310.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
字號:
/* * MAX7310 8-port GPIO expansion chip. * * Copyright (c) 2006 Openedhand Ltd. * Written by Andrzej Zaborowski <balrog@zabor.org> * * This file is licensed under GNU GPL. */#include "hw.h"#include "i2c.h"struct max7310_s {    i2c_slave i2c;    int i2c_command_byte;    int len;    uint8_t level;    uint8_t direction;    uint8_t polarity;    uint8_t status;    uint8_t command;    qemu_irq handler[8];    qemu_irq *gpio_in;};void max7310_reset(i2c_slave *i2c){    struct max7310_s *s = (struct max7310_s *) i2c;    s->level &= s->direction;    s->direction = 0xff;    s->polarity = 0xf0;    s->status = 0x01;    s->command = 0x00;}static int max7310_rx(i2c_slave *i2c){    struct max7310_s *s = (struct max7310_s *) i2c;    switch (s->command) {    case 0x00:	/* Input port */        return s->level ^ s->polarity;        break;    case 0x01:	/* Output port */        return s->level & ~s->direction;        break;    case 0x02:	/* Polarity inversion */        return s->polarity;    case 0x03:	/* Configuration */        return s->direction;    case 0x04:	/* Timeout */        return s->status;        break;    case 0xff:	/* Reserved */        return 0xff;    default:#ifdef VERBOSE        printf("%s: unknown register %02x\n", __FUNCTION__, s->command);#endif        break;    }    return 0xff;}static int max7310_tx(i2c_slave *i2c, uint8_t data){    struct max7310_s *s = (struct max7310_s *) i2c;    uint8_t diff;    int line;    if (s->len ++ > 1) {#ifdef VERBOSE        printf("%s: message too long (%i bytes)\n", __FUNCTION__, s->len);#endif        return 1;    }    if (s->i2c_command_byte) {        s->command = data;        s->i2c_command_byte = 0;        return 0;    }    switch (s->command) {    case 0x01:	/* Output port */        for (diff = (data ^ s->level) & ~s->direction; diff;                        diff &= ~(1 << line)) {            line = ffs(diff) - 1;            if (s->handler[line])                qemu_set_irq(s->handler[line], (data >> line) & 1);        }        s->level = (s->level & s->direction) | (data & ~s->direction);        break;    case 0x02:	/* Polarity inversion */        s->polarity = data;        break;    case 0x03:	/* Configuration */        s->level &= ~(s->direction ^ data);        s->direction = data;        break;    case 0x04:	/* Timeout */        s->status = data;        break;    case 0x00:	/* Input port - ignore writes */	break;    default:#ifdef VERBOSE        printf("%s: unknown register %02x\n", __FUNCTION__, s->command);#endif        return 1;    }    return 0;}static void max7310_event(i2c_slave *i2c, enum i2c_event event){    struct max7310_s *s = (struct max7310_s *) i2c;    s->len = 0;    switch (event) {    case I2C_START_SEND:        s->i2c_command_byte = 1;        break;    case I2C_FINISH:        if (s->len == 1)#ifdef VERBOSE            printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len);#endif        break;    default:        break;    }}static void max7310_save(QEMUFile *f, void *opaque){    struct max7310_s *s = (struct max7310_s *) opaque;    qemu_put_be32(f, s->i2c_command_byte);    qemu_put_be32(f, s->len);    qemu_put_8s(f, &s->level);    qemu_put_8s(f, &s->direction);    qemu_put_8s(f, &s->polarity);    qemu_put_8s(f, &s->status);    qemu_put_8s(f, &s->command);    i2c_slave_save(f, &s->i2c);}static int max7310_load(QEMUFile *f, void *opaque, int version_id){    struct max7310_s *s = (struct max7310_s *) opaque;    s->i2c_command_byte = qemu_get_be32(f);    s->len = qemu_get_be32(f);    qemu_get_8s(f, &s->level);    qemu_get_8s(f, &s->direction);    qemu_get_8s(f, &s->polarity);    qemu_get_8s(f, &s->status);    qemu_get_8s(f, &s->command);    i2c_slave_load(f, &s->i2c);    return 0;}static int max7310_iid = 0;static void max7310_gpio_set(void *opaque, int line, int level){    struct max7310_s *s = (struct max7310_s *) opaque;    if (line >= sizeof(s->handler) / sizeof(*s->handler) || line  < 0)        hw_error("bad GPIO line");    if (level)        s->level |= s->direction & (1 << line);    else        s->level &= ~(s->direction & (1 << line));}/* MAX7310 is SMBus-compatible (can be used with only SMBus protocols), * but also accepts sequences that are not SMBus so return an I2C device.  */struct i2c_slave *max7310_init(i2c_bus *bus){    struct max7310_s *s = (struct max7310_s *)            i2c_slave_init(bus, 0, sizeof(struct max7310_s));    s->i2c.event = max7310_event;    s->i2c.recv = max7310_rx;    s->i2c.send = max7310_tx;    s->gpio_in = qemu_allocate_irqs(max7310_gpio_set, s,                    sizeof(s->handler) / sizeof(*s->handler));    max7310_reset(&s->i2c);    register_savevm("max7310", max7310_iid ++, 0,                    max7310_save, max7310_load, s);    return &s->i2c;}qemu_irq *max7310_gpio_in_get(i2c_slave *i2c){    struct max7310_s *s = (struct max7310_s *) i2c;    return s->gpio_in;}void max7310_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler){    struct max7310_s *s = (struct max7310_s *) i2c;    if (line >= sizeof(s->handler) / sizeof(*s->handler) || line  < 0)        hw_error("bad GPIO line");    s->handler[line] = handler;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频线看| 香蕉久久一区二区不卡无毒影院| 亚洲免费av高清| 亚洲va欧美va人人爽午夜| 久久国产免费看| 欧美专区在线观看一区| 精品粉嫩超白一线天av| 亚洲国产日日夜夜| 国产·精品毛片| 欧美一卡2卡3卡4卡| 亚洲人成网站影音先锋播放| 国内偷窥港台综合视频在线播放| 色老综合老女人久久久| 日本一区二区视频在线观看| 日韩av在线免费观看不卡| gogogo免费视频观看亚洲一| 2019国产精品| 美女国产一区二区| 欧美色涩在线第一页| 亚洲欧洲日韩综合一区二区| 精一区二区三区| 欧美一区二区三区视频免费 | 欧美久久一二区| 综合欧美亚洲日本| 国产精品18久久久久久久网站| 91麻豆精品国产91久久久久| 一区二区欧美视频| 91麻豆自制传媒国产之光| 国产精品丝袜91| 国产91富婆露脸刺激对白| 久久久精品免费免费| 精品一区二区三区久久久| 日韩一级成人av| 免费高清成人在线| 日韩一区二区三区在线| 日本亚洲免费观看| 欧美一区二区美女| 美女在线一区二区| 欧美成人精品1314www| 美女视频免费一区| 精品成人在线观看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 在线不卡a资源高清| 亚洲成人动漫一区| 欧美精品vⅰdeose4hd| 久久精品国产一区二区| 日韩欧美一级在线播放| 久久国产精品99久久人人澡| 欧美岛国在线观看| 国产69精品一区二区亚洲孕妇| 中文一区在线播放| 91无套直看片红桃| 亚洲影视在线播放| 日韩三级.com| 国产精品1区2区3区在线观看| 欧美国产精品中文字幕| 91在线观看视频| 午夜婷婷国产麻豆精品| 精品国产自在久精品国产| 国产成人精品免费在线| 亚洲精品大片www| 91精品国产免费久久综合| 国模套图日韩精品一区二区| 国产精品国产三级国产普通话三级| 91在线视频免费91| 日本大胆欧美人术艺术动态| 精品国产91亚洲一区二区三区婷婷| 国产精品一级片| 一区2区3区在线看| 日韩欧美色综合| av中文字幕不卡| 午夜精品福利视频网站 | 在线观看欧美精品| 日韩在线a电影| 欧美高清在线视频| 欧美日韩国产成人在线免费| 国产精品一线二线三线精华| 亚洲黄色小视频| 亚洲精品一区在线观看| 色婷婷综合中文久久一本| 奇米一区二区三区| 最近日韩中文字幕| 日韩欧美一区在线观看| 色综合天天做天天爱| 久草中文综合在线| 一二三四社区欧美黄| 久久综合九色综合欧美就去吻| 在线观看日韩高清av| 丰满少妇在线播放bd日韩电影| 亚洲一区二区三区四区五区黄 | 欧美精品1区2区| av一区二区三区黑人| 麻豆精品视频在线| 一区二区免费在线| 中文字幕制服丝袜成人av| 精品国产123| 欧美一区二区三区四区高清| 欧美在线观看你懂的| 成人毛片在线观看| 极品美女销魂一区二区三区| 五月天丁香久久| 一区二区三区四区国产精品| 国产精品午夜久久| 久久久不卡影院| 精品久久久久久久人人人人传媒| 欧美主播一区二区三区美女| 99在线热播精品免费| 成人va在线观看| 高清成人在线观看| 国产一区二区精品久久91| 麻豆极品一区二区三区| 日韩激情一二三区| 午夜精品成人在线视频| 视频在线观看国产精品| 亚洲国产另类精品专区| 亚洲福利视频导航| 亚洲尤物视频在线| 亚洲国产精品久久久男人的天堂 | 成人综合婷婷国产精品久久免费| 久久99国产精品麻豆| 黄页视频在线91| 日韩 欧美一区二区三区| 五月天亚洲婷婷| 麻豆视频一区二区| 国产主播一区二区三区| 国产麻豆一精品一av一免费 | 天涯成人国产亚洲精品一区av| 亚洲在线中文字幕| 亚洲国产综合人成综合网站| 亚洲国产视频一区二区| 免费人成在线不卡| 精品一区二区免费看| 国产精品影视天天线| 成人黄色在线视频| 色乱码一区二区三区88| 欧美午夜片在线观看| 91麻豆精品国产91久久久久久 | 国产人伦精品一区二区| 国产欧美精品一区| 亚洲精品你懂的| 三级成人在线视频| 国产精品一区二区无线| www.激情成人| 欧美精品三级日韩久久| 精品美女一区二区三区| 中文字幕电影一区| 伊人色综合久久天天人手人婷| 亚洲成在线观看| 精品一区二区三区久久久| 91香蕉国产在线观看软件| 欧美一二三四区在线| 国产日韩三级在线| 亚洲电影激情视频网站| 久久99精品国产91久久来源| 91蜜桃网址入口| 日韩欧美美女一区二区三区| 国产精品久久午夜夜伦鲁鲁| 天天综合日日夜夜精品| 国产凹凸在线观看一区二区| 欧洲一区在线观看| 久久免费精品国产久精品久久久久| 亚洲欧洲精品一区二区精品久久久 | 欧美一区二区三区视频在线观看 | 欧美一区二区三区啪啪| 久久精品人人做人人综合| 一区二区国产视频| 丁香另类激情小说| 在线电影国产精品| 中文字幕在线观看不卡| 久久精品72免费观看| 色呦呦一区二区三区| 久久久综合九色合综国产精品| 亚洲在线视频网站| 春色校园综合激情亚洲| 日韩视频一区二区在线观看| 一区二区三区不卡视频在线观看| 国产成人免费视| 欧美成人vps| 亚洲成人自拍网| 91麻豆国产自产在线观看| 精品国产91久久久久久久妲己| 天堂在线一区二区| 一本大道久久a久久精品综合| 日本一区二区三区视频视频| 麻豆精品视频在线观看视频| 欧美揉bbbbb揉bbbbb| 中文字幕日韩精品一区| 国产乱人伦偷精品视频免下载| 91精品综合久久久久久| 亚洲小说春色综合另类电影| 色哟哟亚洲精品| 亚洲少妇中出一区| 成人黄色一级视频| 国产精品每日更新在线播放网址| 精品写真视频在线观看| 欧美一区二区免费| 免费看精品久久片| 日韩一区二区视频在线观看| 日韩成人dvd| 精品免费国产二区三区|