comment "Controllers with non-SFF native interface"
+config SATA_PMP_DELAY_LINK_ENUMERATION
+ bool "SATA PMP Delay Link Enumeration"
+ default n
+ help
+ This option delays the enumeration of PMP links until
+ specifically requested by application or driver
+ (for use with libatardx)
+
config SATA_AHCI
tristate "AHCI SATA support"
depends on PCI
#include "libata.h"
#include "libata-transport.h"
+/**
+* Set to 1 to allow enumeration of devices behind PMP links
+*/
+unsigned int sata_pmp_allow_link_enumeration_flag = 0;
+
const struct ata_port_operations sata_pmp_port_ops = {
.inherits = &sata_port_ops,
.pmp_prereset = ata_std_prereset,
if (rc)
goto pmp_fail;
+ if( sata_pmp_is_link_enumeration_allowed() == 0 ) {
+ ata_port_printk(ap, KERN_WARNING, "skipping pmp link enumeration based on kernel configuration");
+ return 0;
+ }
+
/* PHY event notification can disturb reset and other recovery
* operations. Turn it off.
*/
ata_eh_finish(ap);
}
+EXPORT_SYMBOL_GPL(sata_pmp_allow_link_enumeration_flag);
EXPORT_SYMBOL_GPL(sata_pmp_port_ops);
EXPORT_SYMBOL_GPL(sata_pmp_qc_defer_cmd_switch);
EXPORT_SYMBOL_GPL(sata_pmp_error_handler);
}
#endif /* CONFIG_ATA_SFF */
+#ifdef CONFIG_SATA_PMP_DELAY_LINK_ENUMERATION
+extern unsigned int sata_pmp_allow_link_enumeration_flag;
+static inline void sata_pmp_allow_link_enumeration( unsigned int allow )
+{
+ sata_pmp_allow_link_enumeration_flag = allow;
+}
+static inline unsigned int sata_pmp_is_link_enumeration_allowed( void )
+{
+ return sata_pmp_allow_link_enumeration_flag;
+}
+#else
+static inline void sata_pmp_allow_link_enumeration( unsigned int allow )
+{
+ printk(KERN_WARNING "sata_pmp_allow_link_enumeration ignored - not included in kernel");
+}
+static inline unsigned int sata_pmp_is_link_enumeration_allowed( void )
+{
+ return 1;
+}
+#endif /* SATA_PMP_DELAY_LINK_ENUMERATION */
#endif /* __LINUX_LIBATA_H__ */