mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
i2c: i801: Move i801_wait_intr and i801_wait_byte_done in the code
Move both functions to avoid forward declarations in a subsequent patch. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://lore.kernel.org/r/a60ee54b-c5e8-4bdb-9f1f-8889f4dcd114@gmail.com
This commit is contained in:
parent
9d515bf71e
commit
e5befb5b01
|
|
@ -337,6 +337,40 @@ MODULE_PARM_DESC(disable_features, "Disable selected driver features:\n"
|
|||
"\t\t 0x10 don't use interrupts\n"
|
||||
"\t\t 0x20 disable SMBus Host Notify ");
|
||||
|
||||
/* Wait for BUSY being cleared and either INTR or an error flag being set */
|
||||
static int i801_wait_intr(struct i801_priv *priv)
|
||||
{
|
||||
unsigned long timeout = jiffies + priv->adapter.timeout;
|
||||
int status, busy;
|
||||
|
||||
do {
|
||||
usleep_range(250, 500);
|
||||
status = inb_p(SMBHSTSTS(priv));
|
||||
busy = status & SMBHSTSTS_HOST_BUSY;
|
||||
status &= STATUS_ERROR_FLAGS | SMBHSTSTS_INTR;
|
||||
if (!busy && status)
|
||||
return status & STATUS_ERROR_FLAGS;
|
||||
} while (time_is_after_eq_jiffies(timeout));
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
/* Wait for either BYTE_DONE or an error flag being set */
|
||||
static int i801_wait_byte_done(struct i801_priv *priv)
|
||||
{
|
||||
unsigned long timeout = jiffies + priv->adapter.timeout;
|
||||
int status;
|
||||
|
||||
do {
|
||||
usleep_range(250, 500);
|
||||
status = inb_p(SMBHSTSTS(priv));
|
||||
if (status & (STATUS_ERROR_FLAGS | SMBHSTSTS_BYTE_DONE))
|
||||
return status & STATUS_ERROR_FLAGS;
|
||||
} while (time_is_after_eq_jiffies(timeout));
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
static int i801_get_block_len(struct i801_priv *priv)
|
||||
{
|
||||
u8 len = inb_p(SMBHSTDAT0(priv));
|
||||
|
|
@ -453,40 +487,6 @@ static int i801_check_post(struct i801_priv *priv, int status)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* Wait for BUSY being cleared and either INTR or an error flag being set */
|
||||
static int i801_wait_intr(struct i801_priv *priv)
|
||||
{
|
||||
unsigned long timeout = jiffies + priv->adapter.timeout;
|
||||
int status, busy;
|
||||
|
||||
do {
|
||||
usleep_range(250, 500);
|
||||
status = inb_p(SMBHSTSTS(priv));
|
||||
busy = status & SMBHSTSTS_HOST_BUSY;
|
||||
status &= STATUS_ERROR_FLAGS | SMBHSTSTS_INTR;
|
||||
if (!busy && status)
|
||||
return status & STATUS_ERROR_FLAGS;
|
||||
} while (time_is_after_eq_jiffies(timeout));
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
/* Wait for either BYTE_DONE or an error flag being set */
|
||||
static int i801_wait_byte_done(struct i801_priv *priv)
|
||||
{
|
||||
unsigned long timeout = jiffies + priv->adapter.timeout;
|
||||
int status;
|
||||
|
||||
do {
|
||||
usleep_range(250, 500);
|
||||
status = inb_p(SMBHSTSTS(priv));
|
||||
if (status & (STATUS_ERROR_FLAGS | SMBHSTSTS_BYTE_DONE))
|
||||
return status & STATUS_ERROR_FLAGS;
|
||||
} while (time_is_after_eq_jiffies(timeout));
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
static int i801_transaction(struct i801_priv *priv, int xact)
|
||||
{
|
||||
unsigned long result;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user