Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

Synology by Mind Map: Synology
0.0 stars - 0 reviews range from 0 to 5

Synology

2008/05 backplane.c

gblSupportRaid = TRUE

manutild or scemd or --help

return

(2,6,15)

Fan, disk, volumn

SYNOSupportUart2()

open & config

檢查完成/main開始

timer get&set

cashe enable

2009/03 Marvell BSP 422

3/18了解流程

module, Scsi_Host_Template driver_template=SynoMvSata;, module_init(mv_ial_init);, mv_ial_init() (決定 7042 & 6281 的順序), mv_ial_init_log(), driver_template.module=THIS_MODULE;, pci_register_driver(&mv_ial_pci_driver), mvCtrlPwrClckGet(), mv_ial_init_soc_sata(), mvAdapterStartInitialization(), request_irq(SATA_IRQ_NUM, mv_ial_lib_int_handler,, module_exit(mv_ial_exit);, mv_ial_exit(), mv_ial_remove_device(), pci_unregister_driver(), MODULE_DEVICE_TABLE(pci,mvSata_pci_table);

#define SynoMvSata, #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*/ \ }, mv_ial_ht_bus_reset(), mvSataDisableChannelDma(), mvSataFlushDmaQueue(), mvSataChannelHardReset(), mvRestartChannel(), funcSYNOSendEboxRefreshEvent(), mv_ial_block_requests(), mv_ial_lib_get_first_cmnd(), mv_ial_ht_queuecommand(), mvExecuteScsiCommand(), mvSataExecuteScsiCommand(), switch(), mvScsiAtaSendDataCommand(), checkLBAOutOfRange(), reportScbCompletion(), pScb->completionCallBack(), mvSataQueueCommand(), checkQueueCommandResult(), mvSataNumOfDmaCommands(), mvScsiAtaGetInquiryData(), mvScsiAtaTestUnitReady(), mvScsiAtaModeSelect(), mvScsiAtaGetModeSenseData(), mvScsiAtaSendVerifyCommand(), mvScsiAtaGetReadCapacityData(), mvScsiAtaGetReadCapacity16Data(), mvScsiAtaGetRequestSenseData(), mvScsiAtaReportLuns(), mv_ial_ht_abort(), mvRestartChannel(), mv_ial_block_requests(), scsi_report_bus_reset(), mv_ial_lib_do_done(), mv_ial_ht_release(), SYNO_SHUTDOWN_PORT =syno_mvSata_port_power_ctl, #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*/ \ 。。。, mv_ial_ht_detect(), mv_ial_probe_device(), mv_ial_ht_release()

pci_driver mv_ial_pci_driver, 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), };, mv_ial_probe_device(), mvAdapterStartInitialization(), mvAdapterStateMachine(), switch(), mvSataEnableStaggeredSpinUpAll(), SYNOEstablishSataCommAll(), for(), SYNO_CTRL_HDD_POWERON() (僅為了供 DS209 之第二顆硬碟), _channelHardReset(), SYNOHWReset(), SleepForHD(), SleepForHDAdditional(), for(), _establishSataComm(), mvChannelStateMachine(), switch(), mvChannelNotConnectedStateHandler(), mvChannelConnectedStateHandler(), IALInitChannel(), mv_ial_lib_init_channel(), ResubmitMvCommand(), mvStopChannel(), IALReleaseChannel(), mvChannelInSrstStateHandler() (in Soft Reset state ?), mvPMEstablishSataComm(), mvConfigurePMDevice(), syno_prepare_custom_info(), syno_mvSata_pmp_write_gpio(), syno_pm_device_info_set(), syno_pm_is_3726(), SynoMVQueuePMAccessRegisterCommand(), SynoExtCallBack =SynoMVPMCommandCompletionCB(), =SynoMVPMCommandAbnormalCompletionCB(), mvPMDevWriteReg(), mvOsSemTake(), _PMAccessReg(), executeNonUDMACommand(), _setActivePMPort(), disableStorageDevInterrupt(), MV_REG_WRITE_BYTE(), waitWhileStorageDevIsBusy(), waitForDRQ(), for(), enableStorageDevInterrupt(), dumpAtaDeviceRegisters(), mvOsSemRelease(), if(), syno_mvSata_pmp_read_gpio(), syno_pm_device_info_set(), mvPMDevReadReg, if(), SynoMVQueuePMAccessRegisterCommand, mvPMDevReadReg(), syno_mvSata_pm_power_ctl(), syno_pm_unique_pkg_init(), syno_mvSata_is_synology_pm(), syno_mvSata_is_synology_3726(), mvChannelSRSTFinished(), mvInitSataDisk(), mvChannelPMStaggeredSpinUpStateHandler(), mvChannelPMSrstDeviceStateHandler(), mvInitPMDevice(), mvInitSataDisk(), mvConfigSataDisk(), mvStorageDevATAIdentifyDevice(), mvStorageDevATAExecuteNonUDMACommand(), executeNonUDMACommand(), waitForDRQToClear(), mvParseIdentifyResult(), mvChannelReadyStateHandler(), mvQueuePMAccessRegisterCommand(), mvSataQueueCommand(), mvChannelPMHotPlugStateHandler(), mvChannelStateMachine(), request_irq(SATA_IRQ_NUM, mv_ial_lib_int_handler,, mv_ial_lib_int_handler(), mvSataInterruptServiceRoutine(), handleDeviceInterrupt(), handlePIOInterrupt(), completePIOCommand()*n, handlePortError(), insertReadLogExtCmnd(), sendNoneUdmaCommand(), completePIOCommand(), for(), handleEdmaInterrupt(), handleEdmaResponse(), completePIOCommand(), dumpAtaDeviceRegisters(), commandsQueueRemove() or removeCommand(), ->SynoExtCallBack() or ->callBack(), _doDevErrorRecovery() or #ifdef SYNO_SPINUP_DELAY or _insertQCommandsIntoEdma(), #ifdef SYNO_SPINUP_DELAY, ResubmitMvCommand(), mvSataQueueCommand(), _insertQCommandsIntoEdma(), if(), sendNoneUdmaCommand((), completePIOCommand(), handleRecoverableError(), handleEdmaError(), pAdapter->mvSataEventNotify(), handleRecoverableError(), pAdapter->mvSataEventNotify(), handleConnect(), _fixPhyParams(), =asyncStartTimerFunction(), mvIALTimerCallback(), mvAdapterStateMachine(), set_device_regs(), mvSataEventNotify = mv_ial_lib_event_notify, mv_ial_lib_event_notify(), mv_ial_probe_device(), mv_ial_remove_device()

The Role

SCSI host

SATA Adapter, channel, SATA device, port multiplier, SATA device

The Data Structure (*.h)

IAL_ADAPTER_T, MV_SATA_ADAPTER, MV_SATA_CHANNEL, MV_QUEUE_COMMAND_INFO*2, MV_QUEUED_COMMAND_TYPE, union commandParams, MV_UDMA_COMMAND_PARAMS, MV_UDMA_TYPE, MV_NONE_UDMA_COMMAND_PARAMS, MV_NON_UDMA_PROTOCOL, MV_PACKET_COMMAND_PARAMS, MV_NON_UDMA_PROTOCOL, MV_EDMA_MODE, IALHost[], pci_dev, MV_IAL_COMMON_ADAPTER_EXTENSION, MV_SATA_ADAPTER, MV_ADAPTER_STATE, MV_CHANNEL_STATE[], MV_IAL_COMMON_CHANNEL_EXTENSION[], MV_PORT_STATE, MV_PORT_NOT_INITIALIZED, MV_PORT_WAIT_FOR_RDY, /* wait for the disk's signature*/ MV_PORT_ISSUE_SRST, MV_PORT_IN_SRST, MV_PORT_INIT_DEVICE, MV_PORT_DONE, /* PM ports scan is complete successfully*/ MV_PORT_FAILED, New node, MV_SAL_ADAPTER_EXTENSION, MV_SATA_SCSI_DRIVE_DATA[][], MV_SATA_SCSI_CHANNEL_STATS, MV_SATA_SCSI_CMD_BLOCK, MV_SATA_SCSI_DRIVE_DATA

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

syno_pm_gpio_show(), defer_gpio_cmd()

syno_pm_gpio_store()