From christoph.mallon@gmx.de  Sun Apr  7 09:17:24 2013
Return-Path: <christoph.mallon@gmx.de>
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
	by hub.freebsd.org (Postfix) with ESMTP id 0DFB3355
	for <freebsd-gnats-submit@freebsd.org>; Sun,  7 Apr 2013 09:17:24 +0000 (UTC)
	(envelope-from christoph.mallon@gmx.de)
Received: from mout.gmx.net (mout.gmx.net [212.227.17.22])
	by mx1.freebsd.org (Postfix) with ESMTP id B06641F5C
	for <freebsd-gnats-submit@freebsd.org>; Sun,  7 Apr 2013 09:17:23 +0000 (UTC)
Received: from mailout-de.gmx.net ([10.1.76.2]) by mrigmx.server.lan
 (mrigmx001) with ESMTP (Nemesis) id 0Lsdt9-1UZefI3l5F-012LQf for
 <FreeBSD-gnats-submit@freebsd.org>; Sun, 07 Apr 2013 11:17:21 +0200
Received: (qmail invoked by alias); 07 Apr 2013 09:17:21 -0000
Received: from p5B13371A.dip.t-dialin.net (EHLO rotluchs.lokal) [91.19.55.26]
  by mail.gmx.net (mp002) with SMTP; 07 Apr 2013 11:17:21 +0200
Received: from tron by rotluchs.lokal with local (Exim 4.80.1 (FreeBSD))
	(envelope-from <christoph.mallon@gmx.de>)
	id 1UOliy-000NZ9-6D; Sun, 07 Apr 2013 11:17:20 +0200
Message-Id: <E1UOliy-000NZ9-6D@rotluchs.lokal>
Date: Sun, 07 Apr 2013 11:17:20 +0200
From: Christoph Mallon <christoph.mallon@gmx.de>
Reply-To: Christoph Mallon <christoph.mallon@gmx.de>
To: FreeBSD-gnats-submit@freebsd.org
Cc: Christoph Mallon <christoph.mallon@gmx.de>
Subject: [kernel] [patch] Correct return type and usage of at91_pio_gpio_get()
X-Send-Pr-Version: 3.114
X-GNATS-Notify: Ian Lepore <ian@FreeBSD.org>

>Number:         177685
>Category:       arm
>Synopsis:       [kernel] [patch] Correct return type and usage of at91_pio_gpio_get()
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-arm
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Apr 07 09:20:00 UTC 2013
>Closed-Date:    Sun Feb 09 00:19:35 CET 2014
>Last-Modified:  Sun Feb 09 00:19:35 CET 2014
>Originator:     Christoph Mallon
>Release:        
>Organization:
>Environment:


	
>Description:
at91_pio_gpio_get() returns a bitset instead of just 0/1 since r248910.
But the return type (uint8_t) is too narrow for the mask.
In particular the only callers of the function tests bit 24, so it always gets 0 now.

The second patch just removes redundant parentheses in at91_pio_gpio_get().

ian@ is X-GNATS-Notified.
>How-To-Repeat:
	
>Fix:
Please apply the patch.

--- 0001-at91-Adjust-the-return-type-of-at91_pio_gpio_get.patch begins here ---
From 0c3af531b9648725a237610443533106b6cf1e91 Mon Sep 17 00:00:00 2001
From: Christoph Mallon <christoph.mallon@gmx.de>
Date: Sun, 7 Apr 2013 10:59:56 +0200
Subject: [PATCH 1/2] at91: Adjust the return type of at91_pio_gpio_get().

It returns the masked set of bits, which requires uint32_t, now.
This fixes its only caller, which always got 0, because it tested bit 24 and the function returned only an uint8_t.
---
 sys/arm/at91/at91_pio.c                   | 2 +-
 sys/arm/at91/at91_piovar.h                | 2 +-
 sys/dev/usb/controller/at91dci_atmelarm.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/sys/arm/at91/at91_pio.c b/sys/arm/at91/at91_pio.c
index c2998b5..fef089b 100644
--- a/sys/arm/at91/at91_pio.c
+++ b/sys/arm/at91/at91_pio.c
@@ -554,7 +554,7 @@ at91_pio_gpio_clear(uint32_t pio, uint32_t data_mask)
 	PIO[PIO_CODR / 4] = data_mask;
 }
 
