gpio = gpio_read(); 
gpio = gpio_read(); 
static void miro_pinnacle_gpio(struct bttv *btv){	int id,msp,gpio;	char *info;	gpio_inout(0xffffff, 0);        gpio = gpio_read();	id   = ((gpio>>10) & 63) -1;	msp  = bttv_I2CRead(btv, I2C_MSP3400, "MSP34xx");	if (id < 32) {		btv->tuner_type = miro_tunermap[id];		if (0 == (gpio & 0x20)) {			btv->has_radio = 1;			if (!miro_fmtuner[id]) {				btv->has_matchbox = 1;				btv->mbox_we    = (1<<6);				btv->mbox_most  = (1<<7);				btv->mbox_clk   = (1<<8);				btv->mbox_data  = (1<<9);				btv->mbox_mask  = (1<<6)|(1<<7)|(1<<8)|(1<<9);			}		} else {			btv->has_radio = 0;		}		if (-1 != msp) {			if (btv->c.type == BTTV_BOARD_MIRO)				btv->c.type = BTTV_BOARD_MIROPRO;			if (btv->c.type == BTTV_BOARD_PINNACLE)				btv->c.type = BTTV_BOARD_PINNACLEPRO;		}		printk(KERN_INFO		       "bttv%d: miro: id=%d tuner=%d radio=%s stereo=%s\n",		       btv->c.nr, id+1, btv->tuner_type,		       !btv->has_radio ? "no" :		       (btv->has_matchbox ? "matchbox" : "fmtuner"),		       (-1 == msp) ? "no" : "yes");	} else {		/* new cards with microtune tuner */		id = 63 - id;		btv->has_radio = 0;		switch (id) {		case 1:			info = "PAL / mono";			break;		case 2:			info = "PAL+SECAM / stereo";			btv->has_radio = 1;			break;		case 3:			info = "NTSC / stereo";			btv->has_radio = 1;			break;		case 4:			info = "PAL+SECAM / mono";			break;		case 5:			info = "NTSC / mono";			break;		case 6:			info = "NTSC / stereo";			break;		case 7:			info = "PAL / stereo";			break;		default:			info = "oops: unknown card";			break;		}		if (-1 != msp)			btv->c.type = BTTV_BOARD_PINNACLEPRO;		printk(KERN_INFO		       "bttv%d: pinnacle/mt: id=%d info=\"%s\" radio=%s\n",		       btv->c.nr, id, info, btv->has_radio ? "yes" : "no");		btv->tuner_type  = 33;		btv->pinnacle_id = id;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4ac97914c6c35f6bf132071c718e034d0846b9f5/bttv-cards.c/buggy/drivers/media/video/bttv-cards.c