2019-05-29 17:12:41 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2011-11-01 03:48:50 +04:00
/*
* I / O access functions for Hexagon
*
2012-09-20 01:22:02 +04:00
* Copyright ( c ) 2010 - 2011 , The Linux Foundation . All rights reserved .
2011-11-01 03:48:50 +04:00
*/
# include <asm/io.h>
/* These are all FIFO routines! */
/*
* __raw_readsw - read words a short at a time
* @ addr : source address
* @ data : data address
* @ len : number of shorts to read
*/
void __raw_readsw ( const void __iomem * addr , void * data , int len )
{
const volatile short int * src = ( short int * ) addr ;
short int * dst = ( short int * ) data ;
if ( ( u32 ) data & 0x1 )
panic ( " unaligned pointer to readsw " ) ;
while ( len - - > 0 )
* dst + + = * src ;
}
2021-11-20 03:43:28 +03:00
EXPORT_SYMBOL ( __raw_readsw ) ;
2011-11-01 03:48:50 +04:00
/*
* __raw_writesw - read words a short at a time
* @ addr : source address
* @ data : data address
* @ len : number of shorts to read
*/
void __raw_writesw ( void __iomem * addr , const void * data , int len )
{
const short int * src = ( short int * ) data ;
volatile short int * dst = ( short int * ) addr ;
if ( ( u32 ) data & 0x1 )
panic ( " unaligned pointer to writesw " ) ;
while ( len - - > 0 )
* dst = * src + + ;
}
2021-11-20 03:43:28 +03:00
EXPORT_SYMBOL ( __raw_writesw ) ;
2011-11-01 03:48:50 +04:00
/* Pretty sure len is pre-adjusted for the length of the access already */
void __raw_readsl ( const void __iomem * addr , void * data , int len )
{
const volatile long * src = ( long * ) addr ;
long * dst = ( long * ) data ;
if ( ( u32 ) data & 0x3 )
panic ( " unaligned pointer to readsl " ) ;
while ( len - - > 0 )
* dst + + = * src ;
}
2021-11-20 03:43:28 +03:00
EXPORT_SYMBOL ( __raw_readsl ) ;
2011-11-01 03:48:50 +04:00
void __raw_writesl ( void __iomem * addr , const void * data , int len )
{
const long * src = ( long * ) data ;
volatile long * dst = ( long * ) addr ;
if ( ( u32 ) data & 0x3 )
panic ( " unaligned pointer to writesl " ) ;
while ( len - - > 0 )
* dst = * src + + ;
}
2021-11-20 03:43:28 +03:00
EXPORT_SYMBOL ( __raw_writesl ) ;