FreeBSD/sys/dev/isci/scil/scic_sds_controller.c
/**
 * This method will initialize the arlington through the LEX_BAR.
 *
 * @param this_controller
 */
This method will initialize the arlington through the LEX_BAR.
This method will initialize the arlington through the LEX_BAR .
void scic_sds_controller_lex_atux_initialization(
   SCIC_SDS_CONTROLLER_T *this_controller
)
{
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0020FFFF) ;
   lex_register_write(
      this_controller, this_controller->lex_registers + 0xC0, 0x00000700);
   scic_sds_controller_lex_status_read_fence(this_controller);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x70, 0x00000002);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0xC0, 0x00000300);
   scic_sds_controller_lex_status_read_fence(this_controller);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0000FFFF);
   scic_sds_controller_afe_initialization(this_controller);
   scic_sds_controller_lex_status_read_fence(this_controller);
#if 0
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0000FFFF);
#endif
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0040FFFF) ;
   scic_sds_controller_afe_initialization(this_controller);
   scic_sds_controller_lex_status_read_fence(this_controller);
#if 0
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0040FFFF) ;
#endif
   lex_register_write(
      this_controller, this_controller->lex_registers + 0xC0, 0x00000100);
   scic_sds_controller_lex_status_read_fence(this_controller);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0xC0, 0x00000000);
   scic_sds_controller_lex_status_read_fence(this_controller);
#if !defined(DISABLE_INTERRUPTS)
   lex_register_write(
      this_controller, this_controller->lex_registers + 0xC0, 0x00000800);
   scic_sds_controller_lex_status_read_fence(this_controller);
#endif
#if 0
   lex_register_write(
      this_controller, this_controller->lex_registers + 0xC0, 0x27800000);
#endif
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0000FF77);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0000FF55);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0000FF11);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0000FF00);
   lex_register_write(
      this_controller, this_controller->lex_registers + 0x28, 0x0003FF00);
}
void scic_sds_controller_lex_atux_initialization ( SCIC_SDS_CONTROLLER_T * this_controller ) { lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0020FFFF ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0xC0 , 0x00000700 ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0x70 , 0x00000002 ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0xC0 , 0x00000300 ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0000FFFF ) ; scic_sds_controller_afe_initialization ( this_controller ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; #if 0 lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0000FFFF ) ; #endif lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0040FFFF ) ; scic_sds_controller_afe_initialization ( this_controller ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; #if 0 lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0040FFFF ) ; #endif lex_register_write ( this_controller , this_controller -> lex_registers + 0xC0 , 0x00000100 ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0xC0 , 0x00000000 ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; #if ! defined ( DISABLE_INTERRUPTS ) lex_register_write ( this_controller , this_controller -> lex_registers + 0xC0 , 0x00000800 ) ; scic_sds_controller_lex_status_read_fence ( this_controller ) ; #endif #if 0 lex_register_write ( this_controller , this_controller -> lex_registers + 0xC0 , 0x27800000 ) ; #endif lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0000FF77 ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0000FF55 ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0000FF11 ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0000FF00 ) ; lex_register_write ( this_controller , this_controller -> lex_registers + 0x28 , 0x0003FF00 ) ; }
This method will initialize the arlington through the LEX_BAR.
This method will initialize the arlington through the LEX_BAR .
// 1. Reset all SCU PHY // 2. Write to LEX_CTRL // 3. Enable PCI Master // 4. Enable SCU Register Clock Domain // 5.1 Release PHY-A Reg Reset // 5.2 Initialize the AFE for PHY-A // 5.3 Release PHY Reg Reset // 6.1 Release PHY-B Reg Reset // 6.2 Initialize the AFE for PHY-B // 6.3 Release PHY-B Reg Reset // 7. Enable SCU clock domaion // 8. Release LEX SCU Reset // 8a. Set legacy interrupts (SCU INTx to PCI-x INTA) // 9. Override TXOLVL //write to lex_ctrl // 10. Release PHY-A & PHY-B Resets