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; }
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"); }
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); }