Esempio n. 1
0
void spin_lock(spin_lock_t *lock)
{
	disable_irqs();
#ifdef CONFIG_SMP
	do {
		if (!lock->value) {
			lock->value = 1;
			lock->cpu = get_cpu_id();
			break;
		}
	} while (1);
#endif
}
Esempio n. 2
0
static int load_from_usb(unsigned *_len, struct usb *usb)
{
	unsigned len, n;
	enable_irqs();

	usb_queue_read(usb, &len, 4);
	usb_write(usb, &MSG, 4);
	n = usb_wait_read(usb);
	if (n)
		return -1;

	if (usb_read(usb, (void*) CONFIG_ADDR_DOWNLOAD, len))
		return -1;

	usb_close(usb);

	disable_irqs();
	*_len = len;
	return 0;
}
int usb_read_bootloader(int *_len) {
	long len = 0;
	int n = 0;
	unsigned long offset = (CFG_LOADADDR -0x120);
	static unsigned MSG = 0xaabbccdd;

	/*Enable USB mux pin cfg  enable USB clock */	
	enable_irqs();
	if (usb_open(&usbdev))
		return -1;

	usb_queue_read(&usbdev, &len, 4);
	printf("USB write MSG flag\n");
	usb_write(&usbdev, &MSG, 4);
	n = usb_wait_read(&usbdev);
	if (n)
		return -1;
	printf("USB read to %x len=%d\n", offset, len);
	if (usb_read(&usbdev, (void*) offset, len))
		return -1;

	/* read the img file */
	usb_queue_read(&usbdev, &len, 4);
	n = usb_wait_read(&usbdev);
	if (n)
		return -1;

	/* read the boot.img for booti command */
	printf("USB read2 to %x len=%d\n", 0x81000000, len);
	if (usb_read(&usbdev, (void*) 0x81000000, len))
		return -1;

	usb_close(&usbdev);
	disable_irqs();
	*_len = len;
	return 0;
}