Online Mind Mapping and Brainstorming

Create your own awesome maps

Online Mind Mapping and Brainstorming

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()