From patchwork Thu Jun 10 02:09:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Schmitz X-Patchwork-Id: 1490146 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=nHya4Et8; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4G0nWB1ks9z9sW7 for ; Thu, 10 Jun 2021 12:10:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229740AbhFJCMZ (ORCPT ); Wed, 9 Jun 2021 22:12:25 -0400 Received: from mail-pj1-f53.google.com ([209.85.216.53]:47069 "EHLO mail-pj1-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229705AbhFJCMY (ORCPT ); Wed, 9 Jun 2021 22:12:24 -0400 Received: by mail-pj1-f53.google.com with SMTP id pi6-20020a17090b1e46b029015cec51d7cdso2831741pjb.5; Wed, 09 Jun 2021 19:10:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=eWB1M8mXOkRZXtMwwlZeHzR+WSj1aGwPLzSUUqVXtf4=; b=nHya4Et8BAobXgHqxgJWyqekKi5Knoh/6wS4l6GPBUWUZQ4XGtNVJfNsjG+mYwbjSc fzKmC3f8J/bOnXbdw0UuPYODSi6cMfuCWM72Vssit+UbgzmxvLJeHvcmlTImBsCoHzvc j0rXnh03Uhw6SwuvN+hOAyYQ6iiY7C97Rf6mWQjmvLtPu6F3cwuacYnggTZW6eJMxXW6 KDgZJlOQhXN67vyd0gHInRGZXNVIAfKRSYuevlT8d8NtO/GrPlvi7A+nwTNCCZz72TTi KNiVRTro9TzcqEx3lchqdAIusfi3bOwN2phg+InEm1cbWcGou62WVytt0c8LOs4vBLuQ BLGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=eWB1M8mXOkRZXtMwwlZeHzR+WSj1aGwPLzSUUqVXtf4=; b=oSlecZHBvIh7+iMlAsxvWh6CAZP9y6pUg/VTbdDrclWR74w/VeDHgARRKjoLGlFzMi DF9C+2XpHteypOW4k/BIKZALoIvgh4xdrpzbBU/j5LHEypA8yEvGptpDuWukP905hQJl pAyf73zr4fAzeLZKztP9DZn0lHEuJAa0GyEa3csR3egYVDmD8KEbH+k+Yu5Nbs6D8bSH A+z4ohM4mkTM4gq+/lHjxPJqypc0+LZ/t88jWj7tvD8NOpZWkeAy86lJwOjHDunBcdWD 1X7MtQcljMcXngmoZQ0Y+g9UkvhMQlPXMk9uT9WlAppsDd0iaN+DXCCl5JBOCtXnQsjZ jz3Q== X-Gm-Message-State: AOAM533g+HURRktino4sf2dur1Ftso5WQ0Hjrabp2XWHrqnllbGNV9Hq qBXPDSVd638Ql03TmChGTxE= X-Google-Smtp-Source: ABdhPJy/1+EFzTs5QCX9ypO7DPpBrL3Q9BZfdXQJZ84oE0r5P2EQ3Gvc20OngPSmHghm4zgJOUeppA== X-Received: by 2002:a17:90a:1b8f:: with SMTP id w15mr754476pjc.101.1623290960029; Wed, 09 Jun 2021 19:09:20 -0700 (PDT) Received: from xplor.waratah.dyndns.org (222-152-189-137-fibre.sparkbb.co.nz. [222.152.189.137]) by smtp.gmail.com with ESMTPSA id s11sm6103405pjz.42.2021.06.09.19.09.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jun 2021 19:09:19 -0700 (PDT) Received: by xplor.waratah.dyndns.org (Postfix, from userid 1000) id F3ABB3603D9; Thu, 10 Jun 2021 14:09:15 +1200 (NZST) From: Michael Schmitz To: linux-m68k@vger.kernel.org, geert@linux-m68k.org Cc: linux-ide@vger.kernel.org, fthain@linux-m68k.org, alex@kazik.de, Michael Schmitz Subject: [PATCH v2 1/2] m68k: io_mm.h - add APNE 100 MBit support Date: Thu, 10 Jun 2021 14:09:12 +1200 Message-Id: <1623290953-18000-2-git-send-email-schmitzmic@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1623290953-18000-1-git-send-email-schmitzmic@gmail.com> References: <1623224214-4836-1-git-send-email-schmitzmic@gmail.com> <1623290953-18000-1-git-send-email-schmitzmic@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Add code to support 10 Mbit and 100 Mbit mode for APNE driver. A new ISA type ISA_TYPE_AG16 dynamically switches the Amiga ISA inb accessor to word access as required by the 100 Mbit cards. Patch modified after patch "[PATCH RFC net-next] Amiga PCMCIA 100 MBit card support" submitted to netdev 2018/09/16 by Alex Kazik . Signed-off-by: Michael Schmitz --- Changes from v1: Andreas Schwab: - remove redundant fallthrough annotations Changes from RFC: Geert Uytterhoeven: - rename ISA_TYPE_AG100 to ISA_TYPE_AG16 (16 bit cards) - move ISA_TYPE_AG16 case inside #ifdef CONFIG_AMIGA_PCMCIA - change #if defined(CONFIG_APNE_100MBIT) to #ifdef - fix parentheses in isa_inb() define - omit comment about compiler optimization - add ISA_TYPE_AG16 case to isa_delay() fixup - review comment Andreas Schwab (fallthrough) --- arch/m68k/include/asm/io_mm.h | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/arch/m68k/include/asm/io_mm.h b/arch/m68k/include/asm/io_mm.h index 9c521b0..3ab2f1d 100644 --- a/arch/m68k/include/asm/io_mm.h +++ b/arch/m68k/include/asm/io_mm.h @@ -101,6 +101,11 @@ #define ISA_TYPE_Q40 (1) #define ISA_TYPE_AG (2) #define ISA_TYPE_ENEC (3) +#define ISA_TYPE_AG16 (4) /* for 100 MBit APNE card */ + +#if defined(CONFIG_APNE100MBIT) +#define MULTI_ISA 1 +#endif #if defined(CONFIG_Q40) && !defined(MULTI_ISA) #define ISA_TYPE ISA_TYPE_Q40 @@ -136,6 +141,9 @@ static inline u8 __iomem *isa_itb(unsigned long addr) case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_IO_B(addr); #endif #ifdef CONFIG_AMIGA_PCMCIA +#ifdef CONFIG_APNE100MBIT + case ISA_TYPE_AG16: +#endif case ISA_TYPE_AG: return (u8 __iomem *)AG_ISA_IO_B(addr); #endif #ifdef CONFIG_ATARI_ROM_ISA @@ -155,6 +163,9 @@ static inline u16 __iomem *isa_itw(unsigned long addr) case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_IO_W(addr); #endif #ifdef CONFIG_AMIGA_PCMCIA +#ifdef CONFIG_APNE100MBIT + case ISA_TYPE_AG16: +#endif case ISA_TYPE_AG: return (u16 __iomem *)AG_ISA_IO_W(addr); #endif #ifdef CONFIG_ATARI_ROM_ISA @@ -171,6 +182,9 @@ static inline u32 __iomem *isa_itl(unsigned long addr) switch(ISA_TYPE) { #ifdef CONFIG_AMIGA_PCMCIA +#ifdef CONFIG_APNE100MBIT + case ISA_TYPE_AG16: +#endif case ISA_TYPE_AG: return (u32 __iomem *)AG_ISA_IO_W(addr); #endif } @@ -184,6 +198,9 @@ static inline u8 __iomem *isa_mtb(unsigned long addr) case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_MEM_B(addr); #endif #ifdef CONFIG_AMIGA_PCMCIA +#ifdef CONFIG_APNE100MBIT + case ISA_TYPE_AG16: +#endif case ISA_TYPE_AG: return (u8 __iomem *)addr; #endif #ifdef CONFIG_ATARI_ROM_ISA @@ -203,6 +220,9 @@ static inline u16 __iomem *isa_mtw(unsigned long addr) case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_MEM_W(addr); #endif #ifdef CONFIG_AMIGA_PCMCIA +#ifdef CONFIG_APNE100MBIT + case ISA_TYPE_AG16: +#endif case ISA_TYPE_AG: return (u16 __iomem *)addr; #endif #ifdef CONFIG_ATARI_ROM_ISA @@ -216,13 +236,14 @@ static inline u16 __iomem *isa_mtw(unsigned long addr) } -#define isa_inb(port) in_8(isa_itb(port)) #define isa_inw(port) (ISA_SEX ? in_be16(isa_itw(port)) : in_le16(isa_itw(port))) #define isa_inl(port) (ISA_SEX ? in_be32(isa_itl(port)) : in_le32(isa_itl(port))) #define isa_outb(val,port) out_8(isa_itb(port),(val)) #define isa_outw(val,port) (ISA_SEX ? out_be16(isa_itw(port),(val)) : out_le16(isa_itw(port),(val))) #define isa_outl(val,port) (ISA_SEX ? out_be32(isa_itl(port),(val)) : out_le32(isa_itl(port),(val))) +#define isa_inb(port) ((ISA_TYPE == ISA_TYPE_AG16) ? ((port) & 1 ? isa_inw((port) - 1) & 0xff : isa_inw(port) >> 8) : in_8(isa_itb(port))) + #define isa_readb(p) in_8(isa_mtb((unsigned long)(p))) #define isa_readw(p) \ (ISA_SEX ? in_be16(isa_mtw((unsigned long)(p))) \ @@ -270,6 +291,9 @@ static inline void isa_delay(void) case ISA_TYPE_Q40: isa_outb(0,0x80); break; #endif #ifdef CONFIG_AMIGA_PCMCIA +#ifdef CONFIG_APNE100MBIT + case ISA_TYPE_AG16: break; +#endif case ISA_TYPE_AG: break; #endif #ifdef CONFIG_ATARI_ROM_ISA From patchwork Thu Jun 10 02:09:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Schmitz X-Patchwork-Id: 1490145 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=X/ktL3nC; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4G0nW16NZPz9s1l for ; Thu, 10 Jun 2021 12:10:21 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229659AbhFJCMQ (ORCPT ); Wed, 9 Jun 2021 22:12:16 -0400 Received: from mail-pg1-f177.google.com ([209.85.215.177]:36823 "EHLO mail-pg1-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229705AbhFJCMP (ORCPT ); Wed, 9 Jun 2021 22:12:15 -0400 Received: by mail-pg1-f177.google.com with SMTP id 27so21313234pgy.3; Wed, 09 Jun 2021 19:10:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=x3vxfoigo83sshUyO8P1oaAvHedMM0FfePK8OA+A7B8=; b=X/ktL3nCyrN1tXx7R1VVaAqdxZsKhBl5yx98xe4GMC/AJwOQ+xYMkMVFGddbHAX5AU gQHDumBrd1MUQFh3UJtg+xXt2Hgpo8YsnsyaysbUH9Q+4D3xRbQcbHhfgRdkOwcvVqcu N1YwZFwP0YqX4K2IXsgS2MLEE0wx0BlHMKO0U4XZeWbgeTVLOfbQOdZ9prso0ylik0hs RqITagGsMyQUuQNObhBr+Aft/8zMRy1Gc9BOIzoQ+i0EiYi2PuQaHVvr5QIr7WrOPhoT RjDojxmuWq4hyzAr1N4ghkiEgyAYRfVdgaG4KT03zyY9IotqqPrMRXUKZSawJJgckl/j 03kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=x3vxfoigo83sshUyO8P1oaAvHedMM0FfePK8OA+A7B8=; b=dqqj0FgNPYk8NENmzqAocWJprO67Mk72JpSPlpSHgUFffG5PfZqJe8QF+iJTMgAxoI 8f7mO20bOgPHTI3WqeAz5WPN9R/VBUmcPBjMpinPignl63j3eCoO9EjxU9jocWJ/GjWX UCUliDVORT2QjBBqKDSidZG+bz6k+msQkpT0a+zBchsnievPec6EYShPh6/gpL3GJl+h JluaQLRdsr36UNU+TI/5r7cbAtekKCSpg/z3B0cHlOGVlNs+E6VKhIXF+r0UoCxnnG09 Ag5pJJLarzo2lwfFwD4y2aT0H5W9Z5PfbGDpFS4C2dXSrucuDDqJBDSNP0MoPZ+V7wje uauQ== X-Gm-Message-State: AOAM532ZkV8RAgiJKCsQhN0MRoco6vnCK8WcDoZUKYeHAbigtlCWhfRA eYVvIqWqemfr26l7jlnLh88= X-Google-Smtp-Source: ABdhPJxuY1pFEfQzlV7e93GvPmzbBQJiT7iKAeW6YFRvFGbKAaQj3KSMbDqwjavAJvbRTCBir7aKnQ== X-Received: by 2002:a62:cdc6:0:b029:2ec:8ee0:57bd with SMTP id o189-20020a62cdc60000b02902ec8ee057bdmr676332pfg.78.1623290960375; Wed, 09 Jun 2021 19:09:20 -0700 (PDT) Received: from xplor.waratah.dyndns.org (222-152-189-137-fibre.sparkbb.co.nz. [222.152.189.137]) by smtp.gmail.com with ESMTPSA id 15sm722309pfy.15.2021.06.09.19.09.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jun 2021 19:09:19 -0700 (PDT) Received: by xplor.waratah.dyndns.org (Postfix, from userid 1000) id 9A8BA3603E0; Thu, 10 Jun 2021 14:09:16 +1200 (NZST) From: Michael Schmitz To: linux-m68k@vger.kernel.org, geert@linux-m68k.org Cc: linux-ide@vger.kernel.org, fthain@linux-m68k.org, alex@kazik.de, Michael Schmitz Subject: [PATCH v2 2/2] net/8390: apne.c - add 100 Mbit support to apne.c driver Date: Thu, 10 Jun 2021 14:09:13 +1200 Message-Id: <1623290953-18000-3-git-send-email-schmitzmic@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1623290953-18000-1-git-send-email-schmitzmic@gmail.com> References: <1623224214-4836-1-git-send-email-schmitzmic@gmail.com> <1623290953-18000-1-git-send-email-schmitzmic@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Add Kconfig option, module parameter and PCMCIA reset code required to support 100 Mbit PCMCIA ethernet cards on Amiga. 10 Mbit and 100 Mbit mode are supported by the same module. A module parameter switches Amiga ISA IO accessors to word access by changing isa_type at runtime. Additional code to reset the PCMCIA hardware is also added to the driver probe. Patch modified after patch "[PATCH RFC net-next] Amiga PCMCIA 100 MBit card support" submitted to netdev 2018/09/16 by Alex Kazik . Signed-off-by: Michael Schmitz --- Changes from RFC: Geert Uytterhoeven: - change APNE_100MBIT to depend on APNE - change '---help---' to 'help' (former no longer supported) - fix whitespace errors - fix module_param_named() arg count - protect all added code by #ifdef CONFIG_APNE_100MBIT --- drivers/net/ethernet/8390/Kconfig | 12 ++++++++++++ drivers/net/ethernet/8390/apne.c | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/drivers/net/ethernet/8390/Kconfig b/drivers/net/ethernet/8390/Kconfig index 9f4b302..8ff8da6 100644 --- a/drivers/net/ethernet/8390/Kconfig +++ b/drivers/net/ethernet/8390/Kconfig @@ -143,6 +143,18 @@ config APNE To compile this driver as a module, choose M here: the module will be called apne. +config APNE100MBIT + bool "PCMCIA NE2000 100MBit support" + depends on APNE + default n + help + This changes the driver to support 10/100Mbit cards (e.g. Netgear + FA411, CNet Singlepoint). 10 MBit cards and 100 MBit cards are + supported by the same driver. + + To activate 100 Mbit support at runtime, use the apne100 module + parameter. + config PCMCIA_PCNET tristate "NE2000 compatible PCMCIA support" depends on PCMCIA diff --git a/drivers/net/ethernet/8390/apne.c b/drivers/net/ethernet/8390/apne.c index fe6c834..cd99cc3 100644 --- a/drivers/net/ethernet/8390/apne.c +++ b/drivers/net/ethernet/8390/apne.c @@ -120,6 +120,12 @@ static u32 apne_msg_enable; module_param_named(msg_enable, apne_msg_enable, uint, 0444); MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bitmap)"); +#ifdef CONFIG_APNE100MBIT +static u32 apne_100_mbit; +module_param_named(apne_100_mbit_msg, apne_100_mbit, uint, 0); +MODULE_PARM_DESC(apne_100_mbit_msg, "Enable 100 Mbit support"); +#endif + struct net_device * __init apne_probe(int unit) { struct net_device *dev; @@ -139,6 +145,11 @@ struct net_device * __init apne_probe(int unit) if ( !(AMIGAHW_PRESENT(PCMCIA)) ) return ERR_PTR(-ENODEV); +#ifdef CONFIG_APNE100MBIT + if (apne_100_mbit) + isa_type = ISA_TYPE_AG16; +#endif + pr_info("Looking for PCMCIA ethernet card : "); /* check if a card is inserted */ @@ -590,6 +601,16 @@ static int init_pcmcia(void) #endif u_long offset; +#ifdef CONFIG_APNE100MBIT + /* reset card (idea taken from CardReset by Artur Pogoda) */ + { + u_char tmp = gayle.intreq; + + gayle.intreq = 0xff; mdelay(1); + gayle.intreq = tmp; mdelay(300); + } +#endif + pcmcia_reset(); pcmcia_program_voltage(PCMCIA_0V); pcmcia_access_speed(PCMCIA_SPEED_250NS);