public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel•crashing.org>
To: dri-devel@lists•freedesktop.org
Cc: "Y . C . Chen" <yc_chen@aspeedtech•com>,
	airlied@redhat•com, eich@suse•come, linuxppc-dev@ozlabs•org
Subject: [PATCH 08/12] drm/ast: Factor mmc_test code in POST code
Date: Fri, 24 Feb 2017 09:53:53 +1100	[thread overview]
Message-ID: <20170223225357.9572-8-benh@kernel.crashing.org> (raw)
In-Reply-To: <20170223225357.9572-1-benh@kernel.crashing.org>

There's a some duplication for what's essentially copies of
two loops, so factor it. The upcoming AST2500 POST code adds
more of them. Also cleanup return types for the test functions,
most of them return a boolean, some return a u32.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel•crashing.org>
--

v2. - Keep the split between the "test" and "test2" functions
      as they have a different exit condition in the loop and
      a different return type.
    - Fix the return types accross the call chain
---
 drivers/gpu/drm/ast/ast_post.c | 82 ++++++++++++++++--------------------------
 1 file changed, 31 insertions(+), 51 deletions(-)

diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
index e802450..c55067c 100644
--- a/drivers/gpu/drm/ast/ast_post.c
+++ b/drivers/gpu/drm/ast/ast_post.c
@@ -445,85 +445,65 @@ static const u32 pattern[8] = {
 	0x7C61D253
 };
 
-static int mmc_test_burst(struct ast_private *ast, u32 datagen)
+static bool mmc_test(struct ast_private *ast, u32 datagen, u8 test_ctl)
 {
 	u32 data, timeout;
 
 	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
-	ast_moutdwm(ast, 0x1e6e0070, 0x000000c1 | (datagen << 3));
+	ast_moutdwm(ast, 0x1e6e0070, (datagen << 3) | test_ctl);
 	timeout = 0;
 	do {
 		data = ast_mindwm(ast, 0x1e6e0070) & 0x3000;
-		if (data & 0x2000) {
-			return 0;
-		}
+		if (data & 0x2000)
+			return false;
 		if (++timeout > TIMEOUT) {
 			ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
-			return 0;
+			return false;
 		}
 	} while (!data);
-	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
-	return 1;
+	ast_moutdwm(ast, 0x1e6e0070, 0x0);
+	return true;
 }
 
-static int mmc_test_burst2(struct ast_private *ast, u32 datagen)
+static u32 mmc_test2(struct ast_private *ast, u32 datagen, u8 test_ctl)
 {
 	u32 data, timeout;
 
 	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
-	ast_moutdwm(ast, 0x1e6e0070, 0x00000041 | (datagen << 3));
+	ast_moutdwm(ast, 0x1e6e0070, (datagen << 3) | test_ctl);
 	timeout = 0;
 	do {
 		data = ast_mindwm(ast, 0x1e6e0070) & 0x1000;
 		if (++timeout > TIMEOUT) {
 			ast_moutdwm(ast, 0x1e6e0070, 0x0);
-			return -1;
+			return 0xffffffff;
 		}
 	} while (!data);
 	data = ast_mindwm(ast, 0x1e6e0078);
 	data = (data | (data >> 16)) & 0xffff;
-	ast_moutdwm(ast, 0x1e6e0070, 0x0);
+	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
 	return data;
 }
 
-static int mmc_test_single(struct ast_private *ast, u32 datagen)
+
+static bool mmc_test_burst(struct ast_private *ast, u32 datagen)
 {
-	u32 data, timeout;
+	return mmc_test(ast, datagen, 0xc1);
+}
 
-	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
-	ast_moutdwm(ast, 0x1e6e0070, 0x000000c5 | (datagen << 3));
-	timeout = 0;
-	do {
-		data = ast_mindwm(ast, 0x1e6e0070) & 0x3000;
-		if (data & 0x2000)
-			return 0;
-		if (++timeout > TIMEOUT) {
-			ast_moutdwm(ast, 0x1e6e0070, 0x0);
-			return 0;
-		}
-	} while (!data);
-	ast_moutdwm(ast, 0x1e6e0070, 0x0);
-	return 1;
+static u32 mmc_test_burst2(struct ast_private *ast, u32 datagen)
+{
+	return mmc_test2(ast, datagen, 0x41);
 }
 
-static int mmc_test_single2(struct ast_private *ast, u32 datagen)
+static bool mmc_test_single(struct ast_private *ast, u32 datagen)
 {
-	u32 data, timeout;
+	return mmc_test(ast, datagen, 0xc5);
+}
 
-	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
-	ast_moutdwm(ast, 0x1e6e0070, 0x00000005 | (datagen << 3));
-	timeout = 0;
-	do {
-		data = ast_mindwm(ast, 0x1e6e0070) & 0x1000;
-		if (++timeout > TIMEOUT) {
-			ast_moutdwm(ast, 0x1e6e0070, 0x0);
-			return -1;
-		}
-	} while (!data);
-	data = ast_mindwm(ast, 0x1e6e0078);
-	data = (data | (data >> 16)) & 0xffff;
-	ast_moutdwm(ast, 0x1e6e0070, 0x0);
-	return data;
+static u32 mmc_test_single2(struct ast_private *ast, u32 datagen)
+{
+	return mmc_test2(ast, datagen, 0x05);
 }
 
 static int cbr_test(struct ast_private *ast)
