* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * with this program; If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __CARL9170FW_IO_H
return *(const volatile uint16_t *) addr;
}
-static inline __inline void *readp(const volatile void *addr)
+static inline __inline volatile void *readp(const volatile void *addr)
{
- return *(void **) addr;
+ return *(volatile void **) addr;
}
static inline __inline uint32_t readl(const volatile void *addr)
{
- return (uint32_t) (const unsigned int *) readp(addr);
+ return *(const volatile unsigned int *) addr;
}
static inline __inline void writeb(volatile void *addr, const volatile uint8_t val)
uint32_t i = 0, read, tmp;
read = readl(addr);
- while (i++ < 10) {
+ do {
+ tmp = read;
tmp = readl(addr);
- if (tmp == read)
- break;
- else
- read = tmp;
- }
+ i++;
+ } while (tmp != read && i <= 10);
return read;
}
static inline __inline uint32_t get(const volatile uint32_t addr)
{
- return readl((const volatile void *) addr);
+ return readl((volatile void *) addr);
}
-static inline __inline void *getp(const volatile uint32_t addr)
+static inline __inline volatile void *getp(const volatile uint32_t addr)
{
return readp((const volatile void *) addr);
}
setb(addr, getb(addr) | val);
}
+static inline __inline uint16_t getw(const volatile uint32_t addr)
+{
+ return readw((const volatile void *) addr);
+}
+
#endif /* __CARL9170FW_IO_H */