menu "Device Drivers" menu "MD" config SYNO_MD_09_SUPERBLOCK_COMPATIBLE bool "Allow our system can read RAID with superblock v0.9 from other x86" default y help DSM #18934 Let our system can detect raid with 0.9 sb from others x86 Before DSM v1157, we use 0.9 version superblock for system partition. Linux use host endian for superblock by default, and our early machine are BIG endian. For compatible, we force the superblock of system partition stored as BIG endian. But the other linux systems are little endian, this cause that we cannot read partitions create by other servers. This features will change the endian while loading superblock, in order to read 0.9 superblock with any endian. Merged SYNO_RAID_USE_BE_SB, SYNO_RAID_READ_09SB_ENDIANLESS config SYNO_MD_BOOT_CONDITIONAL_ASSEMBLE bool "Avoid assemble devices in ebox or not in root device at the boot time" default y depends on SYNO_FIXED_DISK_NAME help #6961, #11857 Do not assemble devices which derived from expansion box Do not assemble devices which is not belong to root devices config SYNO_MD_FORCE_START_DIRTY_DEGRADED bool "Force assemble dirty degraded RAID with level 4, 5 or 6" default y help #6373 force starting dirty degraded raid 4/5/6 array. please refer linux-2.6.24/Documentation/md.txt Section: "Boot time assembly of degraded/dirty arrays" Previous Naming: SYNO_FORCE_START_DIRTY_DEGRADED_RAID456 config SYNO_MD_STATUS_GET bool "Enable ioctl to get RAID status" default y help #3046 #4286 #3063 this define is used to help SDK determind raid status. In raid0, this define is used to consist mdstatus with other raid disk. When reboot, even if raid0 has problem, we must pretend it can be assemble Previous Naming: SYNO_RAID_STATUS config SYNO_MD_DEVICE_HOTPLUG_NOTIFY bool "Notify RAID that device has changed" default y help #2215 #4541 #4542 #4674 #3294 #6995 #7873 #8228 #12462 this define enable the notification to RAID that device has changed, usually a hotplug event. Merged definitions: SYNO_RAID_DEVICE_NOTIFY, SYNO_RAID_LINEAR_ASM, SYNO_RAID_RESHAPE_HOTPLUG config SYNO_MD_STATUS_DISKERROR bool "avoid to crash when a bad sector in degraded md" default y depends on SYNO_MD_DEVICE_HOTPLUG_NOTIFY help #5799 #14433 when a degraded md is going to crash due to bad sector happens on a disk, we set this disk as E (Error) and prevent the md from crash. Previous Naming: SYNO_RAID_STATUS_DISKERROR config SYNO_MD_EIO_NODEV_HANDLER bool "check if SCSI device exist when MD EIO error" default y help #5828 When MD encounters EIO errors, it will ask the SCSI layer if the device exists or not, to determine which error Handler will be used. Previous Naming: SYNO_BLOCK_REQUEST_ERROR_NODEV config SYNO_MD_ALL_DETECTED_DEVICES_LOCK bool "Protect static variable all_detected_devices of md by spin_lock when adding disk partitions into md" default y help #40586 Protect the all_detected_devices with spin_lock. Previous Naming: SYNO_MD_AUTODETECT_LOCK config SYNO_MD_AUTOSTART_SEQUENCE bool "Autorun md with superblock v0.9 from the first disk" default y help #5798, #4438 Let autorun v0.9 md array from the first disk config SYNO_MD_DISK_SORT bool "Sort the disk in autoastart array" default y help #40965 Sort the disk in autoastart array. config SYNO_MD_BAD_SECTOR_AUTO_REMAP bool "Auto remap bad sector in SATA layer" default y help #8450 implement bad sector auto remap in SATA layer Previous Naming: SYNO_SATA_BAD_SECTOR_AUTO_REMAP config SYNO_MD_RAID5_BS_REWRITE bool "remap bad sector on raid5 read error" default y depends on SYNO_MD_BAD_SECTOR_AUTO_REMAP && SYNO_MD_EIO_NODEV_HANDLER help #2577 #5929 Let raid5 can re-write and read back again when build parity. Oringinal raid5 would not retry any filed reads while create a new raid5. But some disk really need this. Previous Naming: SYNO_RAID5_BS_REWRITE config SYNO_MD_FLASHCACHE_SUPPORT bool "Make bio of flashcache can return error once md device failed" default y help #49643, #53202, #53575 Previous Naming: SYNO_FLASHCACHE_SUPPORT config SYNO_MD_FLASHCACHE_4KN_SUPPORT bool "Make flashcache driver support 4KN disk" default y help #66069 Previous Naming: SYNO_FLASHCACHE_4KN_SUPPORT config SYNO_MD_FIX_ACCESS_RELEASED_DEVICE bool "Fix an issue that md layer might access the name of unplugged device" default y help #54017 Previous Naming: SYNO_BLOCK_DEVICE_RELEASE_NO_NAME config SYNO_MD_FAST_VOLUME_WAKEUP bool "Reduce md sleep wake up time" default y help #23753, #29290 Speed up the responce time by waking up all md/lv in the same volume coherently. Previous Naming: SYNO_FAST_VOLUME_WAKEUP config SYNO_MD_SECTOR_STATUS_REPORT bool "report read/write error to user space through scemd and synobios" default y depends on SYNO_MD_EIO_NODEV_HANDLER && SYNO_SCSI_DEVICE_INDEX help #5791, LKP2.6.32 #71 Let raid read/write error can report to user through scemd and synobios Previous Naming: SYNO_RAID_SECTOR_STATUS_REPORT config SYNO_MD_AUTO_REMAP_REPORT bool "report LVM/ MD remapped sector through scemd and synobios" default y depends on SYNO_MD_BAD_SECTOR_AUTO_REMAP && SYNO_MD_SECTOR_STATUS_REPORT help #23923, #54272 Report LVM or MD sector which be auto remapped through scemd and synobios Previous Naming: SYNO_AUTO_REMAP_REPORT config SYNO_MD_FIX_LINEAR_ACCESS_NULL_RDEV bool "Fix an issue that md might access NULL hotpluged redv" default y help #517 config SYNO_MD_FIX_RAID5_RESHAPE_HANG bool "Resolve the raid 5 hang problem during expansion with disk error or hotplug out." default y help #107 When set disk error or hotplug, md will receive MD_RECOVERY_INTR. It breaks the md_do_sync loop. If following reshape is possible, resize_stripes will be re-called again. It result to wrong pool_size in stripe_cache of r5conf. And the second resize_stripes is not necessary when device is set to error or disapear. Previous Naming: SYNO_FIX_RAID5_RESHAPE_HANG endmenu #MD menu "SATA" config SYNO_FIXED_DISK_NAME bool "Use Fixed Disk Name" default y help No Bug Entry Make internal SATA disk use fixed device name. For example, the first channel is sda, the second is sdb, etc. All USB disk would start from sdq. config SYNO_BADSECTOR_TEST bool "Interface to fake bad sectors for testing" default y help #5791 Provide interface for userspace tool 'bsset' to fake bad sectors on disk for testing. config SYNO_MAX_INTERNAL_DISK int "Maximum Internal Disk Number" depends on SYNO_FIXED_DISK_NAME || SYNO_BADSECTOR_TEST default "19" if SYNO_BROMOLOW || SYNO_GRANTLEY default "15" if !SYNO_BROMOLOW && !SYNO_GRANTLEY help No Bug Entry Maximum SCSI internal disk. We will reserve device name for internal disks. Notice - User mode "cardreaderd" would poll on external disk only. config SYNO_SATA_PORT_MAP bool "Modify SATA Hosts Port Number" depends on SYNO_FIXED_DISK_NAME default y help #18789 Reads Sata-Port-Mapping information and forces the sata hosts to initialize specified number of ports. This makes the disk name not skip some characters. Notice - Do NOT set the port number out of the range that [0-9]. It supports as most 9 ports now. For example, SataPortMap=4233 means the 1st host use 4 ports, the 2nd host use 2 ports, the 3rd and 4th host use 3 ports. config SYNO_DISK_INDEX_MAP bool "Modify Disk Name Sequence" depends on SYNO_FIXED_DISK_NAME default y help #19604 Add boot argument DiskIdxMap to modify disk name sequence. Each two characters define the start disk index of the sata host. This argument is a hex string and is related with SataPortMap. For example, DiskIdxMap=030600 means the disk name of the first host start from sdd, the second host start from sdq, and the third host start sda. config SYNO_SATA_REMAP bool "Re-map Disk Name Sequence" depends on SYNO_FIXED_DISK_NAME default y help #47418 Add boot argument sata_remap to remap data port sequence. For example, sata_remap=0>4:4>0 means swap the first disk name and the 5th. The following is the remap result. ata1 - sde ata2 - sdb ata3 - sdc ata4 - sdd ata5 - sda config SYNO_SATA_DISK_SEQ_REVERSE bool "Reverse Disk Port Sequence" depends on SYNO_FIXED_DISK_NAME default y help #23278 Add boot argument DiskSeqReverse to reverse the ports of each SATA chip. For example, for a 4 SATA chips model, 4 ports of each SATA chip. We want to reverse all 4 ports of 1st chip, no modification of 2nd chip, reverse 2 former ports of 3rd chip, and reverse 3 former ports of 4th chip. The boot argument should be DiskSeqReverse=4023. And the sequence of disk is: 1st chip - [sdd, sdc, sdb, sda] 2nd chip - [sde, sdf, sdg, sdh] 3rd chip - [sdj, sdi, sdk, sdl] 4th chip - [sdo, sdn, sdm, sdp] config SYNO_SCSI_GET_ATA_IDENTITY bool "Get ata identity via ATA PASS THRU command in scsi layer" default y help #46274, #49046 This define issues a ata identity command via ata pass thru, because sometimes we need the information of ata identity in scsi layer. We extract this function into a new define in Linux-3.10.x, because there are two different fixes need this function. config SYNO_SATA_PM_DEVICE_GPIO bool "Synology Specific PM Device Support" depends on SATA_PMP default y help #6820, #7197 Provide specific functions of Synology eunit. Provide eunit gpio functions in Sysfs. Provide functions to power off scsi port. Driver should implement their own power off method. Merged definitions: SYNO_SATA_PM_SEAGATE_PROBE_TIME_FIX config SYNO_SATA_MV_GPIO_RW bool "Marvell SATA Controller GPIO Operation Interfaces" default y help #18827, #19394 Exporting the interfaces for controlling the GPIO pins on Marvell SATA controllers. config SYNO_INQUIRY_STANDARD bool "Correct the disk vendor and model information in kernel" default y help #10476 If vendor name is "ATA ", try to get disk vendor from model name. config SYNO_ATA_AHCI_LED_SGPIO bool "Control Disk LEDs via SGPIO with AHCI" depends on X86_64 default y help No Bug Entry The interfaces for AHCI driver to operate with SGPIO and control the LEDs. config SYNO_ATA_AHCI_LED_SWITCH bool "Main Switch Of Disk LEDs with AHCI" depends on SYNO_ATA_AHCI_LED_SGPIO default y help #27837, #27954 Added the main switch to shutdown disk LEDs that are controlled via SGPIO with AHCI. config SYNO_ATA_PWR_CTRL bool "Disk Power Control" depends on SYNO_INTERNAL_HD_NUM && SYNO_ICH_GPIO_CTRL && SYNO_HW_VERSION default y help No Bug Entry Used to control the power of HDDs in some model which are low power supply. config SYNO_INCREASE_DISK_MODEL_NAME_LENGTH bool "Increase disk model name size up to 24 characters" depends on SYNO_SCSI_GET_ATA_IDENTITY && SYNO_INQUIRY_STANDARD default y help #39582 & #43388 The original disk model name is only 16 characters. But there is several disk model name over 16 characters. In this fix, we use ATA command "IDENTIFT DEVICE" to get whole model name and increase disk model name size up to 24 characters. If you want to scale the model length, you have to modify the definition of SYNO_DISK_MODEL_LEN and SYNO_DISK_MODEL_NUM in the following files. config SYNO_DISK_MODEL_NUM int "Length of disk model name in integer" depends on SYNO_INCREASE_DISK_MODEL_NAME_LENGTH default 24 help The string length of disk model name. config SYNO_DISK_MODEL_LEN string "Length of disk model name in string" depends on SYNO_INCREASE_DISK_MODEL_NAME_LENGTH default "24" help The string length of disk model name. config SYNO_SATA_DISK_LED_CONTROL bool "Interface To Control SATA Disk LEDs" depends on SYNO_SATA_PM_DEVICE_GPIO default y help No Bug Entry The sysfs interface for related modules to control the disk LEDs. Implemntation should be done in the customized modules, means, synobios. config SYNO_SPINUP_DELAY bool "Separate Disk Spin Up Timing" depends on SYNO_INTERNAL_HD_NUM && SYNO_HW_VERSION default y help #14299, #14524 Prevent harddisks spin-up currently from standby mode. Add small amount of delay between each two disks so they do not consume too much power. It is recommanded to turn on SYNO_SOFTLOCKUP_THRESH_EXTENSION if LOCKUP_DETECTOR is enabled to prevent false alarm call trace. config SYNO_MV_9235_GPIO_CTRL bool "Interfaces For Marvell 9235 GPIO Control" default y help #46891 Provides the infterfaces to operate the GPIO pins on Marvell 9235. config SYNO_SCSI_DEVICE_INDEX bool "Get device index from scsi layer" default y help #6006 Get device index from scsi layer [IN] Pointer of the target block device [OUT] Disk index of the target block device config SYNO_PM_DISABLE_LINK_LIMIT bool "Clear the link speed limit when pmp attach" default y help #58739 The sata link speed of EUnit port 1 might be limited to 1.5Gbps All EUnits which use port multiplier 3726/3826 have this issue. SControl of port 1 will always be 0x10 after poweron if there are no devices connected to port 1. Clearing the link speed limit when pmp attach can solve this problem config SYNO_SATA_EBOX_REFRESH bool "Send ebox refresh event to userspace" depends on SYNO_SATA_PM_DEVICE_GPIO default y help DSM #7761 Send ebox refresh event throught synobios to scemd for the ebox hotplug event. config SYNO_SATA_88SX7042_MSI bool "Enable MSI on Marvell 88SX7042" depends on PCI default y help #35279, #21899 Using MSI (Message-signaled Interrupt) can potentially increase performance by using faster interrupt mechanism and avoid sharing IRQ. It can also avoid performance degradation caused by bogus interrupts and disabled irqs config SYNO_OSS_SATA_LED bool "Control Marvell 88SX7042 LED" default y help No Bug Entry #218 In order to make LED static when disk present and blinking when disk active, we have to set the offset 0x104F0 bit 0-1 to 0x00 and bit 2-3 to 1. See data sheet page 282 (Table 232: GPIO port control register), this is for open source mv driver config SYNO_DISK_HIBERNATION bool "Disk hibernation" depends on SYNO_FIXED_DISK_NAME default y help #2165, #5608, #5786 We using ata command 0xe0 for implement hibernation. This may need a idel timer for others query. config SYNO_HDD_HOTPLUG bool "Internal HDD hotplug" default y help #27450 Add boot argument "HddHotplug" to support internal HDD hotplug. config SYNO_INCREASE_SIL3132_OUT_SWING bool "SATA Sil3132 OUT SWING to prevent DRDY" depends on SYNO_CEDARVIEW || SYNO_AVOTON default y help Increase SATA Sil3132 OUT SWING to prevent DRDY config SYNO_SATA_SIL3132_HD_DETECT bool "Fix 'SRST command error' on SiI3132" default y help #6890 Some disk could not probe with sata_sil24.c . The reason is they always encounter "SRST command error". So we retry SRST and insert a sata_std_hardrest before retry it. Disks: 9611-HD-005(WD10EACS-00ZJB0), 9704-HD-019(WD7500AACS) We have many disks which have the same models as above, but they would not have the same problem. Note. When you port this to newer kernel, please try to reproduce firstly. If it still that, and i suggest port this define. Otherwise, please don't port this. config SYNO_SIL3132_PM_WORKAROUND bool "SIL3132 PM workaround" default y help #39234 PM of SIL3132 can't reconfigue speed correctly. When reconfiguing speed, PM of SIL3132 doesn't have PHY-off(DET=4h) mode. So we use RESET(DET=1h) mode. After reconfiguing speed, need to write again after a 1ms delay. Otherwise the speed won't configue correctly. config SYNO_SATA_88SX7042_PHY_PWR_CTRL bool "Control Marvell 88SX7042 PHY power by sysfs interface" depends on SYNO_SATA_PM_DEVICE_GPIO default y help #15519 Add an interface in sysfs to control Marvell 88SX7042 SATA PHY power. usage: echo off > /sys/class/scsi_host/host*/syno_phy_ctl to turn off echo on > /sys/class/scsi_host/host*/syno_phy_ctl to turn on config SYNO_MV_9235_PORTING bool "Marvell 88SE9235 workarounds" default y help #39839 Add new SATA 6G chip (mv9235) and its workaround given by Marvell. The workaround is to solve hang problem when issuing SMART command. config SYNO_MV_9235_6G_WORKAROUND bool "Marvell 88SE9235 workaround for WD Red 6Gbps link problem" depends on SYNO_MV_9235_PORTING default y help #47008 WD Red will link up 3.0 Gbps after hotplugging. The only thing we can do to fix it is to enforce it tries to link up with 6.0 Gbps config SYNO_MV_9235_SRST_FIX bool "Marvell 88SE9235 SRST fix" depends on SYNO_MV_9235_PORTING default y help #43060 mv9235 may fail when issue 2nd D2H in SRST, so we must check it at 2nd D2H config SYNO_TRANS_HOST_TO_DISK bool "Transfer scsi host number to disk name and export to sysfs" default y help #35892 Add an interface in sysfs to show disk name transfered from scsi host. usage: cat /sys/class/scsi_host/host*/syno_diskname_trans config SYNO_SATA_FORCE_1_5GBPS bool "Force SATA 1.5Gbps speed for selected disks" default y help #21684 Force set some disk to 1.5Gbps in driver mode to enhance compatibility. Disks:Hitachi HDS723020BLA642 config SYNO_ENLARGE_RX_NOISE_TRRESHOLD bool "Enlarge noise threshold of mvsata" default y if SYNO_X64 help #19706 Enlarge noise threshold to prevent recieve too many noise while normal stress. config SYNO_SATA_SIL3132_ABRT_WORKAROUND bool "SiI3132 boot-time ICRT ABRT workaround" default y help #49102, #49180 Silicon Image 3132 may have ICRT ABRT errors while boot-up This is a workaround that decreases the frequency of such a issue's appearance. config SYNO_SATA_PM_SAMSUNG_PROBE_TIME_FIX bool "Samsung HDD/PMP probing workaround" default y help #7872 Hotplug in Samsung disk in fan out port is not easy to probe. The only way is to force hardreset pmp link in hotplug disk, no matter what kind of disk hotplug in. Because we cannot recocnize what kind of disk be plugged in. So we force hard reset pmp link while any disk is plug in. Disks: SAMSUNG HD103UJ. Note. This problem only happen in hotplug in SAMSUNG HD103UJ This situation still found in kernel 2.6.32. We can solve this problem by increase retry time which has done in porting #47 SYNO_SATA_SIL3132_HD_DETECT. We still port this define for compatibility. config SYNO_UNC_LBA_RESTORE bool "ATA UNC LBA return error workaround" default y help #72618 #73898 Some of the sata controllers return LBA registers even if the NCQ READ command failed. These register values are not defined in ATA standard and cannot be trusted. Passing these untrusted values to SCSI layer might cause in data lost due to incorrect BIO completed-byte calculation. This fix only target on UNC error and will restore the result LBA with the preceded setup right before these information are formed into sense data and returned to SCSI layer. config SYNO_SATA_WCACHE_DISABLE bool "Disk write cache blacklist" default y help #19052 Let disk in blacklist cannot enable disk write cache and apply it during device starting config SYNO_ATA_FAST_PROBE bool "EUnit fast probe mechanism" default y help #22029, #22030, #22031 Let eunit disk can spinup simultaneity to speedup boot time. config SYNO_SATA_INFO bool "Show SATA information" default y help No Bug entry Show SATA phy ready/change messages config SYNO_SATA_SIL3132_HITACHI_WORKAROUND bool "Fix communication problem of Hitachi HTS541040G9SA00 with SIL3132 SATA chip" default y help #8311 SIL3132 cannot well communicate with a Hitachi hard disk: Model Family: Hitachi Travelstar 5K100 series Device Model: HTS541040G9SA00 Serial Number: MPBB20X2GTZRKM Firmware Version: MB2OC40J User Capacity: 40,007,761,920 bytes ATA Version is: 6 ATA Standard is: ATA/ATAPI-6 T13 1410D revision 3a This disk is taken from robenh. We force the IPM and communication speed on this kind of disk. Let SIL3132 can play nicely with this disk. config SYNO_SATA_DISK_SERIAL bool "Let sata disk export its serial number" default y help #16579, #18136 Let sata disk export its serial number to sysfs. config SYNO_SIL3132_INTEL_SSD_WORKAROUND bool "Fix speed drop problem of Intel 6G SSD (330,520) on SIL3132 SATA chip" default y help #39849, #41692 Intel 6G SSD (330,520) drop speed after hotplug on ahci and silicon image drivers. We slove the problem by clear speed limit after EH. It works on silicon image drivers only. But it will cause recognition problem of HITACHI disks on sata_mv dirvers. Therefore, we only clear speed limit on silicon image drivers. config SYNO_CHECK_DISK_SLEEP bool "Disk sleep status ioctl() interface" default y help Allow user space to use ioctl() to get SATA hibernation status. config SYNO_IOCTL_HDIO_GET_DMA bool "HDIO_GET_DMA ioctl for libata" default y help #2345 Add HDIO_GET_DMA for SCSI SATA. config SYNO_AHCI_PM_DEADLOCK_FIX bool "AHCI/PMP deadlock fix" default y help DSM #44992 Fix port-multiplier-related deadlock in ahci driver. The problem happens when an UNC-error disk is plugged in mv9705 connected to mv9235, using ahci driver. Reading UNC sector on the disk will trigger deadlock as following path: ahci_interrupt -> ahci_port_intr -> ahci_error_intr -> ata_link_online -> ... -> ata_exec_internal_sg config SYNO_HANDLE_EIO_DISKS bool "Kickoff EIO disks" default y help #14275, LKP2.6.32 #233 When disks device revalidate fail, handle dev fail function didn't kick this dev off. This may cause raid in error state. (ex. Seems these disks are ok, and keep resync) So we add condition to kick these disks off. When handle device fail is because -EIO, we kick this device off config SYNO_FIX_LIBATA_NOT_REFLUSH bool "Flush revalidated disks after error" default y help fix if revalidate success, libata-eh still not retry flush config SYNO_SATA_SSD_DETECT bool "SSD detection" default y help #4931, #8509 Deny some command in SSD disks. Because the biggest problem is in our spinup delay code. Sometimes those ssd just cannot wake up normally. So you would see lots of wake up from hibernate in the syslog. config SYNO_PMP_HOTPLUG_TASK bool "PMP hotplug event" default y help #10983, #26139 Send port multiplier hotplug event to userspace. Merged definitions: SYNO_LIBATA_PMP_UEVENT config SYNO_SATA_REDUCE_RETRY_TIMER bool "Reduce SATA retry timer" default y help #5857 limit libata error retry time interval from 5 to 2 second. config SYNO_SATA_PM_CLEANUP_CLASS bool "Cleanup port multiplier class" default y help #50166 The class register wouldn't be cleaned after detach PM. In some situation, the port would be set ATA_DEV_NONE, and this port would skip reset and lost connect. We should cleanup the class register to ATA_DEV_UNKNOWN config SYNO_AHCI_SOFTWARE_ACITIVITY bool "AHCI software acitivty led" depends on SYNO_LEDS_TRIGGER default n help #52057 For the model which control AHCI activity led by software config SYNO_SIL3132_ACTIVITY bool "SiI3132 software acitivty led" depends on SYNO_LEDS_TRIGGER default n help #60268 For the model which control SiI3132 led by software config SYNO_SATA_CHIP_REORDER bool "Adjust the order of sata chip drivers" default y help #417 For disk ordering. sata_sil24.o sould be after sata_mv.o config SYNO_FORCE_EH_FULL_RECOVER_RETRY bool "Force to reset all links of a PMP while retrying EH recover" default y help #66191 The EH recover will not clean the flags of the rested link if an error occurred on an frozen port. This could leads to port dysfunction, so we add this fix to prevent the PMP SATA ports from improper initializing. Set to Y if you want to enable it. config SYNO_SATA_AHCI_FBS_NONCQ bool "Disable NCQ of some SATA AHCI controllers" default y help #65977 To fix the handshake issue between SATA controllers and port multiplier 3726/3826, we disable NCQ of some SATA AHCI controllers. config SYNO_MV_9170_PORTING bool "Marvell 88SE9170 specific initialize steps" default y help #66201 Marvell provide PCI programming steps for 88SE9170 without SPI flash hardware design to slove some compatibility issue. config SYNO_SATA_PM_LINK_RETRY bool "Reset port multiplier if the link speed drop to 1.5Gbps" default y help #62909 Avoton models have chance to get 1.5Gbps with PM3826, so we add workaround and try to linkup to 3.0Gbps config SYNO_SATA_PM_FIRST_PORT_DELAY bool "Delay 2 secs for port multiplier first port reset" default n help #63772 Avoton models wait 2 sec for first pm port reset config SYNO_EUNIT_DEADLOCK_FIX bool "Prevent eunit find master deadlock" default y depends on SYNO_SATA_PM_DEVICE_GPIO help #72119 Eunit with multiple PM would call SynoEunitFindMaster() to find the master PM SynoEunitFindMaster() would call class_find_device() and making deadlock We disable irq when SynoEunitFindMaster is running config SYNO_CUSTOM_SCMD_TIMEOUT bool "Customize SCSI commands timeout value per disk" default y help #70413 The "spin up to ready time" of some disks is too long, and it may lead to the warning message "DRDY (timeout)" occurred. For example, the original SCSI command timeout of disk iotcl is 10s, but the spin up time of ST6000VN0001 is 23s. Then "DRDY (timeout)" occurs when the disk wakes up from stanby everytime. To avoid this issue, we provide an interface to change the timeout value of each disk. config SYNO_SII3132_MEDIA_ERROR_RETRY bool "Enable SATA SiI3132 media error retry" depends on SYNO_AVOTON default n help SiI3132 may get media error in some models, we could add retry for them endmenu #SATA menu "SAS" config SYNO_SAS_DISK_NAME bool "Refactor SAS Disk Name" default y depends on SYNO_FIXED_DISK_NAME help #33176 Break SYNO FIXED DISK NAME rule in SAS model. The SAS model will not be named as fixed position as the fixed disk naming rule, e.g. sda -> disk1, sdb -> disk2. SAS disk name will be named as sas1, sas2, sas3, ..., but the disk name is no longer mapping to any disk position config SYNO_SAS_DEVICE_PREFIX string "SAS Disk Name Prefix" default "sas" depends on SYNO_SAS_DISK_NAME help #33176 See SYNO_SAS_DISK_NAME help config SYNO_SAS_USB_DEVICE_PREFIX string "SAS USB Name Prefix" default "usb" depends on SYNO_SAS_DISK_NAME help #33176 See SYNO_SAS_DISK_NAME help config SYNO_SAS_ISCSI_DEVICE_PREFIX string "SAS Iscsi Name Prefix" default "iscsi" depends on SYNO_SAS_DISK_NAME && SYNO_ISCSI_DEVICE help #33176 See SYNO_SAS_DISK_NAME help config SYNO_SAS_FIX_TRIM_GRANULARITY bool "Correct TRIM granularity in SAS model" default y depends on SYNO_SAS_DISK_NAME && SYNO_SCSI_GET_ATA_IDENTITY help #46274 This fix corrects the value of TRIM granularity in SAS model. Because the granularity value returned by SAS controller is wrong and make TRIM command failed to execute in RAID0 / RAID10 in SAS model. Previous Naming: SYNO_TRIM_SUPPORT config SYNO_SAS_FIX_ENCLOSURE_POWEROFF_WARNON bool "Avoid WARN ON message when plug off enclosure" default y help #40515 Remove symbolic link on enclosure component before unregister it. If we remove these symbolic links when component release, we will trigger the warn on message because these sysfs structure has been removed in unregister stage Previous Naming: SYNO_SAS_ENCLOSURE_POWEROFF_WARNON config SYNO_SAS_DISK_LED_CONTROL bool "Light on/off disk present LED when a sas/sata disk is plugged in or pulled out" default y help #34892,#41508 On SAS model, the way to control disk LED is through SES protocol to set up expander phy status. Then expander will output signal to CPLD to light on present/faulty LED. Everytime a disk plugged in/pulled out, it will be attached to its parent enclosure and a link will be created. So we light on/off the disk present LED at this moment. This define works in drivers/misc/enclosure.c config SYNO_SAS_SYSFS_BLOCK_DEV_LINK bool "Add block device symbolic link under sysfs" default y depends on SYNO_SAS_DISK_NAME help #35518, #37740 The driver/base/core.c had been refactored. This causes that in sysfs, the symbolic link to block device dissappears. For example: in /sys/class/scsi_disk/1:0:0:0/device/, there should be a symbolic link named as block:sas1. However, this symbolic link dissappears in linux-3.x, and in linux-2.6.32, it preserves. Because in SAS model, we relay on this structure to parse our disk topology, we need it back. After checking the kernel git log & linux-2.6.32 related codes, this symbolic link could preserve here without affecting other functions. Previous Naming: SYNO_SYSFS_BLOCK_DEV_LINK config SYNO_SAS_SHOW_DISK_PHY_INFO bool "Show phy info in kernel log when disk hotplug in" default y depends on SYNO_FIXED_DISK_NAME help #34868 Show phy info in kernel log when disk hotplug in. What we do is exactly the same as LSI kernel driver Phase11 config SYNO_SAS_RECOVER_REMOVED_ENCS bool "An workaround to bring back removed enclosures when we replug upper link" default y depends on SCSI_MPT2SAS help #34203 When we unplug enclosures from the middle of the linking chain, all the following enclosures will be removed. Then we replug the removed link, the host can only recover the first attached enclosure, and the others are still lost. This is because that the host firmware still keep them but the driver already remove these enclosures. The bug is caused by driver at function _scsih_expander_node_remove. When we unplug the upper link, this function will remove all devices/enclosures behind this link. Meanwhile, the driver is going to notify firmware to update its status. But those enclosures have been removed in driver, and the firmware will not be notified. So firmware keep those enclosures as well and send wrong message to driver when we replug this link. The only thing we need to do is to buy enough time for firmware to update its status before removed. config SYNO_SAS_MPT2_HOTPLUG_PHY bool "Remove hotplug phy in a wide port when pulled out" default y depends on SCSI_MPT2SAS help The driver need to add phys to relative port or remove phys from it when hotplug phys. For example, when a SAS port with 8 phys, one cable with 4 phys are removed, we need to know that in kernel. But in original driver, we won't unless the wide port are removed. config SYNO_SAS_SPINUP_DELAY bool "Support SAS disk spinup queue" default y depends on SCSI_MPT2SAS help #35222 Implement spinup delay queue in SCSI layer to limit numbers of disks spun up concurrently. Which is used to handle un-sufficient power supply to bare total power consumption when all disks spin up concurrently. config SYNO_SAS_SPINUP_DELAY_DEBUG bool "Print out debug message for SAS disk spinup queue" default n depends on SYNO_SAS_SPINUP_DELAY help Print out debug message for SYNO_SAS_SPINUP_DELAY config SYNO_SAS_ENCOLURE_PWR_CTL bool "Encolure power control" default n help #62317 Export interface to control PCH GPIO for Banana Split power control. config SYNO_SCSI_MAX_QUEUE_DEPTH_LOCK bool "Enable SCSI queue depth lock" default n help #437 Enable irq_lock to prevent interrupt reentrants when SAS is changing queue_depth. config SYNO_EUNIT_LIMITATION bool "Limit Eunit Speed To 1.5Gbps" default n help #428 Limit eunit to 1.5Gbps to avoid eunit drop. Cedarview and Pinview have to open this option endmenu #SAS menu "Network" config SYNO_NET_BOND_ALB_INFO bool "Show bonding alb info in procfs" default y help No Bug Entry This configures shows bonding alb info in procfs. Previous Naming: SYNO_NET_BOND config SYNO_E1000E_LED_SWITCH bool "LED Configuration Of E1000E NIC" default y if SYNO_CEDARVIEW help #27837 Provides the interface to switch the phy leds on e1000e NIC on and off. There is only the funtion pointer declaired as "funcSynoNicLedCtrl" in the kernel. Drivers should assign the entity to this function pointer to make the function work. config SYNO_IGB_LED_SWITCH bool "LED Configuration Of IGB NIC" default y if SYNO_AVOTON help #59974 Provides the interface to switch the phy leds on igb NIC on and off. There is only the funtion pointer declaired as "funcSynoNicLedCtrl" in the kernel. Drivers should assign the entity to this function pointer to make the function work. endmenu #Network menu "USB" config SYNO_IGNORE_REQUEST_ALSA_MODULE bool "Ignore request_module of soundcore since it's unable to go into hibernation" default y help #49398 synoaudiod will open mixer periodically to check whether there is any DAC. And this will trigger loading module from disk , then influence the hibernation. config SYNO_HAS_SDCARDREADER bool "Provide a interface to check if SD card reader is supported" default y help #17234 Provide a interface to check if SD card reader is supported config SYNO_SD_COPY bool "Enable SD Copy" default y help #17234 Enable SD Copy config SYNO_USB_COPY bool "Enable USB Copy" default y help #14220 Enable USB Copy config SYNO_STATIC_HIDDEV_MINOR bool "Support our RF remote controller" default y help #14220 When keyboard or mouse plugged in, we will make it has static minor number from hiddev5. This is for our RF remote controller. The controller is keyboard+mouse. config SYNO_USB_SERIAL_FIX bool "Generate serial number as S/N issue occurs" default y help #14220 When there is no serial in USB device, we will generate a serial from product. Futhermore, when product is empty also, we will generate a dummy name for it. If there are the same serial in other USB device, we will add number in the suffix config SYNO_USB_USBIP bool "Enable Syno fix in USBIP modules for USB printer" default y help #14450, #35058 This config contains Syno Fix in USBIP modules for USB printer issue config SYNO_USB_UPS bool "Modify ignore list of HID driver for UPS" default y help #14220 hid ups will use user mode driver, so kernel hid module will not bind the hid ups config SYNO_ENABLE_USBFS_ENTRY bool "Add USB entry to /proc/bus" default y help N/A We find USBFS "/proc/bus/usb" is removed. However; user space programs still need it, so we create the entry to regenerate USBFS. config SYNO_USB3_WD_FIX bool "Enable WD storage fix for NEC USB 3.0 Chip" default y help #27872, #44551, #42326 The issue is NEC chip can not detect WD passport/element or the device only run at high speed This fix will check mapping port status when needed config SYNO_HUB_RESET_TIMEOUT bool "Extend USB hub reset timeout value" default y help #39549 The issue in DSM #39549 does not occur in the new kernel, but we consider it's safe and could improve USB compatibility config SYNO_LYNXPOINT_XHCI_QUIRK bool "Enable Denlow XHCI fix" default n help #535, #617 The XHCI of Denlow platform has some additional programming code in ACPI method _PS0, but this method doesn't execute during boot time at linux-3.10.x. This change lead to USB 2.0 devices can't be detected at USB 3.0 port. So we port _PS0 as a PCI quirks. It will be applied at boot time. config SYNO_ICH_UHCI_NO_MMIO_OFF bool "Set Pinview UHCI Controller MMIO As 'Always On'" depends on SYNO_X64 default n help #438 Disabling Pineview's UHCI controller MMIO might cause system hang during boot time. Enable this to set the intel UHCI controller as a 'MMIO always on' device and prevent the situation. config SYNO_USB3_RESET_WAIT bool "Add extra delay time for USB reset in xhci driver" default y help #403 and #80 Add extra delay time for USB reset. NEC Chip has a compatibility issue on specific device during USB reset time. The USB device may meet "read descripter error" or "set address error". endmenu #USB menu "Hardware Monitor" config SYNO_IT87_SYS_TEMPERATURE bool "Retrieve System Temperature From IT8728" default y depends on X86_64 && SENSORS_IT87 help No Bug Entry Provides the interface to retrieve system temperture from it8728 on x86_64 platforms. Renamed from: SYNO_PINEVIEW_SYSTEMP config SYNO_ADT7490_FEATURES bool "Enhance features for adt7490 for Synology Inc. NAS product" depends on SENSORS_ADT7475 default n help #42879 If you need Synology enhance features for adt7490 supports, choose yes. Which will open peci supports and some other features for adt7490 endmenu #Hardware Monitor menu "Serial/TTYs" config SYNO_X86_TTY_CONSOLE_OUTPUT bool "Setup X86 Console Port Output" default y depends on X86 help No Bug Entry This configures the baudrate and the disable virtual console for X86. X86-based platforms have the console output only when this config is enabled. config SYNO_X86_SERIAL_PORT_SWAP bool "Swap The First Two Serial Ports" depends on X86 help No Bug Entry There are two different configurations of serial ports on x86-based platforms, ttys0 and ttys1 reversed or not. this config indecates which of the configration is applied. config SYNO_MICROP_CTRL bool "Operating the uP through ttyS1" default y help 14938, 14368, 14321 Requested modifications for operating uP. 1. Provides the interface syno_ttys_write() to directly access ttyS1 bypassing vfs layer. 2. Formates the commands and send commands to uP while poweroff/reboot 3. Fixes the bug that command may not be written to uP immediately Merged: SYNO_TTYS_WRITE, SYNO_FIX_MICROP_NOT_WRITE_IMMEDIATELY Previous Naming: SYNO_X86_MICROP_CTRL config SYNO_TTY_EXPORT bool "Export uP symbol for synobios" default y help 112, 116 Export symbol "syno_test_list" for synobios use. endmenu #Serial/TTYs menu "DTV" config SYNO_COMPACT_DTV_IOCTL bool "To Handle IOCTL: FE_SET_PROPERTY" default y help