Example #1
0
static void hplj_restart(void)
{
	if (GetAsicId() == AndrosAsic)
		*((volatile unsigned int *) 0xbfe900c0) = 0;


	if (GetAsicId() == HarmonyAsic)
		*((volatile unsigned int *) 0xbff62030) = 0;

	printk("Restart Failed ... halting instead\n");
	while (1);
}
Example #2
0
int putDebugChar(char c)
{
	if (GetAsicId() == HarmonyAsic) {
		while (!( ( (H_HPSR_STAT) & H_SER_STAT_TX_EMPTY) != 0));

		H_HPSR_DATA_TX = (unsigned int) c;

	} else if (GetAsicId() == AndrosAsic) {
        	while (((SERIAL_REG(HPSR_TX_STAT_OFFSET) & HPSR_TX_STAT_READY) == 0))
             		;
        	SERIAL_REG(HPSR_DATA_OFFSET) = (unsigned int) c;
        } 
	return 1;
}
Example #3
0
char getDebugChar(void)
{
	if (GetAsicId() == HarmonyAsic) {
		while (!(((H_HPSR_STAT) & H_SER_STAT_RX_EMPTY) == 0));

	        return H_HPSR_DATA_RX;
        
	} else if (GetAsicId() == AndrosAsic) {
        	while ((SERIAL_REG(HPSR_RX_STAT_OFFSET) & HPSR_RX_DATA_AVAIL) == 0)
              		;

        	return (SERIAL_REG(HPSR_DATA_OFFSET));

	}
}
Example #4
0
const char* const GetAsicName(void)
{
   static const char* const Names[] = 
        { "Illegal", "Unknown", "Andros", "Harmony" };

   return Names[(int)GetAsicId()];
}
Example #5
0
static void __init hp_time_init(struct irqaction *irq)
{
	timer_interrupt_service = irq->handler;

	if (GetAsicId() == AndrosAsic) {
		//*((volatile unsigned int*)0xbfe90000) = 0x2f;  // set by bootloader to 0x20              // prescaler
		*((volatile unsigned int *) 0xbfe90040) = 0x21;	// 20-res of 1kHz,1-int ack                // control
		*((volatile unsigned int *) 0xbfe90048) = 0x09;	// 09-reload val                          // reload
		*((volatile unsigned int *) 0xbfe90044) = 0x09;	// 09-count val                           // count
		*((volatile unsigned int *) 0xbfe90040) = 0x2f;	// 8-int enable,4-reload en,2-count down en,1-int-ack

		irq->handler = andros_timer_interrupt;
		irq->flags |= SA_INTERRUPT | SA_SHIRQ;
		printk("setting up timer in hp_time_init\n");
		setup_irq(ASIC_IRQ_NUMBER, irq);

		// enable timer interrupt
		*((volatile unsigned int *) 0xbfea0000) = 0x20;

	} else if (GetAsicId() == HarmonyAsic) {

		*((volatile unsigned int *) 0xbff61000) = 99;	// prescaler, 100Mz sys clk
		*((volatile unsigned int *) 0xbff61028) = 0x09;	// reload reg
		*((volatile unsigned int *) 0xbff61024) = 0x09;	// count reg
		*((volatile unsigned int *) 0xbff61020) = 0x0b;	// 80-1khz res on timer, 2 reload en, 1 - count down en

		irq->handler = harmony_timer_interrupt;
		irq->flags |= SA_INTERRUPT | SA_SHIRQ;
		setup_irq(ASIC_IRQ_NUMBER, irq);

		*((volatile unsigned int *) 0xbff610a0) |= 1;	// turn on timer0

	} else if (GetAsicId() == UnknownAsic)
		printk("Unknown asic in hp_time_init()\n");
	else
		printk("Unsupported asic in hp_time_init()\n");
}