From patchwork Mon Nov 23 13:14:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11925181 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FFDBC2D0E4 for ; Mon, 23 Nov 2020 13:14:43 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9A4872075A for ; Mon, 23 Nov 2020 13:14:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="s1fMI/4a" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9A4872075A Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.34237.65125 (Exim 4.92) (envelope-from ) id 1khBfp-0005vd-Oh; Mon, 23 Nov 2020 13:14:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 34237.65125; Mon, 23 Nov 2020 13:14:29 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBfp-0005vW-L0; Mon, 23 Nov 2020 13:14:29 +0000 Received: by outflank-mailman (input) for mailman id 34237; Mon, 23 Nov 2020 13:14:28 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBfo-0005vQ-Ne for xen-devel@lists.xenproject.org; Mon, 23 Nov 2020 13:14:28 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 10ca4d60-cc42-42bd-b60e-3bbdded2d894; Mon, 23 Nov 2020 13:14:26 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id B2B26ACF1; Mon, 23 Nov 2020 13:14:25 +0000 (UTC) Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBfo-0005vQ-Ne for xen-devel@lists.xenproject.org; Mon, 23 Nov 2020 13:14:28 +0000 X-Inumbo-ID: 10ca4d60-cc42-42bd-b60e-3bbdded2d894 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 10ca4d60-cc42-42bd-b60e-3bbdded2d894; Mon, 23 Nov 2020 13:14:26 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1606137265; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FtIXZJ0HqJDtlmSLnhGEm6Ve8l/UI7mpJ78L1OTqVUg=; b=s1fMI/4aztigtUGG4QzR3gKdcGIQcvh0VSFkf6h4rMQXg08FBgPEuyrrT5FnmF824zZgUK nhLwIwjDbWaauGlhTMrUmkCWjYCOQGunViN8Ta/F+Zy77a/THkgemcB8fHITfqt+1LMu1p JRY9EDoVLUTf789YrpLGjXrUvv43neU= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id B2B26ACF1; Mon, 23 Nov 2020 13:14:25 +0000 (UTC) Subject: [PATCH v2 1/3] ns16550: move PCI arrays next to the function using them From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Ian Jackson , Julien Grall , Stefano Stabellini , Wei Liu , Rahul Singh References: <96115b2b-c104-e566-2368-6a2439d2c988@suse.com> Message-ID: Date: Mon, 23 Nov 2020 14:14:25 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <96115b2b-c104-e566-2368-6a2439d2c988@suse.com> Content-Language: en-US Pure code motion; no functional change intended. Signed-off-by: Jan Beulich Reviewed-by: Stefano Stabellini Reviewed-by: Rahul Singh --- v2: New. --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -153,312 +153,6 @@ struct ns16550_config_param { unsigned int uart_offset; unsigned int first_offset; }; - -/* - * Create lookup tables for specific devices. It is assumed that if - * the device found is MMIO, then you have indexed it here. Else, the - * driver does nothing for MMIO based devices. - */ -static const struct ns16550_config_param __initconst uart_param[] = { - [param_default] = { - .reg_width = 1, - .lsr_mask = UART_LSR_THRE, - .max_ports = 1, - }, - [param_trumanage] = { - .reg_shift = 2, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = (UART_LSR_THRE | UART_LSR_TEMT), - .mmio = 1, - .max_ports = 1, - }, - [param_oxford] = { - .base_baud = 4000000, - .uart_offset = 0x200, - .first_offset = 0x1000, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = UART_LSR_THRE, - .mmio = 1, - .max_ports = 1, /* It can do more, but we would need more custom code.*/ - }, - [param_oxford_2port] = { - .base_baud = 4000000, - .uart_offset = 0x200, - .first_offset = 0x1000, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = UART_LSR_THRE, - .mmio = 1, - .max_ports = 2, - }, - [param_pericom_1port] = { - .base_baud = 921600, - .uart_offset = 8, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = UART_LSR_THRE, - .bar0 = 1, - .max_ports = 1, - }, - [param_pericom_2port] = { - .base_baud = 921600, - .uart_offset = 8, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = UART_LSR_THRE, - .bar0 = 1, - .max_ports = 2, - }, - /* - * Of the two following ones, we can't really use all of their ports, - * unless ns16550_com[] would get grown. - */ - [param_pericom_4port] = { - .base_baud = 921600, - .uart_offset = 8, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = UART_LSR_THRE, - .bar0 = 1, - .max_ports = 4, - }, - [param_pericom_8port] = { - .base_baud = 921600, - .uart_offset = 8, - .reg_width = 1, - .fifo_size = 16, - .lsr_mask = UART_LSR_THRE, - .bar0 = 1, - .max_ports = 8, - } -}; -static const struct ns16550_config __initconst uart_config[] = -{ - /* Broadcom TruManage device */ - { - .vendor_id = PCI_VENDOR_ID_BROADCOM, - .dev_id = 0x160a, - .param = param_trumanage, - }, - /* OXPCIe952 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc11b, - .param = param_oxford, - }, - /* OXPCIe952 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc11f, - .param = param_oxford, - }, - /* OXPCIe952 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc138, - .param = param_oxford, - }, - /* OXPCIe952 2 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc158, - .param = param_oxford_2port, - }, - /* OXPCIe952 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc13d, - .param = param_oxford, - }, - /* OXPCIe952 2 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc15d, - .param = param_oxford_2port, - }, - /* OXPCIe952 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc40b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc40f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc41b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc41f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc42b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc42f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc43b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc43f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc44b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc44f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc45b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc45f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc46b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc46f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc47b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc47f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc48b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc48f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc49b, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc49f, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc4ab, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc4af, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc4bb, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc4bf, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc4cb, - .param = param_oxford, - }, - /* OXPCIe200 1 Native UART */ - { - .vendor_id = PCI_VENDOR_ID_OXSEMI, - .dev_id = 0xc4cf, - .param = param_oxford, - }, - /* Pericom PI7C9X7951 Uno UART */ - { - .vendor_id = PCI_VENDOR_ID_PERICOM, - .dev_id = 0x7951, - .param = param_pericom_1port - }, - /* Pericom PI7C9X7952 Duo UART */ - { - .vendor_id = PCI_VENDOR_ID_PERICOM, - .dev_id = 0x7952, - .param = param_pericom_2port - }, - /* Pericom PI7C9X7954 Quad UART */ - { - .vendor_id = PCI_VENDOR_ID_PERICOM, - .dev_id = 0x7954, - .param = param_pericom_4port - }, - /* Pericom PI7C9X7958 Octal UART */ - { - .vendor_id = PCI_VENDOR_ID_PERICOM, - .dev_id = 0x7958, - .param = param_pericom_8port - } -}; #endif static void ns16550_delayed_resume(void *data); @@ -1045,6 +739,314 @@ static int __init check_existence(struct } #ifdef CONFIG_HAS_PCI + +/* + * Create lookup tables for specific devices. It is assumed that if + * the device found is MMIO, then you have indexed it here. Else, the + * driver does nothing for MMIO based devices. + */ +static const struct ns16550_config_param __initconst uart_param[] = { + [param_default] = { + .reg_width = 1, + .lsr_mask = UART_LSR_THRE, + .max_ports = 1, + }, + [param_trumanage] = { + .reg_shift = 2, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = (UART_LSR_THRE | UART_LSR_TEMT), + .mmio = 1, + .max_ports = 1, + }, + [param_oxford] = { + .base_baud = 4000000, + .uart_offset = 0x200, + .first_offset = 0x1000, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = UART_LSR_THRE, + .mmio = 1, + .max_ports = 1, /* It can do more, but we would need more custom code.*/ + }, + [param_oxford_2port] = { + .base_baud = 4000000, + .uart_offset = 0x200, + .first_offset = 0x1000, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = UART_LSR_THRE, + .mmio = 1, + .max_ports = 2, + }, + [param_pericom_1port] = { + .base_baud = 921600, + .uart_offset = 8, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = UART_LSR_THRE, + .bar0 = 1, + .max_ports = 1, + }, + [param_pericom_2port] = { + .base_baud = 921600, + .uart_offset = 8, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = UART_LSR_THRE, + .bar0 = 1, + .max_ports = 2, + }, + /* + * Of the two following ones, we can't really use all of their ports, + * unless ns16550_com[] would get grown. + */ + [param_pericom_4port] = { + .base_baud = 921600, + .uart_offset = 8, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = UART_LSR_THRE, + .bar0 = 1, + .max_ports = 4, + }, + [param_pericom_8port] = { + .base_baud = 921600, + .uart_offset = 8, + .reg_width = 1, + .fifo_size = 16, + .lsr_mask = UART_LSR_THRE, + .bar0 = 1, + .max_ports = 8, + } +}; + +static const struct ns16550_config __initconst uart_config[] = +{ + /* Broadcom TruManage device */ + { + .vendor_id = PCI_VENDOR_ID_BROADCOM, + .dev_id = 0x160a, + .param = param_trumanage, + }, + /* OXPCIe952 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc11b, + .param = param_oxford, + }, + /* OXPCIe952 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc11f, + .param = param_oxford, + }, + /* OXPCIe952 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc138, + .param = param_oxford, + }, + /* OXPCIe952 2 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc158, + .param = param_oxford_2port, + }, + /* OXPCIe952 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc13d, + .param = param_oxford, + }, + /* OXPCIe952 2 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc15d, + .param = param_oxford_2port, + }, + /* OXPCIe952 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc40b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc40f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc41b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc41f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc42b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc42f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc43b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc43f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc44b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc44f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc45b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc45f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc46b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc46f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc47b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc47f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc48b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc48f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc49b, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc49f, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc4ab, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc4af, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc4bb, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc4bf, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc4cb, + .param = param_oxford, + }, + /* OXPCIe200 1 Native UART */ + { + .vendor_id = PCI_VENDOR_ID_OXSEMI, + .dev_id = 0xc4cf, + .param = param_oxford, + }, + /* Pericom PI7C9X7951 Uno UART */ + { + .vendor_id = PCI_VENDOR_ID_PERICOM, + .dev_id = 0x7951, + .param = param_pericom_1port + }, + /* Pericom PI7C9X7952 Duo UART */ + { + .vendor_id = PCI_VENDOR_ID_PERICOM, + .dev_id = 0x7952, + .param = param_pericom_2port + }, + /* Pericom PI7C9X7954 Quad UART */ + { + .vendor_id = PCI_VENDOR_ID_PERICOM, + .dev_id = 0x7954, + .param = param_pericom_4port + }, + /* Pericom PI7C9X7958 Octal UART */ + { + .vendor_id = PCI_VENDOR_ID_PERICOM, + .dev_id = 0x7958, + .param = param_pericom_8port + } +}; + static int __init pci_uart_config(struct ns16550 *uart, bool_t skip_amt, unsigned int idx) { @@ -1211,7 +1213,8 @@ pci_uart_config(struct ns16550 *uart, bo return 0; } -#endif + +#endif /* CONFIG_HAS_PCI */ /* * Used to parse name value pairs and return which value it is along with From patchwork Mon Nov 23 13:14:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11925183 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AB0CC388F9 for ; Mon, 23 Nov 2020 13:15:01 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DFB892075A for ; Mon, 23 Nov 2020 13:15:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="QtQ5S0xq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DFB892075A Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.34239.65137 (Exim 4.92) (envelope-from ) id 1khBg9-00060y-0x; Mon, 23 Nov 2020 13:14:49 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 34239.65137; Mon, 23 Nov 2020 13:14:48 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBg8-00060r-Te; Mon, 23 Nov 2020 13:14:48 +0000 Received: by outflank-mailman (input) for mailman id 34239; Mon, 23 Nov 2020 13:14:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBg7-00060b-4u for xen-devel@lists.xenproject.org; Mon, 23 Nov 2020 13:14:47 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id cbc8f054-9cab-4c43-bad8-eeee34dc9f79; Mon, 23 Nov 2020 13:14:46 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 52413AC2E; Mon, 23 Nov 2020 13:14:45 +0000 (UTC) Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBg7-00060b-4u for xen-devel@lists.xenproject.org; Mon, 23 Nov 2020 13:14:47 +0000 X-Inumbo-ID: cbc8f054-9cab-4c43-bad8-eeee34dc9f79 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id cbc8f054-9cab-4c43-bad8-eeee34dc9f79; Mon, 23 Nov 2020 13:14:46 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1606137285; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0FIY0qtw5BehydKHuoFVwmLca+rCcxPomo1pnRTPLJA=; b=QtQ5S0xqRADBewNZa7h9fQAWbDDvtAy0n4cVMh+OxqP+KdQygoyQtjSNejEggxFLqaAomz eh/f+I0OdteFxBx7vdLg7e2S6zbB0qy39KB2G8ir9r3VxLttL7cpGQRR22fePEhgnE1JgG OmnL9HtpRRq11343RcRD8LN1DcIN2Nk= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 52413AC2E; Mon, 23 Nov 2020 13:14:45 +0000 (UTC) Subject: [PATCH v2 2/3] ns16550: "com=" command line options are x86-specific From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Ian Jackson , Julien Grall , Stefano Stabellini , Wei Liu , Rahul Singh References: <96115b2b-c104-e566-2368-6a2439d2c988@suse.com> Message-ID: Date: Mon, 23 Nov 2020 14:14:44 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <96115b2b-c104-e566-2368-6a2439d2c988@suse.com> Content-Language: en-US Pure code motion (plus the addition of "#ifdef CONFIG_X86); no functional change intended. Reported-by: Julien Grall Signed-off-by: Jan Beulich Reviewed-by: Stefano Stabellini Reviewed-by: Rahul Singh --- v2: Re-base over new earlier patch. --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -318,8 +318,8 @@ Interrupts. Specifying zero disables CM Flag to indicate whether to probe for a CMOS Real Time Clock irrespective of ACPI indicating none to be there. -### com1 -### com2 +### com1 (x86) +### com2 (x86) > `= [/][,[DPS][,[|pci|amt][,[|msi][,[][,[]]]]]]` Both option `com1` and `com2` follow the same format. --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -31,38 +31,6 @@ #include #endif -/* - * Configure serial port with a string: - * [/][,DPS[,[,[,[,]]]]]. - * The tail of the string can be omitted if platform defaults are sufficient. - * If the baud rate is pre-configured, perhaps by a bootloader, then 'auto' - * can be specified in place of a numeric baud rate. Polled mode is specified - * by requesting irq 0. - */ -static char __initdata opt_com1[128] = ""; -static char __initdata opt_com2[128] = ""; -string_param("com1", opt_com1); -string_param("com2", opt_com2); - -enum serial_param_type { - baud, - clock_hz, - data_bits, - io_base, - irq, - parity, - reg_shift, - reg_width, - stop_bits, -#ifdef CONFIG_HAS_PCI - bridge_bdf, - device, - port_bdf, -#endif - /* List all parameters before this line. */ - num_serial_params -}; - static struct ns16550 { int baud, clock_hz, data_bits, parity, stop_bits, fifo_size, irq; u64 io_base; /* I/O port or memory-mapped I/O address. */ @@ -98,32 +66,6 @@ static struct ns16550 { #endif } ns16550_com[2] = { { 0 } }; -struct serial_param_var { - char name[12]; - enum serial_param_type type; -}; - -/* - * Enum struct keeping a table of all accepted parameter names for parsing - * com_console_options for serial port com1 and com2. - */ -static const struct serial_param_var __initconst sp_vars[] = { - {"baud", baud}, - {"clock-hz", clock_hz}, - {"data-bits", data_bits}, - {"io-base", io_base}, - {"irq", irq}, - {"parity", parity}, - {"reg-shift", reg_shift}, - {"reg-width", reg_width}, - {"stop-bits", stop_bits}, -#ifdef CONFIG_HAS_PCI - {"bridge", bridge_bdf}, - {"dev", device}, - {"port", port_bdf}, -#endif -}; - #ifdef CONFIG_HAS_PCI struct ns16550_config { u16 vendor_id; @@ -674,6 +616,19 @@ static struct uart_driver __read_mostly #endif }; +static void ns16550_init_common(struct ns16550 *uart) +{ + uart->clock_hz = UART_CLOCK_HZ; + + /* Default is no transmit FIFO. */ + uart->fifo_size = 1; + + /* Default lsr_mask = UART_LSR_THRE */ + uart->lsr_mask = UART_LSR_THRE; +} + +#ifdef CONFIG_X86 + static int __init parse_parity_char(int c) { switch ( c ) @@ -1217,6 +1172,64 @@ pci_uart_config(struct ns16550 *uart, bo #endif /* CONFIG_HAS_PCI */ /* + * Configure serial port with a string: + * [/][,DPS[,[,[,[,]]]]]. + * The tail of the string can be omitted if platform defaults are sufficient. + * If the baud rate is pre-configured, perhaps by a bootloader, then 'auto' + * can be specified in place of a numeric baud rate. Polled mode is specified + * by requesting irq 0. + */ +static char __initdata opt_com1[128] = ""; +static char __initdata opt_com2[128] = ""; +string_param("com1", opt_com1); +string_param("com2", opt_com2); + +enum serial_param_type { + baud, + clock_hz, + data_bits, + io_base, + irq, + parity, + reg_shift, + reg_width, + stop_bits, +#ifdef CONFIG_HAS_PCI + bridge_bdf, + device, + port_bdf, +#endif + /* List all parameters before this line. */ + num_serial_params +}; + +struct serial_param_var { + char name[12]; + enum serial_param_type type; +}; + +/* + * Enum struct keeping a table of all accepted parameter names for parsing + * com_console_options for serial port com1 and com2. + */ +static const struct serial_param_var __initconst sp_vars[] = { + {"baud", baud}, + {"clock-hz", clock_hz}, + {"data-bits", data_bits}, + {"io-base", io_base}, + {"irq", irq}, + {"parity", parity}, + {"reg-shift", reg_shift}, + {"reg-width", reg_width}, + {"stop-bits", stop_bits}, +#ifdef CONFIG_HAS_PCI + {"bridge", bridge_bdf}, + {"dev", device}, + {"port", port_bdf}, +#endif +}; + +/* * Used to parse name value pairs and return which value it is along with * pointer for the extracted value. */ @@ -1504,17 +1517,6 @@ static void __init ns16550_parse_port_co serial_register_uart(uart - ns16550_com, &ns16550_driver, uart); } -static void ns16550_init_common(struct ns16550 *uart) -{ - uart->clock_hz = UART_CLOCK_HZ; - - /* Default is no transmit FIFO. */ - uart->fifo_size = 1; - - /* Default lsr_mask = UART_LSR_THRE */ - uart->lsr_mask = UART_LSR_THRE; -} - void __init ns16550_init(int index, struct ns16550_defaults *defaults) { struct ns16550 *uart; @@ -1541,6 +1543,8 @@ void __init ns16550_init(int index, stru ns16550_parse_port_config(uart, (index == 0) ? opt_com1 : opt_com2); } +#endif /* CONFIG_X86 */ + #ifdef CONFIG_HAS_DEVICE_TREE static int __init ns16550_uart_dt_init(struct dt_device_node *dev, const void *data) From patchwork Mon Nov 23 13:15:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11925185 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1FC4C64E75 for ; Mon, 23 Nov 2020 13:15:22 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 514D520BED for ; Mon, 23 Nov 2020 13:15:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="ihSX8z9t" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 514D520BED Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.34245.65149 (Exim 4.92) (envelope-from ) id 1khBgX-000686-Du; Mon, 23 Nov 2020 13:15:13 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 34245.65149; Mon, 23 Nov 2020 13:15:13 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBgX-00067z-AE; Mon, 23 Nov 2020 13:15:13 +0000 Received: by outflank-mailman (input) for mailman id 34245; Mon, 23 Nov 2020 13:15:11 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBgV-00067e-53 for xen-devel@lists.xenproject.org; Mon, 23 Nov 2020 13:15:11 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 4a519533-cd01-4a1c-98a4-41afd169b46e; Mon, 23 Nov 2020 13:15:10 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id A19B6AF16; Mon, 23 Nov 2020 13:15:09 +0000 (UTC) Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1khBgV-00067e-53 for xen-devel@lists.xenproject.org; Mon, 23 Nov 2020 13:15:11 +0000 X-Inumbo-ID: 4a519533-cd01-4a1c-98a4-41afd169b46e Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 4a519533-cd01-4a1c-98a4-41afd169b46e; Mon, 23 Nov 2020 13:15:10 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1606137309; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=STV/VFDycICb3sCl4qYDaDzw0LD/V4afIeeRpkzJDFg=; b=ihSX8z9trpD6NXkBPAkTnI3mf4ZpNO4txDGsE/Imf5s3WcEo9j+CvRbChyRnRLqsPlrWnc hWEOKLTT6q6VgbuhC+mvwDXzL6zEetW58XYpqRgXrarmoNTsTdigewmt3sOtsU50tghF/Z DyiJzqtng6Db2njxg91v379bazxWGFM= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id A19B6AF16; Mon, 23 Nov 2020 13:15:09 +0000 (UTC) Subject: [PATCH v2 3/3] ns16550: drop stray "#ifdef CONFIG_HAS_PCI" From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , George Dunlap , Ian Jackson , Julien Grall , Stefano Stabellini , Wei Liu , Rahul Singh References: <96115b2b-c104-e566-2368-6a2439d2c988@suse.com> Message-ID: Date: Mon, 23 Nov 2020 14:15:09 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <96115b2b-c104-e566-2368-6a2439d2c988@suse.com> Content-Language: en-US There's no point wrapping the function invocation when - the function body is already suitably wrapped, - the function itself is unconditionally available. Reported-by: Julien Grall Signed-off-by: Jan Beulich Reviewed-by: Stefano Stabellini Reviewed-by: Rahul Singh --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -662,9 +662,7 @@ static int __init check_existence(struct return 1; /* Everything is MMIO */ #endif -#ifdef CONFIG_HAS_PCI pci_serial_early_init(uart); -#endif /* * Do a simple existence test first; if we fail this,