Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965470AbaD2WgY (ORCPT ); Tue, 29 Apr 2014 18:36:24 -0400 Received: from mga02.intel.com ([134.134.136.20]:4588 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933734AbaD2Wfg (ORCPT ); Tue, 29 Apr 2014 18:35:36 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,953,1389772800"; d="scan'208";a="532007947" From: "David E. Box" To: david.e.box@linux.intel.com, jacob.jun.pan@linux.intel.com, linux-pm@vger.kernel.org, rafael.j.wysocki@intel.com, linux-kernel@vger.kernel.org, hpa@linux.intel.com Cc: alan@linux.intel.com, durgadoss.r@intel.com, kristen.c.accardi@intel.com Subject: [PATCH v2 3/4] x86/iosf: Make IOSF driver modular and usable by more drivers Date: Tue, 29 Apr 2014 15:33:08 -0700 Message-Id: <1398810789-2301-4-git-send-email-david.e.box@linux.intel.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1398810789-2301-1-git-send-email-david.e.box@linux.intel.com> References: <1398693880-13428-1-git-send-email-jacob.jun.pan@linux.intel.com> <1398810789-2301-1-git-send-email-david.e.box@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "David E. Box" Currently drivers that work on big core can't use the mailbox driver without selecting it which forces an unneeded dependency. Provides dummy fucntions to allow these modules to conditionally use the mailbox on soc's without limiting their ability to compile and load on big core systems. Make mailbox driver build default m to ensure availability on x86 SOC's. Signed-off-by: David E. Box --- arch/x86/Kconfig | 7 ++----- arch/x86/include/asm/iosf_mbi.h | 33 +++++++++++++++++++++++++++++++++ arch/x86/kernel/iosf_mbi.c | 6 ++++++ 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 25d2c6f..f1304d3 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2375,12 +2375,9 @@ config X86_DMA_REMAP depends on STA2X11 config IOSF_MBI - bool + tristate + default m depends on PCI - ---help--- - To be selected by modules requiring access to the Intel OnChip System - Fabric (IOSF) Sideband MailBox Interface (MBI). For MBI platforms - enumerable by PCI. source "net/Kconfig" diff --git a/arch/x86/include/asm/iosf_mbi.h b/arch/x86/include/asm/iosf_mbi.h index 8e71c79..9e92d65 100644 --- a/arch/x86/include/asm/iosf_mbi.h +++ b/arch/x86/include/asm/iosf_mbi.h @@ -50,6 +50,10 @@ #define BT_MBI_PCIE_READ 0x00 #define BT_MBI_PCIE_WRITE 0x01 +#if defined(CONFIG_IOSF_MBI) || defined(CONFIG_IOSF_MBI_MODULE) + +bool iosf_mbi_available(void); + /** * iosf_mbi_read() - MailBox Interface read command * @port: port indicating subunit being accessed @@ -87,4 +91,33 @@ int iosf_mbi_write(u8 port, u8 opcode, u32 offset, u32 mdr); */ int iosf_mbi_modify(u8 port, u8 opcode, u32 offset, u32 mdr, u32 mask); +#else /* CONFIG_IOSF_MBI is not enabled */ +static inline +bool iosf_mbi_available(void) +{ + return false; +} + +static inline +int iosf_mbi_read(u8 port, u8 opcode, u32 offset, u32 *mdr) +{ + WARN(1, "MBI driver not available"); + return -EPERM; +} + +static inline +int iosf_mbi_write(u8 port, u8 opcode, u32 offset, u32 mdr) +{ + WARN(1, "MBI driver not available"); + return -EPERM; +} + +static inline +int iosf_mbi_modify(u8 port, u8 opcode, u32 offset, u32 mdr, u32 mask) +{ + WARN(1, "MBI driver not available"); + return -EPERM; +} +#endif /* CONFIG_IOSF_MBI */ + #endif /* IOSF_MBI_SYMS_H */ diff --git a/arch/x86/kernel/iosf_mbi.c b/arch/x86/kernel/iosf_mbi.c index c3aae66..d3803c6 100644 --- a/arch/x86/kernel/iosf_mbi.c +++ b/arch/x86/kernel/iosf_mbi.c @@ -177,6 +177,12 @@ int iosf_mbi_modify(u8 port, u8 opcode, u32 offset, u32 mdr, u32 mask) } EXPORT_SYMBOL(iosf_mbi_modify); +bool iosf_mbi_available(void) +{ + return mbi_pdev; +} +EXPORT_SYMBOL(iosf_mbi_available); + static int iosf_mbi_probe(struct pci_dev *pdev, const struct pci_device_id *unused) { -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/