mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-16 23:45:31 +08:00
usb: phy: ab8500-usb: split ab8500_usb_phy_ctrl
Split ab8500_usb_phy_ctrl into separate enable/disable functions to make the code more linear and readable. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
e65b36c026
commit
c0ea70646a
@ -172,40 +172,37 @@ static void ab8500_usb_wd_linkstatus(struct ab8500_usb *ab, u8 bit)
|
||||
}
|
||||
}
|
||||
|
||||
static void ab8500_usb_phy_ctrl(struct ab8500_usb *ab, bool sel_host,
|
||||
bool enable)
|
||||
static void ab8500_usb_phy_enable(struct ab8500_usb *ab, bool sel_host)
|
||||
{
|
||||
u8 ctrl_reg;
|
||||
abx500_get_register_interruptible(ab->dev,
|
||||
AB8500_USB,
|
||||
AB8500_USB_PHY_CTRL_REG,
|
||||
&ctrl_reg);
|
||||
if (sel_host) {
|
||||
if (enable)
|
||||
ctrl_reg |= AB8500_BIT_PHY_CTRL_HOST_EN;
|
||||
else
|
||||
ctrl_reg &= ~AB8500_BIT_PHY_CTRL_HOST_EN;
|
||||
} else {
|
||||
if (enable)
|
||||
ctrl_reg |= AB8500_BIT_PHY_CTRL_DEVICE_EN;
|
||||
else
|
||||
ctrl_reg &= ~AB8500_BIT_PHY_CTRL_DEVICE_EN;
|
||||
}
|
||||
u8 bit;
|
||||
bit = sel_host ? AB8500_BIT_PHY_CTRL_HOST_EN :
|
||||
AB8500_BIT_PHY_CTRL_DEVICE_EN;
|
||||
|
||||
abx500_set_register_interruptible(ab->dev,
|
||||
AB8500_USB,
|
||||
AB8500_USB_PHY_CTRL_REG,
|
||||
ctrl_reg);
|
||||
|
||||
/* Needed to enable the phy.*/
|
||||
if (enable)
|
||||
ab8500_usb_wd_workaround(ab);
|
||||
abx500_mask_and_set_register_interruptible(ab->dev,
|
||||
AB8500_USB, AB8500_USB_PHY_CTRL_REG,
|
||||
bit, bit);
|
||||
}
|
||||
|
||||
#define ab8500_usb_host_phy_en(ab) ab8500_usb_phy_ctrl(ab, true, true)
|
||||
#define ab8500_usb_host_phy_dis(ab) ab8500_usb_phy_ctrl(ab, true, false)
|
||||
#define ab8500_usb_peri_phy_en(ab) ab8500_usb_phy_ctrl(ab, false, true)
|
||||
#define ab8500_usb_peri_phy_dis(ab) ab8500_usb_phy_ctrl(ab, false, false)
|
||||
static void ab8500_usb_phy_disable(struct ab8500_usb *ab, bool sel_host)
|
||||
{
|
||||
u8 bit;
|
||||
bit = sel_host ? AB8500_BIT_PHY_CTRL_HOST_EN :
|
||||
AB8500_BIT_PHY_CTRL_DEVICE_EN;
|
||||
|
||||
ab8500_usb_wd_linkstatus(ab, bit);
|
||||
|
||||
abx500_mask_and_set_register_interruptible(ab->dev,
|
||||
AB8500_USB, AB8500_USB_PHY_CTRL_REG,
|
||||
bit, 0);
|
||||
|
||||
/* Needed to disable the phy.*/
|
||||
ab8500_usb_wd_workaround(ab);
|
||||
}
|
||||
|
||||
#define ab8500_usb_host_phy_en(ab) ab8500_usb_phy_enable(ab, true)
|
||||
#define ab8500_usb_host_phy_dis(ab) ab8500_usb_phy_disable(ab, true)
|
||||
#define ab8500_usb_peri_phy_en(ab) ab8500_usb_phy_enable(ab, false)
|
||||
#define ab8500_usb_peri_phy_dis(ab) ab8500_usb_phy_disable(ab, false)
|
||||
|
||||
static int ab8505_usb_link_status_update(struct ab8500_usb *ab,
|
||||
enum ab8505_usb_link_status lsts)
|
||||
|
Loading…
Reference in New Issue
Block a user