From patchwork Mon May 23 23:13:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Breathitt Gray X-Patchwork-Id: 625439 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rDDsW54w1z9t6K for ; Tue, 24 May 2016 09:15:11 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=fAQhK/yj; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753161AbcEWXNn (ORCPT ); Mon, 23 May 2016 19:13:43 -0400 Received: from mail-yw0-f194.google.com ([209.85.161.194]:32800 "EHLO mail-yw0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753140AbcEWXNi (ORCPT ); Mon, 23 May 2016 19:13:38 -0400 Received: by mail-yw0-f194.google.com with SMTP id y6so31104ywe.0; Mon, 23 May 2016 16:13:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ve680RKhQF66SocJtDlcuzWKD2dhqhjfkE2YBLc2EWA=; b=fAQhK/yjcCq8S3Or8vOe2fA/6Ye7hoQyYCBnF7LvyZKG9lLuWVJ416j4P5Wmd0hwAZ VwgTpDN0kXYXg0wAVXuqDjjgHRCqt42eTRBmdz4x3lpILwTGESqXozCHsZG8HDwP4Ruf VdOEDrgXms5TVLIGEKM0cVv9aYM3d8s3ho1aRhI8psGwWesMPXQ2M+LeWAUvFBV9IVYo jsf10d96KOPKUsU4tdEMgl6uOvoHFsT3ffptYyHqNb8KT1C9CJqwMnPzqllo8/w7YKXD 1c+RSfv9wYC6p7jAwTWnF/5NxImq22L8MvFxmSBHtgp76yozLiHY0ww0LG3GgmvjGeK2 RnZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ve680RKhQF66SocJtDlcuzWKD2dhqhjfkE2YBLc2EWA=; b=E6U9zIn4wFzl3eGUKY25MOrzDra7BM+Jph/1TVAPBMdhz6uc8aZGuCUcq42o9sbrum VZOdsr6aLZNJkcaHR7KPeU8bm063+mgd6FjXQus7/wR51H6KvPmZPKXb7ThQt7W+oC6w rymYygHSqfjegdTNJ95RX/cgLaT6N8n6X4PS1mp4V+gYK/+CxJX1XXIx9La1kdH2y8u3 +RvWg+Yylx9rRdIVlJYYJA5ZdHqe00T1Z6HlDhoo8DD5S0JsaIXasi4F6pXs8Qb6dqiN d7vK0Bj2Sl7GVcxUX8iaC+pIfUH/JbwSIqhkD4YUSzsh/Qc2tkfmHApN5UcAyEQncxk0 u07g== X-Gm-Message-State: ALyK8tImXzOu+9Fx2Liue5pGbBP1ko1DV6D+XBjCEnZsdS83yIYTebUXqWH6qUyQzWQovA== X-Received: by 10.129.42.139 with SMTP id q133mr809968ywq.28.1464045217671; Mon, 23 May 2016 16:13:37 -0700 (PDT) Received: from localhost (71-47-58-73.res.bhn.net. [71.47.58.73]) by smtp.gmail.com with ESMTPSA id c62sm20708383ywf.12.2016.05.23.16.13.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 May 2016 16:13:37 -0700 (PDT) From: William Breathitt Gray To: gregkh@linuxfoundation.org, akpm@linux-foundation.org Cc: x86@kernel.org, linux-next@vger.kernel.org, linux-gpio@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org, sfr@canb.auug.org.au, William Breathitt Gray , Linus Torvalds Subject: [PATCH v3 1/4] isa: Allow ISA-style drivers on modern systems Date: Mon, 23 May 2016 19:13:31 -0400 Message-Id: <8b451e5892f0e610d7899f77be77b1cc57ce712b.1464044853.git.vilhelm.gray@gmail.com> X-Mailer: git-send-email 2.7.3 In-Reply-To: References: Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Several modern devices, such as PC/104 cards, are expected to run on modern systems via an ISA bus interface. Since ISA is a legacy interface for most modern architectures, ISA support should remain disabled in general. Support for ISA-style drivers should be enabled on a per driver basis. To allow ISA-style drivers on modern systems, this patch introduces the ISA_BUS_API and ISA_BUS Kconfig options. The ISA bus driver will now build conditionally on the ISA_BUS_API Kconfig option, which defaults to the legacy ISA Kconfig option. The ISA_BUS Kconfig option allows the ISA_BUS_API Kconfig option to be selected on architectures which do not enable ISA (e.g. X86_64). The ISA_BUS Kconfig option is currently only implemented for X86 architectures. Other architectures may have their own ISA_BUS Kconfig options added as required. Cc: Linus Torvalds Signed-off-by: William Breathitt Gray --- arch/Kconfig | 3 +++ arch/x86/Kconfig | 10 ++++++++++ drivers/base/Makefile | 2 +- include/linux/isa.h | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/Kconfig b/arch/Kconfig index b16e74e..9d9942f 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -598,6 +598,9 @@ config HAVE_STACK_VALIDATION Architecture supports the 'objtool check' host tool command, which performs compile-time stack metadata validation. +config ISA_BUS_API + def_bool ISA + # # ABI hall of shame # diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 0a7b885..a5338a6 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2439,6 +2439,16 @@ config PCI_CNB20LE_QUIRK source "drivers/pci/Kconfig" +config ISA_BUS + bool "ISA-style bus support on modern systems" if EXPERT + default n + select ISA_BUS_API + help + Enables ISA-style drivers on modern systems. This is necessary to + support PC/104 devices on X86_64 platforms. + + If unsure, say N. + # x86_64 have no ISA slots, but can have ISA-style DMA. config ISA_DMA_API bool "ISA-style DMA support" if (X86_64 && EXPERT) diff --git a/drivers/base/Makefile b/drivers/base/Makefile index 6b2a84e..2609ba2 100644 --- a/drivers/base/Makefile +++ b/drivers/base/Makefile @@ -10,7 +10,7 @@ obj-$(CONFIG_DMA_CMA) += dma-contiguous.o obj-y += power/ obj-$(CONFIG_HAS_DMA) += dma-mapping.o obj-$(CONFIG_HAVE_GENERIC_DMA_COHERENT) += dma-coherent.o -obj-$(CONFIG_ISA) += isa.o +obj-$(CONFIG_ISA_BUS_API) += isa.o obj-$(CONFIG_FW_LOADER) += firmware_class.o obj-$(CONFIG_NUMA) += node.o obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o diff --git a/include/linux/isa.h b/include/linux/isa.h index 5ab8528..384ab9b 100644 --- a/include/linux/isa.h +++ b/include/linux/isa.h @@ -22,7 +22,7 @@ struct isa_driver { #define to_isa_driver(x) container_of((x), struct isa_driver, driver) -#ifdef CONFIG_ISA +#ifdef CONFIG_ISA_BUS_API int isa_register_driver(struct isa_driver *, unsigned int); void isa_unregister_driver(struct isa_driver *); #else