static int
at86rf230_start(struct ieee802154_hw *hw)
{
    struct at86rf230_local *lp = hw->priv;

    at86rf230_awake(lp);
    enable_irq(lp->spi->irq);

    return at86rf230_sync_state_change(lp, STATE_RX_AACK_ON);
}
Exemple #2
0
static int
at86rf230_start(struct ieee802154_hw *hw)
{
	struct at86rf230_local *lp = hw->priv;

	/* reset trac stats on start */
	if (IS_ENABLED(CONFIG_IEEE802154_AT86RF230_DEBUGFS))
		memset(&lp->trac, 0, sizeof(struct at86rf230_trac));

	at86rf230_awake(lp);
	enable_irq(lp->spi->irq);

	return at86rf230_sync_state_change(lp, STATE_RX_AACK_ON);
}
static inline int
__at86rf230_read(struct at86rf230_local *lp,
                 unsigned int addr, unsigned int *data)
{
    bool sleep = lp->sleep;
    int ret;

    /* awake for register setting if sleep */
    if (sleep)
        at86rf230_awake(lp);

    ret = regmap_read(lp->regmap, addr, data);

    /* sleep again if was sleeping */
    if (sleep)
        at86rf230_sleep(lp);

    return ret;
}
static inline int
at86rf230_write_subreg(struct at86rf230_local *lp,
                       unsigned int addr, unsigned int mask,
                       unsigned int shift, unsigned int data)
{
    bool sleep = lp->sleep;
    int ret;

    /* awake for register setting if sleep */
    if (sleep)
        at86rf230_awake(lp);

    ret = regmap_update_bits(lp->regmap, addr, mask, data << shift);

    /* sleep again if was sleeping */
    if (sleep)
        at86rf230_sleep(lp);

    return ret;
}