From patchwork Mon May 23 21:20:01 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: 625407 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 3rDBJs6P66z9sdQ for ; Tue, 24 May 2016 07:20:13 +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=HZlfCxWw; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752541AbcEWVUL (ORCPT ); Mon, 23 May 2016 17:20:11 -0400 Received: from mail-yw0-f193.google.com ([209.85.161.193]:34574 "EHLO mail-yw0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752539AbcEWVUI (ORCPT ); Mon, 23 May 2016 17:20:08 -0400 Received: by mail-yw0-f193.google.com with SMTP id j74so6493959ywg.1; Mon, 23 May 2016 14:20:08 -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=7nG8zWxdY/koYvaE24If7gUapsGqD0/yeFRKzOIR68o=; b=HZlfCxWwVMyvc23A3Io1x4Xf1xO9DK2EsHg9zQkc850plDsitXZMeQ3SdiLTDCp78X XHSZw+867jKIKgyO3bI6voo63SltDi8LupqiSK8LfHolOKfMc89UIVCeto6sCC5e54eA p9uIWGHbfU1Uiq6mxnH6XoNbP/QEoj628BckO0e+Uj6dhtePQDzRjSzTsCuOgdQ64Wsa MaaJtHmeGFoUGeXgVovTIYQj7ZwyNAKnl+KmURzYiZrtSm0T4/CjdZu/R06HJZIJBdv+ hSkaJDi1u0NTLBhtSF+rz4MTV53OFOZ8w51VAn/IeNJ5iayv9gUqnom3TfKQ4VMNoW8b uQ4g== 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=7nG8zWxdY/koYvaE24If7gUapsGqD0/yeFRKzOIR68o=; b=JLnh3vn2EWecro95i22RCX7lfjtJBylYAunWH38HDN+P3VZJYnReIzm6JbO7TzqKYO Gbm7Uohtfm0f7EHw13uAQ5Qh/XREh7fimX08M4ZvXhfJrWece5WTgAyIOqEheYD0IJWZ dgl12HBZGL8/ZGWUPxoJ1YtorQfiiHDhzFCDfQXoRhTaWFy0wusu6JMLOaXN//PhBlnb i8wIxkN7sAmzdrltFCgZkVqC/UygdDGT9HA5cxf1qqDXQw2NoKS5aBlUsA0m1v0L7KMa lhfZlALM/mygBuOWvuRYvNFARVuuiRZlmMOk5L/nY0PXhOtp2jIL/rsZuo3j7qQxTaEs NADg== X-Gm-Message-State: ALyK8tLqtIVgnCOY8frPVgoQ+r39zZRpGU7sBdqqEnrnqJG7gBbupC1aNNHVczWdCHg+uw== X-Received: by 10.37.223.214 with SMTP id w205mr537950ybg.111.1464038407792; Mon, 23 May 2016 14:20:07 -0700 (PDT) Received: from localhost (71-47-58-73.res.bhn.net. [71.47.58.73]) by smtp.gmail.com with ESMTPSA id m139sm10262397ywd.2.2016.05.23.14.20.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 May 2016 14:20:07 -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, William Breathitt Gray , Linus Torvalds Subject: [PATCH v2 1/4] isa: Allow ISA-style drivers on modern systems Date: Mon, 23 May 2016 17:20:01 -0400 Message-Id: <69b27a61a2dbaabdef53efccbabf5dda5687bf4c.1464029828.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..6601912 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 (X86 && 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