示例#1
0
void
hal_plf_pci_init(void)
{
#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM)
    HAL_PCI_RESET_ASSERT();
    HAL_PCI_CLOCK_DISABLE();

    // Set GPIO line direction
    HAL_GPIO_OUTPUT_ENABLE(PCI_CLK_GPIO);
    HAL_GPIO_OUTPUT_ENABLE(PCI_RESET_GPIO);
    HAL_GPIO_OUTPUT_DISABLE(PCI_INTA_GPIO);
    HAL_GPIO_OUTPUT_DISABLE(PCI_INTB_GPIO);
    HAL_GPIO_OUTPUT_DISABLE(PCI_INTC_GPIO);
    HAL_GPIO_OUTPUT_DISABLE(PCI_INTD_GPIO);

    // configure PCI interrupt lines for active low irq
    HAL_INTERRUPT_CONFIGURE(INTA, 1, 0);
    HAL_INTERRUPT_CONFIGURE(INTB, 1, 0);
    HAL_INTERRUPT_CONFIGURE(INTC, 1, 0);
    HAL_INTERRUPT_CONFIGURE(INTD, 1, 0);

    // wait 1ms to satisfy "minimum reset assertion time" of the PCI spec.
    HAL_DELAY_US(1000);
    HAL_PCI_CLOCK_CONFIG();
    HAL_PCI_CLOCK_ENABLE();

    // wait 100us to satisfy "minimum reset assertion time from clock stable" 
    // requirement of the PCI spec.
    HAL_DELAY_US(100);
    HAL_PCI_RESET_DEASSERT();
#endif
}
示例#2
0
static cyg_uint8
eeprom_getb(int more)
{
    int i;
    cyg_uint8 b = 0;

    HAL_GPIO_OUTPUT_DISABLE(GPIO_EEPROM_SDA);
    hal_delay_us(5);

    for (i = 7; i >= 0; i--) {
	b <<= 1;
	if (*IXP425_GPINR & (1 << GPIO_EEPROM_SDA))
	    b |= 1;
	CLK_HI();
	hal_delay_us(5);
	CLK_LO();
	hal_delay_us(5);
    }
    HAL_GPIO_OUTPUT_ENABLE(GPIO_EEPROM_SDA);
    if (more)
	DATA_LO();
    else
	DATA_HI();
    hal_delay_us(5);
    CLK_HI();
    hal_delay_us(5);
    CLK_LO();
    hal_delay_us(5);

    return b;
}
示例#3
0
static int
eeprom_putb(cyg_uint8 b)
{
    int i;

    for (i = 7; i >= 0; i--) {
	if (b & (1 << i))
	    DATA_HI();
	else
	    DATA_LO();
	CLK_HI();
	hal_delay_us(5);
	CLK_LO();
	hal_delay_us(5);
    }
    HAL_GPIO_OUTPUT_DISABLE(GPIO_EEPROM_SDA);
    CLK_HI();
    hal_delay_us(5);
    i = (*IXP425_GPINR & (1 << GPIO_EEPROM_SDA)) ? 0 : 1;
    CLK_LO();
    hal_delay_us(5);

    DATA_HI();
    HAL_GPIO_OUTPUT_ENABLE(GPIO_EEPROM_SDA);

    return i;
}
示例#4
0
//
// Platform specific initialization
//
void
plf_hardware_init(void)
{
    // GPIO(15) used for ENET clock
    HAL_GPIO_OUTPUT_ENABLE(15);
    *IXP425_GPCLKR |= GPCLKR_CLK1_ENABLE;
    *IXP425_GPCLKR |= GPCLKR_CLK1_PCLK2;

    HAL_GPIO_OUTPUT_SET(GPIO_EEPROM_SCL);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_EEPROM_SCL);

    HAL_GPIO_OUTPUT_SET(GPIO_EEPROM_SDA);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_EEPROM_SDA);

    // ENET-0 IRQ line
    HAL_GPIO_OUTPUT_DISABLE(GPIO_ENET0_INT_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_ETH0, 1, 0);

    // ENET-1 IRQ line
    HAL_GPIO_OUTPUT_DISABLE(GPIO_ENET1_INT_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_ETH1, 1, 0);

    // HSS IRQ lines
    HAL_GPIO_OUTPUT_DISABLE(GPIO_HSS0_INT_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_HSS0, 1, 0);
    HAL_GPIO_OUTPUT_DISABLE(GPIO_HSS1_INT_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_HSS1, 1, 0);

    // DSL IRQ line
    HAL_GPIO_OUTPUT_DISABLE(GPIO_DSL_INT_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_DSL, 1, 0);

    *IXP425_EXP_CS4 = (EXP_ADDR_T(3) | EXP_SETUP_T(3) | EXP_STROBE_T(15) | EXP_HOLD_T(3) | \
		       EXP_RECOVERY_T(15) | EXP_SZ_512 | EXP_WR_EN | EXP_CS_EN);
    *IXP425_EXP_CS5 = (EXP_ADDR_T(3) | EXP_SETUP_T(3) | EXP_STROBE_T(15) | EXP_HOLD_T(3) | \
		       EXP_RECOVERY_T(15) | EXP_SZ_512 | EXP_WR_EN | EXP_CS_EN);

#ifdef CYGPKG_IO_PCI
    extern void hal_plf_pci_init(void);
    hal_plf_pci_init();
#endif
}
示例#5
0
void
plf_hardware_init(void)
{
    // POWER_FAIL IRQ
    HAL_GPIO_OUTPUT_DISABLE(GPIO_PWR_FAIL_IRQ_N);   
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_PWR_FAIL, 1, 0);

    // DSL IRQ
    HAL_GPIO_OUTPUT_DISABLE(GPIO_DSL_IRQ_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_DSL, 1, 0);

    // SLIC_A IRQ
    HAL_GPIO_OUTPUT_DISABLE(GPIO_SLIC_A_IRQ_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_SLIC_A, 1, 0);

    // SLIC_B IRQ
    HAL_GPIO_OUTPUT_DISABLE(GPIO_SLIC_B_IRQ_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_SLIC_B, 1, 0);

    // DSP IRQ
    HAL_GPIO_OUTPUT_DISABLE(GPIO_DSP_IRQ_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_DSP, 1, 0);

    // IDE IRQ
    HAL_GPIO_OUTPUT_DISABLE(GPIO_IDE_IRQ_N);
    HAL_INTERRUPT_CONFIGURE(CYGNUM_HAL_INTERRUPT_IDE, 1, 0);

    // IO RESET_N  (DSP/SLICs)
    HAL_GPIO_OUTPUT_SET(GPIO_IO_RESET_N);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_IO_RESET_N);
    
    // SPI_CS1_N
    HAL_GPIO_OUTPUT_SET(GPIO_SPI_CS1_N);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_SPI_CS1_N);   // Eth PHY

    // SPI_CS0_N
    HAL_GPIO_OUTPUT_SET(GPIO_SPI_CS0_N);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_SPI_CS0_N);   // SLICs

    // SPI_SCK
    HAL_GPIO_OUTPUT_CLEAR(GPIO_SPI_SCK);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_SPI_SCK);

    // SPI_SDI
    HAL_GPIO_OUTPUT_CLEAR(GPIO_SPI_SDI);
    HAL_GPIO_OUTPUT_ENABLE(GPIO_SPI_SDI);

    // SPI_SDI
    HAL_GPIO_OUTPUT_DISABLE(GPIO_SPI_SDI);

#ifdef CYGPKG_IO_PCI
    extern void hal_plf_pci_init(void);
    hal_plf_pci_init();
#endif
}