From owner-freebsd-hackers@freebsd.org Thu Jan 28 15:45:20 2016 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 43A0CA71FFD for ; Thu, 28 Jan 2016 15:45:20 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1b.ore.mailhop.org (outbound1b.ore.mailhop.org [54.200.247.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 277531F4E for ; Thu, 28 Jan 2016 15:45:19 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from ilsoft.org (unknown [73.34.117.227]) by outbound1.ore.mailhop.org (Halon Mail Gateway) with ESMTPSA; Thu, 28 Jan 2016 15:45:17 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.14.9) with ESMTP id u0SFjBwr034034; Thu, 28 Jan 2016 08:45:11 -0700 (MST) (envelope-from ian@freebsd.org) Message-ID: <1453995911.1275.14.camel@freebsd.org> Subject: Re: impossible to set pata dma mode? From: Ian Lepore To: Norbert Koch , freebsd-hackers@FreeBSD.org Date: Thu, 28 Jan 2016 08:45:11 -0700 In-Reply-To: <56A9D502.7010809@demig.de> References: <56A9D502.7010809@demig.de> Content-Type: text/plain; charset="us-ascii" X-Mailer: Evolution 3.16.5 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2016 15:45:20 -0000 On Thu, 2016-01-28 at 09:44 +0100, Norbert Koch wrote: > Hello. > > I have to reduce dma mode from udma to wdma2 > for a flash device. > > In the past this was easy using atacontrol > but, afaiks it seems to be impossible using camcontrol. > > camcontrol negotiate ada0 -M wdma > ...You can only modify user parameters > > camcontrol negotiate ada0 -NM wdma > Works, but I see no way how those user > parameters become active parameters as the > driver only reads then in attach as far as > I can see. > > It seems like the ata driver's interface > allows to change the current settings > (XPT_SET_TRAN_SETTINGS/CTS_TYPE_CURRENT_SETTINGS) > so, why is camcontrol so restrictive? > > Thank you, > Norbert Koch I don't know about changing it on the fly with camcontrol (I've never done that), but you can configure it at boot time with a tunable in loader.conf of the form dev.ada.0.mode="modestr" Where modestr is one of these (from dev/ata/ata-all.c): if (!strcasecmp(str, "PIO0")) return (ATA_PIO0); if (!strcasecmp(str, "PIO1")) return (ATA_PIO1); if (!strcasecmp(str, "PIO2")) return (ATA_PIO2); if (!strcasecmp(str, "PIO3")) return (ATA_PIO3); if (!strcasecmp(str, "PIO4")) return (ATA_PIO4); if (!strcasecmp(str, "WDMA0")) return (ATA_WDMA0); if (!strcasecmp(str, "WDMA1")) return (ATA_WDMA1); if (!strcasecmp(str, "WDMA2")) return (ATA_WDMA2); if (!strcasecmp(str, "UDMA0")) return (ATA_UDMA0); if (!strcasecmp(str, "UDMA16")) return (ATA_UDMA0); if (!strcasecmp(str, "UDMA1")) return (ATA_UDMA1); if (!strcasecmp(str, "UDMA25")) return (ATA_UDMA1); if (!strcasecmp(str, "UDMA2")) return (ATA_UDMA2); if (!strcasecmp(str, "UDMA33")) return (ATA_UDMA2); if (!strcasecmp(str, "UDMA3")) return (ATA_UDMA3); if (!strcasecmp(str, "UDMA44")) return (ATA_UDMA3); if (!strcasecmp(str, "UDMA4")) return (ATA_UDMA4); if (!strcasecmp(str, "UDMA66")) return (ATA_UDMA4); if (!strcasecmp(str, "UDMA5")) return (ATA_UDMA5); if (!strcasecmp(str, "UDMA100")) return (ATA_UDMA5); if (!strcasecmp(str, "UDMA6")) return (ATA_UDMA6); if (!strcasecmp(str, "UDMA133")) return (ATA_UDMA6); -- Ian