@ -96,7 +96,6 @@ static uint16_t pio_tA[NR_PIO_SPECS] = { 50, 50, 50, 50, 50 };
# define REG2OFF(reg) ((((uint32_t)reg) & 0x3) * 8)
static void set_ata_bus_timing ( unsigned char mode )
{
uint32_t val ;
uint32_t T = 1000000000 / mxc_get_clock ( MXC_IPG_CLK ) ;
struct mxc_ata_config_regs * ata_regs ;
@ -106,22 +105,19 @@ static void set_ata_bus_timing(unsigned char mode)
return ;
/* Write TIME_OFF/ON/1/2W */
val = ( 3 < < REG2OFF ( & ata_regs - > time_off ) ) |
( 3 < < REG2OFF ( & ata_regs - > time_on ) ) |
( ( ( pio_t1 [ mode ] + T ) / T ) < < REG2OFF ( & ata_regs - > time_1 ) ) |
( ( ( pio_t2_8 [ mode ] + T ) / T ) < < REG2OFF ( & ata_regs - > time_2w ) ) ;
writel ( val , & ata_regs - > time_off ) ;
writeb ( 3 , & ata_regs - > time_off ) ;
writeb ( 3 , & ata_regs - > time_on ) ;
writeb ( ( pio_t1 [ mode ] + T ) / T , & ata_regs - > time_1 ) ;
writeb ( ( pio_t2_8 [ mode ] + T ) / T , & ata_regs - > time_2w ) ;
/* Write TIME_2R/AX/RDX/4 */
val = ( ( ( pio_t2_8 [ mode ] + T ) / T ) < < REG2OFF ( & ata_regs - > time_2r ) ) |
( ( ( pio_tA [ mode ] + T ) / T + 2 ) < < REG2OFF ( & ata_regs - > time_ax ) ) |
( 1 < < REG2OFF ( & ata_regs - > time_pio_rdx ) ) |
( ( ( pio_t4 [ mode ] + T ) / T ) < < REG2OFF ( & ata_regs - > time_4 ) ) ;
writel ( val , & ata_regs - > time_2r ) ;
writeb ( ( pio_t2_8 [ mode ] + T ) / T , & ata_regs - > time_2r ) ;
writeb ( ( pio_tA [ mode ] + T ) / T + 2 , & ata_regs - > time_ax ) ;
writeb ( 1 , & ata_regs - > time_pio_rdx ) ;
writeb ( ( pio_t4 [ mode ] + T ) / T , & ata_regs - > time_4 ) ;
/* Write TIME_9 ; the rest of timing registers is irrelevant for PIO */
val = ( ( ( pio_t9 [ mode ] + T ) / T ) < < REG2OFF ( & ata_regs - > time_9 ) ) ;
writel ( val , & ata_regs - > time_9 ) ;
writeb ( ( pio_t9 [ mode ] + T ) / T , & ata_regs - > time_9 ) ;
}
int ide_preinit ( void )