@@ -601,16 +581,16 @@ static u32 cbr_scan2(struct ast_private *ast)
 	return data2;
 }
 
-static u32 cbr_test3(struct ast_private *ast)
+static bool cbr_test3(struct ast_private *ast)
 {
 	if (!mmc_test_burst(ast, 0))
-		return 0;
+		return false;
 	if (!mmc_test_single(ast, 0))
-		return 0;
-	return 1;
+		return false;
+	return true;
 }
 
-static u32 cbr_scan3(struct ast_private *ast)
+static bool cbr_scan3(struct ast_private *ast)
 {
 	u32 patcnt, loop;
 
@@ -621,9 +601,9 @@ static u32 cbr_scan3(struct ast_private *ast)
 				break;
 		}
 		if (loop == 2)
-			return 0;
+			return false;
 	}
-	return 1;
+	return true;
 }
 
 static bool finetuneDQI_L(struct ast_private *ast, struct ast2300_dram_param *param)
-- 
2.9.3

  parent reply	other threads:[~2017-02-23 23:16 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-23 22:53 [PATCH 01/12] drm/ast: Fix AST2400 POST failure without BMC FW or VBIOS Benjamin Herrenschmidt
2017-02-23 22:53 ` [PATCH 02/12] drm/ast: Handle configuration without P2A bridge Benjamin Herrenschmidt
2017-02-24  2:21   ` Joel Stanley
2017-02-24  2:26     ` Benjamin Herrenschmidt
2017-02-24  2:32     ` Benjamin Herrenschmidt
2017-02-24  2:41     ` [PATCH v5 2/12] " Benjamin Herrenschmidt
2017-02-24  2:43       ` Joel Stanley
2017-02-24  7:06   ` [PATCH 02/12] " YC Chen
2017-02-23 22:53 ` [PATCH 03/12] drm/ast: const'ify mode setting tables Benjamin Herrenschmidt
2017-02-24  2:21   ` Joel Stanley
2017-02-23 22:53 ` [PATCH 04/12] drm/ast: Remove spurrious include Benjamin Herrenschmidt
2017-02-24  2:24   ` Joel Stanley
2017-02-23 22:53 ` [PATCH 05/12] drm/ast: Fix calculation of MCLK Benjamin Herrenschmidt
2017-02-24  2:24   ` Joel Stanley
2017-02-24  2:38     ` Benjamin Herrenschmidt
2017-02-24  3:12       ` Joel Stanley
2017-02-24  7:06   ` YC Chen
2017-02-23 22:53 ` [PATCH 06/12] drm/ast: Base support for AST2500 Benjamin Herrenschmidt
2017-02-24  2:22   ` Joel Stanley
2017-02-23 22:53 ` [PATCH 07/12] drm/ast: Fixed vram size incorrect issue on POWER Benjamin Herrenschmidt
2017-02-24  2:24   ` Joel Stanley
2017-02-24  7:07   ` YC Chen
2017-02-23 22:53 ` Benjamin Herrenschmidt [this message]
2017-02-24  2:21   ` [PATCH 08/12] drm/ast: Factor mmc_test code in POST code Joel Stanley
2017-02-24  7:07   ` YC Chen
2017-02-23 22:53 ` [PATCH 09/12] drm/ast: Rename ast_init_dram_2300 to ast_post_chip_2300 Benjamin Herrenschmidt
2017-02-24  2:21   ` Joel Stanley
2017-02-24  7:08   ` YC Chen
2017-02-23 22:53 ` [PATCH 10/12] drm/ast: POST code for the new AST2500 Benjamin Herrenschmidt
2017-02-24  2:21   ` Joel Stanley
2017-02-23 22:53 ` [PATCH 11/12] drm/ast: Fix test for VGA enabled Benjamin Herrenschmidt
2017-02-23 23:24   ` Benjamin Herrenschmidt
2017-02-24  7:09   ` YC Chen
2017-02-23 22:53 ` [PATCH 12/12] drm/ast: Call open_key before enable_mmio in POST code Benjamin Herrenschmidt
2017-02-24  2:21   ` Joel Stanley
2017-02-24  7:09   ` YC Chen
2017-02-23 23:07 ` [PATCH 01/12] drm/ast: Fix AST2400 POST failure without BMC FW or VBIOS Benjamin Herrenschmidt
2017-02-24  2:23 ` Joel Stanley
2017-02-24  7:04 ` YC Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170223225357.9572-8-benh@kernel.crashing.org \
    --to=benh@kernel$(echo .)crashing.org \
    --cc=airlied@redhat$(echo .)com \
    --cc=dri-devel@lists$(echo .)freedesktop.org \
    --cc=eich@suse$(echo .)come \
    --cc=linuxppc-dev@ozlabs$(echo .)org \
    --cc=yc_chen@aspeedtech$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox