From owner-freebsd-mips@FreeBSD.ORG Wed Apr 10 23:22:51 2013 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id E5FE2969; Wed, 10 Apr 2013 23:22:51 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-we0-x236.google.com (mail-we0-x236.google.com [IPv6:2a00:1450:400c:c03::236]) by mx1.freebsd.org (Postfix) with ESMTP id 2B85711B; Wed, 10 Apr 2013 23:22:51 +0000 (UTC) Received: by mail-we0-f182.google.com with SMTP id k14so802482wer.13 for ; Wed, 10 Apr 2013 16:22:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=3Md5WeJXTkcBEip16slf90CqBSqRfZL0L9lIuqBIgmM=; b=TD0zu7I0DyRi3uvhUOH5QytNntUq/yyaXixNzYq8KBoNnFYYd3rEScrBFACx+iPeIi f6weM/gVyXQfSUnaw7PjlR/ohm1PzQ+IuTFy+niu6oF4E+O8hi+ewm34l4AWtiS5vttH xbN4eJlyO4Nj4ej7wabses1CxlI/LXINW7pb0g3cvM6S6OUNFcZByiJ7JLJf/oaXFf7W 2mpoO0S6bi57v5XWjH5wwfNE+1VLLK4Sp559EtuemS/V7UpKNr+Fga9B9kOCMcMROZ4k B24/2gQyjI8ZkwJIJE+VLR6yPnLAkohDl9TbciVHqSSxgpTUj64EEz0G0shco794Oxg0 RWYA== MIME-Version: 1.0 X-Received: by 10.194.88.138 with SMTP id bg10mr6752300wjb.13.1365636169603; Wed, 10 Apr 2013 16:22:49 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.217.121.136 with HTTP; Wed, 10 Apr 2013 16:22:49 -0700 (PDT) In-Reply-To: <1365619856.41399.242.camel@revolution.hippie.lan> References: <20130407011307.9a9a9d64.ray@freebsd.org> <20130407022428.86a66c6a.ray@freebsd.org> <20130408153334.9cc11688aedbf32dcbf83a7b@freebsd.org> <1365605147.41399.227.camel@revolution.hippie.lan> <1365609642.41399.237.camel@revolution.hippie.lan> <1365619856.41399.242.camel@revolution.hippie.lan> Date: Wed, 10 Apr 2013 16:22:49 -0700 X-Google-Sender-Auth: gh8em2IsmuQF1lUaz5gdmCrwx5A Message-ID: Subject: Re: [PATCH] MMC/SD SPI-mode driver From: Adrian Chadd To: Ian Lepore Content-Type: text/plain; charset=ISO-8859-1 Cc: Aleksandr Rybalko , Dmytro , freebsd-mips@freebsd.org X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Apr 2013 23:22:52 -0000 On 10 April 2013 11:50, Ian Lepore wrote: > Maybe something like this could work? > > static int > ar71xx_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) > { > if (cmd->cs == sc->magic_mapped_flash_chipsel && > cmd->tx_cmd == NULL && cmd->tx_data == NULL && > *(uint8_t *)cmd->rx_cmd == SPIFLASH_READ_OPCODE && > /* maybe some other constraints I don't know about */ > /* maybe even check that child is the mx25l driver */) > return do_magic_mapped_read(...); > else > return do_mundane_nonmapped_transfer(...); > } So you're special casing it in the bus code rather than the driver code. It's still ugly, but it's hid from the driver. Adrian