-uint8_t
+uint32_t
 at91_pio_gpio_get(uint32_t pio, uint32_t data_mask)
 {
 	uint32_t *PIO = (uint32_t *)(AT91_BASE + pio);
diff --git a/sys/arm/at91/at91_piovar.h b/sys/arm/at91/at91_piovar.h
index 0608f16..d2b912d 100644
--- a/sys/arm/at91/at91_piovar.h
+++ b/sys/arm/at91/at91_piovar.h
@@ -39,7 +39,7 @@ void at91_pio_gpio_output(uint32_t pio, uint32_t output_enable_mask,
 void at91_pio_gpio_high_z(uint32_t pio, uint32_t high_z_mask, int enable);
 void at91_pio_gpio_set(uint32_t pio, uint32_t data_mask);
 void at91_pio_gpio_clear(uint32_t pio, uint32_t data_mask);
-uint8_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask);
+uint32_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask);
 void at91_pio_gpio_set_deglitch(uint32_t pio, uint32_t data_mask,
     int use_deglitch);
 void at91_pio_gpio_set_interrupt(uint32_t pio, uint32_t data_mask,
diff --git a/sys/dev/usb/controller/at91dci_atmelarm.c b/sys/dev/usb/controller/at91dci_atmelarm.c
index 678ad48..7f94ed7 100644
--- a/sys/dev/usb/controller/at91dci_atmelarm.c
+++ b/sys/dev/usb/controller/at91dci_atmelarm.c
@@ -91,7 +91,7 @@ at91_vbus_poll(struct at91_udp_softc *sc)
 {
 	uint8_t vbus_val;
 
-	vbus_val = at91_pio_gpio_get(VBUS_BASE, VBUS_MASK);
+	vbus_val = at91_pio_gpio_get(VBUS_BASE, VBUS_MASK) != 0;
 	at91dci_vbus_interrupt(&sc->sc_dci, vbus_val);
 
 	callout_reset(&sc->sc_vbus, hz, (void *)&at91_vbus_poll, sc);
-- 
1.8.2
--- 0001-at91-Adjust-the-return-type-of-at91_pio_gpio_get.patch ends here ---

--- dummy1 begins here ---
dummy file, because GNATS damages every other file
--- dummy1 ends here ---

--- 0002-at91-Remove-redundant-parentheses.patch begins here ---
From fa9d855770e7f2a5e8886b7be85dce92a61b33ef Mon Sep 17 00:00:00 2001
From: Christoph Mallon <christoph.mallon@gmx.de>
Date: Sun, 7 Apr 2013 11:02:15 +0200
Subject: [PATCH 2/2] at91: Remove redundant parentheses.

---
 sys/arm/at91/at91_pio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/arm/at91/at91_pio.c b/sys/arm/at91/at91_pio.c
index fef089b..2a50707 100644
--- a/sys/arm/at91/at91_pio.c
+++ b/sys/arm/at91/at91_pio.c
@@ -559,7 +559,7 @@ at91_pio_gpio_get(uint32_t pio, uint32_t data_mask)
 {
 	uint32_t *PIO = (uint32_t *)(AT91_BASE + pio);
 
-	return ((PIO[PIO_PDSR / 4] & data_mask));
+	return (PIO[PIO_PDSR / 4] & data_mask);
 }
 
 void
-- 
1.8.2
--- 0002-at91-Remove-redundant-parentheses.patch ends here ---


>Release-Note:
>Audit-Trail:

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: arm/177685: commit references a PR
Date: Sun,  7 Apr 2013 13:04:11 +0000 (UTC)

 Author: hselasky
 Date: Sun Apr  7 13:03:57 2013
 New Revision: 249232
 URL: http://svnweb.freebsd.org/changeset/base/249232
 
 Log:
   Fix regression issue after r248910.
   
   PR:		arm/177685
   Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
 
 Modified:
   head/sys/arm/at91/at91_pio.c
   head/sys/arm/at91/at91_piovar.h
   head/sys/dev/usb/controller/at91dci_atmelarm.c
 
 Modified: head/sys/arm/at91/at91_pio.c
 ==============================================================================
 --- head/sys/arm/at91/at91_pio.c	Sun Apr  7 11:05:38 2013	(r249231)
 +++ head/sys/arm/at91/at91_pio.c	Sun Apr  7 13:03:57 2013	(r249232)
 @@ -554,12 +554,12 @@ at91_pio_gpio_clear(uint32_t pio, uint32
  	PIO[PIO_CODR / 4] = data_mask;
  }
  
 -uint8_t
 +uint32_t
  at91_pio_gpio_get(uint32_t pio, uint32_t data_mask)
  {
  	uint32_t *PIO = (uint32_t *)(AT91_BASE + pio);
  
 -	return ((PIO[PIO_PDSR / 4] & data_mask));
 +	return (PIO[PIO_PDSR / 4] & data_mask);
  }
  
  void
 
 Modified: head/sys/arm/at91/at91_piovar.h
 ==============================================================================
 --- head/sys/arm/at91/at91_piovar.h	Sun Apr  7 11:05:38 2013	(r249231)
 +++ head/sys/arm/at91/at91_piovar.h	Sun Apr  7 13:03:57 2013	(r249232)
 @@ -39,7 +39,7 @@ void at91_pio_gpio_output(uint32_t pio, 
  void at91_pio_gpio_high_z(uint32_t pio, uint32_t high_z_mask, int enable);
  void at91_pio_gpio_set(uint32_t pio, uint32_t data_mask);
  void at91_pio_gpio_clear(uint32_t pio, uint32_t data_mask);
 -uint8_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask);
 +uint32_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask);
  void at91_pio_gpio_set_deglitch(uint32_t pio, uint32_t data_mask,
      int use_deglitch);
  void at91_pio_gpio_set_interrupt(uint32_t pio, uint32_t data_mask,
 
 Modified: head/sys/dev/usb/controller/at91dci_atmelarm.c
 ==============================================================================
 --- head/sys/dev/usb/controller/at91dci_atmelarm.c	Sun Apr  7 11:05:38 2013	(r249231)
 +++ head/sys/dev/usb/controller/at91dci_atmelarm.c	Sun Apr  7 13:03:57 2013	(r249232)
 @@ -91,7 +91,7 @@ at91_vbus_poll(struct at91_udp_softc *sc
  {
  	uint8_t vbus_val;
  
 -	vbus_val = at91_pio_gpio_get(VBUS_BASE, VBUS_MASK);
 +	vbus_val = at91_pio_gpio_get(VBUS_BASE, VBUS_MASK) != 0;
  	at91dci_vbus_interrupt(&sc->sc_dci, vbus_val);
  
  	callout_reset(&sc->sc_vbus, hz, (void *)&at91_vbus_poll, sc);
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: brueffer 
State-Changed-When: Sun Feb 9 00:18:38 CET 2014 
State-Changed-Why:  
The changes were committed by hps in r249232 (April 2013). 
Thanks for the submission! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=177685 
>Unformatted:
