Get Started. It's Free
or sign up with your email address
Synology by Mind Map: Synology

1. 2008/05 backplane.c

1.1. gblSupportRaid = TRUE

1.2. manutild or scemd or --help

1.2.1. return

1.3. (2,6,15)

1.3.1. Fan, disk, volumn

1.4. SYNOSupportUart2()

1.4.1. open & config

1.5. 檢查完成/main開始

1.6. timer get&set

1.7. cashe enable

2. 2009/03 Marvell BSP 422

2.1. 3/18了解流程

2.1.1. module

2.1.1.1. Scsi_Host_Template driver_template=SynoMvSata;

2.1.1.2. module_init(mv_ial_init);

2.1.1.2.1. mv_ial_init() (決定 7042 & 6281 的順序)

2.1.1.3. module_exit(mv_ial_exit);

2.1.1.3.1. mv_ial_exit()

2.1.1.4. MODULE_DEVICE_TABLE(pci,mvSata_pci_table);

2.1.2. #define SynoMvSata

2.1.2.1. #define SynoMvSata \ { \ module: THIS_MODULE,\ proc_name: "mvSata", /* proc_name */ \ proc_info: mv_ial_ht_proc_info, /*proc info fn */ \ slave_configure: mv_ial_ht_slave_configure,\ name: "Marvell SCSI to SATA adapter", /*name*/ \ release: mv_ial_ht_release, /*release fn*/ \ queuecommand: mv_ial_ht_queuecommand, /*queuecommand fn*/ \ bios_param: NULL /*mv_ial_ht_biosparam*/,/*bios fn*/ \ eh_device_reset_handler: NULL/*mv_ial_ht_dev_reset*/, \ eh_bus_reset_handler: mv_ial_ht_bus_reset, \ eh_abort_handler: mv_ial_ht_abort, \ can_queue: MV_SATA_SW_QUEUE_SIZE, /* unlimited */ \ this_id: MV_SATA_PM_MAX_PORTS, /*set by detect*/ \ sg_tablesize: 64, /*sg_tablesize*/ \ max_sectors: 256, \ cmd_per_lun: MV_SATA_SW_QUEUE_SIZE, /*cmd_per_lun*/ \ unchecked_isa_dma: 0, /*32-Bit Busmaster*/\ emulated: 1, /* not real scsi adapter */ \ SYNO_INDEX_GET \ SYNO_SHUTDOWN_PORT \ shost_attrs: mvSata_shost_attrs, \ use_clustering: ENABLE_CLUSTERING /*use_clustering*/ \ }

2.1.2.1.1. mv_ial_ht_bus_reset()

2.1.2.1.2. mv_ial_ht_queuecommand()

2.1.2.1.3. mv_ial_ht_abort()

2.1.2.1.4. mv_ial_ht_release()

2.1.2.1.5. SYNO_SHUTDOWN_PORT =syno_mvSata_port_power_ctl

2.1.2.2. #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) #define mvSata \ { \ proc_name: "mvSata", /* proc_name */ \ proc_info: mv_ial_ht_proc_info24, /*proc info fn */ \ select_queue_depths: NULL, \ name: "Marvell SCSI to SATA adapter", /*name*/ \ detect: mv_ial_ht_detect, /*detect fn*/ \ release: mv_ial_ht_release, /*release fn*/ \ 。。。

2.1.2.2.1. mv_ial_ht_detect()

2.1.2.2.2. mv_ial_ht_release()

2.1.3. pci_driver mv_ial_pci_driver

2.1.3.1. pci_driver mv_ial_pci_driver = { .name = mv_hot_plug_name, .id_table = mvSata_pci_table, .probe = mv_ial_probe_device, .remove = __devexit_p(mv_ial_remove_device), };

2.1.3.1.1. mv_ial_probe_device()

2.1.3.1.2. mv_ial_remove_device()

2.2. The Role

2.2.1. SCSI host

2.2.2. SATA Adapter

2.2.2.1. channel

2.2.2.1.1. SATA device

2.2.2.1.2. port multiplier

2.3. The Data Structure (*.h)

2.3.1. IAL_ADAPTER_T

2.3.1.1. MV_SATA_ADAPTER

2.3.1.1.1. MV_SATA_CHANNEL

2.3.1.2. IALHost[]

2.3.1.3. pci_dev

2.3.1.4. MV_IAL_COMMON_ADAPTER_EXTENSION

2.3.1.4.1. MV_SATA_ADAPTER

2.3.1.4.2. MV_ADAPTER_STATE

2.3.1.4.3. MV_CHANNEL_STATE[]

2.3.1.4.4. MV_IAL_COMMON_CHANNEL_EXTENSION[]

2.3.1.5. MV_SAL_ADAPTER_EXTENSION

2.3.1.5.1. MV_SATA_SCSI_DRIVE_DATA[][]

2.3.1.5.2. MV_SATA_SCSI_CMD_BLOCK

2.3.1.5.3. MV_SATA_SCSI_DRIVE_DATA

2.4. CLASS_DEVICE_ATTR(syno_pm_gpio, S_IRUGO | S_IWUGO, syno_pm_gpio_show, syno_pm_gpio_store);

2.4.1. syno_pm_gpio_show()

2.4.1.1. defer_gpio_cmd()

2.4.2. syno_pm_gpio_store()