小磷光一

USB模式下控制器驱动

0
阅读(3338)

 

struct string_descriptor product_string_descriptor = {
	sizeof(struct string_descriptor),
	STRING_DESCRIPTOR,
	's',
	0,
	't',
	0,
	'a',
	0,
	'r',
	0,
	't',
	0,
	'-',
	0,
	'k',
	0,
	'i',
	0,
	't',
	0,
};


struct usb_dev {
	void *controler;
	struct device_request dev_request;
	void *priv_data;
	
	void (*set_address)(void *controler, int addr);
	void (*enable_address)(void *controler);
};

static void dc_set_address(struct isp1362 *isp1362, int addr)
{
	int tmp = 0;
	
	tmp = isp1362_read_reg16(isp1362, DC_RD_ADDR_REG);
	tmp &= 0x80;
	tmp |= addr;
	isp1362_write_reg16(isp1362, DC_WR_ADDR_REG, tmp);
}

static void dc_enable_address(struct isp1362 *isp1362)
{
	int tmp = 0;
	
	tmp = isp1362_read_reg16(isp1362, DC_RD_ADDR_REG);
	tmp |= 0x80;
	isp1362_write_reg16(isp1362, DC_WR_ADDR_REG, tmp);
}

static void dc_disable_address(struct isp1362 *isp1362)
{
	int tmp = 0;
	
	tmp = isp1362_read_reg16(isp1362, DC_RD_ADDR_REG);
	tmp &= ~0x80;
	isp1362_write_reg16(isp1362, DC_WR_ADDR_REG, tmp);
}

static void dc_soft_connect(struct isp1362 *isp1362)
{
	int tmp = 0;
	
	tmp = isp1362_read_reg16(isp1362, DC_RD_MODE);
	tmp |= 0x09;//enable all interrupt
	isp1362_write_reg16(isp1362, DC_WR_MODE, tmp);
}