示例#1
0
static int flash_program(struct flash_device *dev, ulong start_addr, ulong end_addr, u8 *data_addr)
{
	int i;
	u8 *p = data_addr;

	if(!param_check(dev, start_addr, end_addr))
		return 0;
	
	/*we always use 8-bits flash till now, if new flash use 16/24-bits,change here*/

	if(dev->type != 8){
		dprintf("not support 16/24-bits flash now!\n");
		return 0;
	}

	end_addr -= dev->vaddr;	
	start_addr -= dev->vaddr;

	{
		dprintf("starting program flash ...\n");	
		dprintf("start addr is %x, end addr is %x\n",start_addr, end_addr);	
		for(i = start_addr; i <= end_addr; i++){
			dev->ops->flash_program(dev, i, *p++);	
			while(dev->ops->flash_program_busy(dev, i)){
				poll_output(100);	
				udelay(10);
			}
		}
		dprintf("program done!\n");	
		return 1;
	}
	return 0;
}
示例#2
0
void main(void)
{
	int i;
	struct flash_device flash_dev;

	init_cpu_freq();
	delay(1000);

	i = bootflash_init(&flash_dev);
	if(i == 0)
		early_printf("error\n");
	flash_dev.ops->flash_erase_chip(&flash_dev);

#if 0
	flash_dev.ops->flash_program(&flash_dev, 0, 0xf0);
	flash_dev.ops->flash_program(&flash_dev, 0, 0x0f);
	
	flash_dev.ops->flash_program(&flash_dev, 1, 0x00);

	flash_dev.ops->flash_program(&flash_dev, 2, 0xf0);

	flash_dev.ops->flash_program(&flash_dev, 3, 0xf0);
	flash_dev.ops->flash_program(&flash_dev, 3, 0xc0);
	flash_dev.ops->flash_program(&flash_dev, 3, 0x80);
#endif
	while(1)
		poll_output(1000000);

	printf("cpu freq is %d\n", cpu_freq);
	while(1);
	asm (".set mips3\n dli $2, 0xffffffffbfc00000;jalr $2":::"$2");
}
示例#3
0
unsigned int DMAbuf_poll(struct file * file, int dev, poll_table *wait)
{
	struct audio_operations *adev = audio_devs[dev];
	poll_wait(file, &adev->poll_sleeper, wait);
	return poll_input(file, dev, wait) | poll_output(file, dev, wait);
}