From patchwork Mon Mar 27 19:06:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1761921 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=D8eOtGtI; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Plj934NL9z1yXv for ; Tue, 28 Mar 2023 06:11:35 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 930E786119; Mon, 27 Mar 2023 21:10:39 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="D8eOtGtI"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D5D6D8610C; Mon, 27 Mar 2023 21:09:31 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D69C486113 for ; Mon, 27 Mar 2023 21:09:22 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-pg1-x52f.google.com with SMTP id h31so5792835pgl.6 for ; Mon, 27 Mar 2023 12:09:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1679944161; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=j+sO1O9ajkpBbuMe6WNg5SkIElzks2a6aNycYigxSx0=; b=D8eOtGtIYRwzPJu3GM1vPcMaYgP46hMLEIyroNX4qpNmZtbCrL1ZUU2VANbHA7QgAx aFsdhtf2PsA4+zokCuI2HQK9a2KlMeixa0cuNpO0XStpjr6YQd0PU2gdKc2xV7a6Lyho VSaTkX9d9vdbw/hkxjqXxwLayaF6B4mXWrsWU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679944161; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j+sO1O9ajkpBbuMe6WNg5SkIElzks2a6aNycYigxSx0=; b=UI3oCfAyKoN7CMhhn/W6NO6LVTpHqNo1JgiiAy8KYmOg60inuHvpaYw+aDfRpGbgOv PeKQE53jxYq5Mg8MGsjwaTD8/5uWfTQHq9tItm0T5gsMvGFfD4ILzuSk/curXLbRISeQ eB3oH5+ckUvhMWwHURMbQ9JE14cI1PTZCjNnFKg0S+fyHLujPCUOBMWmH2EShjmAwV3w 7q6vKeq/otOZijiDsi2k+3yRSaLEL6qvQ+wLGyZby9iYeeXxzgedDeWFzj0lYAIsVCT8 glPnTxc35gEuQyo/l4/MTJT1zAf+X7Vz9N1WhXlOBW0NW6bfkzg7aE+yCbGYx+T9kxaZ iFkg== X-Gm-Message-State: AAQBX9fdZM/hGiYDhEsLin/Axvm5pgcLkjAvbmztrogvJxuaXzKtQHrQ EiRVZBPRuBg06++J11d8qBzdNHWwrFLELmJoRag= X-Google-Smtp-Source: AKy350boWzW3T6uUyeevpeMSI6RYgRGgFFoZLyShrdDskOjbwim7ivzGPfi37OHRjCrlMguueo3Hwg== X-Received: by 2002:aa7:956d:0:b0:627:8e40:68e0 with SMTP id x13-20020aa7956d000000b006278e4068e0mr12385617pfq.15.1679944160764; Mon, 27 Mar 2023 12:09:20 -0700 (PDT) Received: from localhost.localdomain ([27.110.126.54]) by smtp.gmail.com with ESMTPSA id d9-20020aa78e49000000b005cd81a74821sm15653334pfr.152.2023.03.27.12.09.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Mar 2023 12:09:20 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Bin Meng , Simon Glass , Heinrich Schuchardt , Mattijs Korpershoek Subject: [PATCH 10/30] ide: Correct use of ATAPI Date: Tue, 28 Mar 2023 08:06:57 +1300 Message-Id: <20230328080702.10.Ia41ab329f6a5b52b15e58c5f405ce07c5b5545d1@changeid> X-Mailer: git-send-email 2.40.0.348.gf938b09366-goog In-Reply-To: <20230327190717.1796230-1-sjg@chromium.org> References: <20230327190717.1796230-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean The use of atapi_read() was incorrect dropped. Fix this so that it will be used when needed. Use a udevice for the first argument of atapi_read() so it is consistent with ide_read(). This requires much of the ATAPI code to be brought out from behind the existing #ifdef. It will still be removed by the compiler if it is not needed. Add an atapi flag to struct blk_desc so the information can be retained. Fixes: 145df842b44 ("dm: ide: Add support for driver-model block devices") Fixes: d0075059e4d ("ide: Drop non-DM code for BLK") Signed-off-by: Simon Glass Reviewed-by: Mattijs Korpershoek --- drivers/block/ide.c | 20 +++++++++++++++++--- include/blk.h | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/block/ide.c b/drivers/block/ide.c index fa5f68ffeb01..875192cba163 100644 --- a/drivers/block/ide.c +++ b/drivers/block/ide.c @@ -155,7 +155,6 @@ OUT: *last = '\0'; } -#ifdef CONFIG_ATAPI /**************************************************************************** * ATAPI Support */ @@ -422,9 +421,10 @@ error: #define ATAPI_READ_BLOCK_SIZE 2048 /* assuming CD part */ #define ATAPI_READ_MAX_BLOCK (ATAPI_READ_MAX_BYTES/ATAPI_READ_BLOCK_SIZE) -ulong atapi_read(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, +ulong atapi_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt, void *buffer) { + struct blk_desc *block_dev = dev_get_uclass_plat(dev); int device = block_dev->devnum; ulong n = 0; unsigned char ccb[12]; /* Command descriptor block */ @@ -466,6 +466,8 @@ ulong atapi_read(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, return n; } +#ifdef CONFIG_ATAPI + static void atapi_inquiry(struct blk_desc *dev_desc) { unsigned char ccb[12]; /* Command descriptor block */ @@ -653,6 +655,7 @@ static void ide_ident(struct blk_desc *dev_desc) #ifdef CONFIG_ATAPI if (is_atapi) { + dev_desc->atapi = true; atapi_inquiry(dev_desc); return; } @@ -1010,6 +1013,17 @@ WR_OUT: return n; } +ulong ide_or_atapi_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt, + void *buffer) +{ + struct blk_desc *desc = dev_get_uclass_plat(dev); + + if (IS_ENABLED(CONFIG_ATAPI) && desc->atapi) + return atapi_read(dev, blknr, blkcnt, buffer); + + return ide_read(dev, blknr, blkcnt, buffer); +} + static int ide_blk_probe(struct udevice *udev) { struct blk_desc *desc = dev_get_uclass_plat(udev); @@ -1029,7 +1043,7 @@ static int ide_blk_probe(struct udevice *udev) } static const struct blk_ops ide_blk_ops = { - .read = ide_read, + .read = ide_or_atapi_read, .write = ide_write, }; diff --git a/include/blk.h b/include/blk.h index 1db203c1baba..871922dcde07 100644 --- a/include/blk.h +++ b/include/blk.h @@ -66,6 +66,7 @@ struct blk_desc { /* device can use 48bit addr (ATA/ATAPI v7) */ unsigned char lba48; #endif + unsigned char atapi; /* Use ATAPI protocol */ lbaint_t lba; /* number of blocks */ unsigned long blksz; /* block size */ int log2blksz; /* for convenience: log2(blksz) */