Re: Mycable XXS board

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bruno, Hi group!

There is a separate power switch on the mycable XXS1500 Board:

1. GPIO1  switch on UART3
2.  Enable UART3
3.  Set DTR from UART3 to low-level

The voltage switch for USB is controlled by the unused DTR line of the Au1500.

below the code we use with QNX for this procedure:

/*-------------------------------------------------------------------------*/
/* */
/* main */
/* */
/* action: enable and start AU1500 onchip USB controller */
/* */
/* passing param. : -none- */
/* global param. : -none- */
/* return param. : -none- */
/* */
/* programmer : JR */
/* */
/* 04.03.03 JR : build this function */
/* */
/*-------------------------------------------------------------------------*/


int main(int argc, char *argv[]) {
volatile uint32_t *sysctrlptr;
volatile uint32_t *uart3_mdmptr;
volatile uint32_t *usb_baseptr;
printf("Prepare AU1500 onchip USB host controller\n");
printf(" map memory\n");
sysctrlptr = mmap_device_memory(NULL, 1000, PROT_READ|PROT_WRITE|PROT_NOCACHE, 0, 0x011900000);
if ( sysctrlptr == MAP_FAILED ) {
perror( "couldn't map sysctrl mem.\n" );
exit( EXIT_FAILURE );
}
uart3_mdmptr = mmap_device_memory(NULL, 1000, PROT_READ|PROT_WRITE|PROT_NOCACHE, 0, 0x011400000);
if ( uart3_mdmptr == MAP_FAILED ) {
perror( "couldn't map uart3 mem.\n" );
exit( EXIT_FAILURE );
}
usb_baseptr = mmap_device_memory(NULL, 0x80000, PROT_READ|PROT_WRITE|PROT_NOCACHE, 0, 0x010100000);
if ( usb_baseptr == MAP_FAILED ) {
perror( "couldn't map usb mem.\n" );
exit( EXIT_FAILURE );
}


// configure some multiple use pins for UART3
sysctrlptr[0x2c/4] |= (1 << 7); // sys_pinctrl
printf(" power on\n");
uart3_mdmptr[0x100/4] |= 0x01; // CE
delay(10);
uart3_mdmptr[0x100/4] |= 0x03; // CE | EN
delay(10);
uart3_mdmptr[0x18/4] |= 0x01; // power on
// enable usb OCHI controller
usb_baseptr[0x7fffc/4] = 0x08; // CE
delay(10);
usb_baseptr[0x7fffc/4] = 0x0c ; // CE | EN
delay(10);
// clear HCFS bits in HcControl
usb_baseptr[0x0004/4] = 0x00; while ((usb_baseptr[0x7fffc/4] & 0x10) == 0); // wait for reset done
printf(" USB OHCI ver. 0x%x\n", usb_baseptr[0]);
return EXIT_SUCCESS;
}


Tiemo

--
-------------------------------------------------------
Tiemo Krueger       Tel:  +49 48 73 90 19 86
mycable GmbH        Fax: +49 48 73 90 19 76
Boeker Stieg 43
D-24613 Aukrug      eMail: tk@mycable.de

Public Kryptographic Key is available on request
-------------------------------------------------------


Pete Popov wrote:


On Tue, 2003-03-11 at 02:30, Bruno Randolf wrote:


On Friday 07 March 2003 22:54, Dan Malek wrote:



That's what I wanted to clarify. Are we discussing one of the on-chip
peripheral USB controllers of the Au1xxx, or is it a PCI USB controller
that was plugged into the Au1500. In the case of the on-chip controller,
there aren't any interrupt routing problems, it's identical (and the same
code) on all Au1xxx boards.


we are discussing the on-chip USB controller for the mycable board. and its little endian...

any ideas where the assignment errors could come from in this case?



There wouldn't be any. So the problem is not irq assignment related.


I'm not what to suggest here but it feels like it might be a hardware
issue.  Try adding some printks (the abatron bdi jtag debugger works
great if you have one) and narrow down what's going on. Do you have any
jumpers on the board that are not setup correctly?


Pete








--
-------------------------------------------------------
Tiemo Krueger       Tel:  +49 48 73 90 19 86
mycable GmbH        Fax: +49 48 73 90 19 76
Boeker Stieg 43
D-24613 Aukrug      eMail: tk@mycable.de

Public Kryptographic Key is available on request
-------------------------------------------------------




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux