Lines Matching refs:lp
67 struct at86rf230_local *lp; member
302 at86rf230_async_state_change(struct at86rf230_local *lp,
308 __at86rf230_write(struct at86rf230_local *lp, in __at86rf230_write() argument
311 return regmap_write(lp->regmap, addr, data); in __at86rf230_write()
315 __at86rf230_read(struct at86rf230_local *lp, in __at86rf230_read() argument
318 return regmap_read(lp->regmap, addr, data); in __at86rf230_read()
322 at86rf230_read_subreg(struct at86rf230_local *lp, in at86rf230_read_subreg() argument
328 rc = __at86rf230_read(lp, addr, data); in at86rf230_read_subreg()
336 at86rf230_write_subreg(struct at86rf230_local *lp, in at86rf230_write_subreg() argument
340 return regmap_update_bits(lp->regmap, addr, mask, data << shift); in at86rf230_write_subreg()
344 at86rf230_slp_tr_rising_edge(struct at86rf230_local *lp) in at86rf230_slp_tr_rising_edge() argument
346 gpio_set_value(lp->slp_tr, 1); in at86rf230_slp_tr_rising_edge()
348 gpio_set_value(lp->slp_tr, 0); in at86rf230_slp_tr_rising_edge()
470 struct at86rf230_local *lp = ctx->lp; in at86rf230_async_error_recover() local
472 lp->is_tx = 0; in at86rf230_async_error_recover()
473 at86rf230_async_state_change(lp, ctx, STATE_RX_AACK_ON, NULL, false); in at86rf230_async_error_recover()
474 ieee802154_wake_queue(lp->hw); in at86rf230_async_error_recover()
478 at86rf230_async_error(struct at86rf230_local *lp, in at86rf230_async_error() argument
481 dev_err(&lp->spi->dev, "spi_async error %d\n", rc); in at86rf230_async_error()
483 at86rf230_async_state_change(lp, ctx, STATE_FORCE_TRX_OFF, in at86rf230_async_error()
489 at86rf230_async_read_reg(struct at86rf230_local *lp, const u8 reg, in at86rf230_async_read_reg() argument
501 rc = spi_async(lp->spi, &ctx->msg); in at86rf230_async_read_reg()
506 at86rf230_async_error(lp, ctx, rc); in at86rf230_async_read_reg()
522 struct at86rf230_local *lp = ctx->lp; in at86rf230_async_state_assert() local
558 if (lp->tx_retry >= AT86RF2XX_MAX_TX_RETRIES) in at86rf230_async_state_assert()
560 lp->tx_retry++; in at86rf230_async_state_assert()
562 at86rf230_async_state_change(lp, ctx, state, in at86rf230_async_state_assert()
569 dev_warn(&lp->spi->dev, "unexcept state change from 0x%02x to 0x%02x. Actual state: 0x%02x\n", in at86rf230_async_state_assert()
582 struct at86rf230_local *lp = ctx->lp; in at86rf230_async_state_timer() local
584 at86rf230_async_read_reg(lp, RG_TRX_STATUS, ctx, in at86rf230_async_state_timer()
596 struct at86rf230_local *lp = ctx->lp; in at86rf230_async_state_delay() local
597 struct at86rf2xx_chip_data *c = lp->data; in at86rf230_async_state_delay()
628 lp->cal_timeout = jiffies + AT86RF2XX_CAL_LOOP_TIMEOUT; in at86rf230_async_state_delay()
637 lp->cal_timeout = jiffies + AT86RF2XX_CAL_LOOP_TIMEOUT; in at86rf230_async_state_delay()
686 struct at86rf230_local *lp = ctx->lp; in at86rf230_async_state_change_start() local
694 at86rf230_async_read_reg(lp, RG_TRX_STATUS, ctx, in at86rf230_async_state_change_start()
716 rc = spi_async(lp->spi, &ctx->msg); in at86rf230_async_state_change_start()
721 at86rf230_async_error(lp, ctx, rc); in at86rf230_async_state_change_start()
726 at86rf230_async_state_change(struct at86rf230_local *lp, in at86rf230_async_state_change() argument
735 at86rf230_async_read_reg(lp, RG_TRX_STATUS, ctx, in at86rf230_async_state_change()
744 struct at86rf230_local *lp = ctx->lp; in at86rf230_sync_state_change_complete() local
746 complete(&lp->state_complete); in at86rf230_sync_state_change_complete()
754 at86rf230_sync_state_change(struct at86rf230_local *lp, unsigned int state) in at86rf230_sync_state_change() argument
758 at86rf230_async_state_change(lp, &lp->state, state, in at86rf230_sync_state_change()
762 rc = wait_for_completion_timeout(&lp->state_complete, in at86rf230_sync_state_change()
765 at86rf230_async_error(lp, &lp->state, -ETIMEDOUT); in at86rf230_sync_state_change()
776 struct at86rf230_local *lp = ctx->lp; in at86rf230_tx_complete() local
780 ieee802154_xmit_complete(lp->hw, lp->tx_skb, !lp->tx_aret); in at86rf230_tx_complete()
787 struct at86rf230_local *lp = ctx->lp; in at86rf230_tx_on() local
789 at86rf230_async_state_change(lp, ctx, STATE_RX_AACK_ON, in at86rf230_tx_on()
797 struct at86rf230_local *lp = ctx->lp; in at86rf230_tx_trac_check() local
806 at86rf230_async_state_change(lp, ctx, STATE_FORCE_TRX_OFF, in at86rf230_tx_trac_check()
816 struct at86rf230_local *lp = ctx->lp; in at86rf230_tx_trac_status() local
818 at86rf230_async_read_reg(lp, RG_TRX_STATE, ctx, in at86rf230_tx_trac_status()
826 struct at86rf230_local *lp = ctx->lp; in at86rf230_rx_read_frame_complete() local
834 dev_vdbg(&lp->spi->dev, "corrupted frame received\n"); in at86rf230_rx_read_frame_complete()
845 dev_vdbg(&lp->spi->dev, "failed to allocate sk_buff\n"); in at86rf230_rx_read_frame_complete()
850 ieee802154_rx_irqsafe(lp->hw, skb, lqi); in at86rf230_rx_read_frame_complete()
857 struct at86rf230_local *lp = ctx->lp; in at86rf230_rx_read_frame() local
864 rc = spi_async(lp->spi, &ctx->msg); in at86rf230_rx_read_frame()
868 at86rf230_async_error(lp, ctx, rc); in at86rf230_rx_read_frame()
885 at86rf230_irq_trx_end(struct at86rf230_local *lp) in at86rf230_irq_trx_end() argument
887 if (lp->is_tx) { in at86rf230_irq_trx_end()
888 lp->is_tx = 0; in at86rf230_irq_trx_end()
890 if (lp->tx_aret) in at86rf230_irq_trx_end()
891 at86rf230_async_state_change(lp, &lp->irq, in at86rf230_irq_trx_end()
896 at86rf230_async_state_change(lp, &lp->irq, in at86rf230_irq_trx_end()
901 at86rf230_async_read_reg(lp, RG_TRX_STATE, &lp->irq, in at86rf230_irq_trx_end()
910 struct at86rf230_local *lp = ctx->lp; in at86rf230_irq_status() local
915 at86rf230_irq_trx_end(lp); in at86rf230_irq_status()
918 dev_err(&lp->spi->dev, "not supported irq %02x received\n", in at86rf230_irq_status()
925 struct at86rf230_local *lp = data; in at86rf230_isr() local
926 struct at86rf230_state_change *ctx = &lp->irq; in at86rf230_isr()
934 rc = spi_async(lp->spi, &ctx->msg); in at86rf230_isr()
937 at86rf230_async_error(lp, ctx, rc); in at86rf230_isr()
948 struct at86rf230_local *lp = ctx->lp; in at86rf230_write_frame_complete() local
954 if (gpio_is_valid(lp->slp_tr)) { in at86rf230_write_frame_complete()
955 at86rf230_slp_tr_rising_edge(lp); in at86rf230_write_frame_complete()
960 rc = spi_async(lp->spi, &ctx->msg); in at86rf230_write_frame_complete()
962 at86rf230_async_error(lp, ctx, rc); in at86rf230_write_frame_complete()
970 struct at86rf230_local *lp = ctx->lp; in at86rf230_write_frame() local
971 struct sk_buff *skb = lp->tx_skb; in at86rf230_write_frame()
975 lp->is_tx = 1; in at86rf230_write_frame()
982 rc = spi_async(lp->spi, &ctx->msg); in at86rf230_write_frame()
985 at86rf230_async_error(lp, ctx, rc); in at86rf230_write_frame()
993 struct at86rf230_local *lp = ctx->lp; in at86rf230_xmit_tx_on() local
995 at86rf230_async_state_change(lp, ctx, STATE_TX_ARET_ON, in at86rf230_xmit_tx_on()
1003 struct at86rf230_local *lp = ctx->lp; in at86rf230_xmit_start() local
1009 if (lp->tx_aret) { in at86rf230_xmit_start()
1010 if (lp->is_tx_from_off) { in at86rf230_xmit_start()
1011 lp->is_tx_from_off = false; in at86rf230_xmit_start()
1012 at86rf230_async_state_change(lp, ctx, STATE_TX_ARET_ON, in at86rf230_xmit_start()
1016 at86rf230_async_state_change(lp, ctx, STATE_TX_ON, in at86rf230_xmit_start()
1021 at86rf230_async_state_change(lp, ctx, STATE_TX_ON, in at86rf230_xmit_start()
1029 struct at86rf230_local *lp = hw->priv; in at86rf230_xmit() local
1030 struct at86rf230_state_change *ctx = &lp->tx; in at86rf230_xmit()
1032 lp->tx_skb = skb; in at86rf230_xmit()
1033 lp->tx_retry = 0; in at86rf230_xmit()
1042 if (time_is_before_jiffies(lp->cal_timeout)) { in at86rf230_xmit()
1043 lp->is_tx_from_off = true; in at86rf230_xmit()
1044 at86rf230_async_state_change(lp, ctx, STATE_TRX_OFF, in at86rf230_xmit()
1074 at86rf23x_set_channel(struct at86rf230_local *lp, u8 page, u8 channel) in at86rf23x_set_channel() argument
1076 return at86rf230_write_subreg(lp, SR_CHANNEL, channel); in at86rf23x_set_channel()
1080 at86rf212_set_channel(struct at86rf230_local *lp, u8 page, u8 channel) in at86rf212_set_channel() argument
1085 rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 0); in at86rf212_set_channel()
1087 rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 1); in at86rf212_set_channel()
1092 rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, 0); in at86rf212_set_channel()
1093 lp->data->rssi_base_val = -100; in at86rf212_set_channel()
1095 rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, 1); in at86rf212_set_channel()
1096 lp->data->rssi_base_val = -98; in at86rf212_set_channel()
1112 lp->hw->phy->symbol_duration = 50; in at86rf212_set_channel()
1115 lp->hw->phy->symbol_duration = 25; in at86rf212_set_channel()
1120 lp->hw->phy->symbol_duration = 40; in at86rf212_set_channel()
1123 lp->hw->phy->symbol_duration = 16; in at86rf212_set_channel()
1126 lp->hw->phy->lifs_period = IEEE802154_LIFS_PERIOD * in at86rf212_set_channel()
1127 lp->hw->phy->symbol_duration; in at86rf212_set_channel()
1128 lp->hw->phy->sifs_period = IEEE802154_SIFS_PERIOD * in at86rf212_set_channel()
1129 lp->hw->phy->symbol_duration; in at86rf212_set_channel()
1131 return at86rf230_write_subreg(lp, SR_CHANNEL, channel); in at86rf212_set_channel()
1137 struct at86rf230_local *lp = hw->priv; in at86rf230_channel() local
1140 rc = lp->data->set_channel(lp, page, channel); in at86rf230_channel()
1142 usleep_range(lp->data->t_channel_switch, in at86rf230_channel()
1143 lp->data->t_channel_switch + 10); in at86rf230_channel()
1145 lp->cal_timeout = jiffies + AT86RF2XX_CAL_LOOP_TIMEOUT; in at86rf230_channel()
1154 struct at86rf230_local *lp = hw->priv; in at86rf230_set_hw_addr_filt() local
1159 dev_vdbg(&lp->spi->dev, in at86rf230_set_hw_addr_filt()
1161 __at86rf230_write(lp, RG_SHORT_ADDR_0, addr); in at86rf230_set_hw_addr_filt()
1162 __at86rf230_write(lp, RG_SHORT_ADDR_1, addr >> 8); in at86rf230_set_hw_addr_filt()
1168 dev_vdbg(&lp->spi->dev, in at86rf230_set_hw_addr_filt()
1170 __at86rf230_write(lp, RG_PAN_ID_0, pan); in at86rf230_set_hw_addr_filt()
1171 __at86rf230_write(lp, RG_PAN_ID_1, pan >> 8); in at86rf230_set_hw_addr_filt()
1178 dev_vdbg(&lp->spi->dev, in at86rf230_set_hw_addr_filt()
1181 __at86rf230_write(lp, RG_IEEE_ADDR_0 + i, addr[i]); in at86rf230_set_hw_addr_filt()
1185 dev_vdbg(&lp->spi->dev, in at86rf230_set_hw_addr_filt()
1188 at86rf230_write_subreg(lp, SR_AACK_I_AM_COORD, 1); in at86rf230_set_hw_addr_filt()
1190 at86rf230_write_subreg(lp, SR_AACK_I_AM_COORD, 0); in at86rf230_set_hw_addr_filt()
1199 struct at86rf230_local *lp = hw->priv; in at86rf230_set_txpower() local
1212 return __at86rf230_write(lp, RG_PHY_TX_PWR, 0x60 | db); in at86rf230_set_txpower()
1218 struct at86rf230_local *lp = hw->priv; in at86rf230_set_lbt() local
1220 return at86rf230_write_subreg(lp, SR_CSMA_LBT_MODE, on); in at86rf230_set_lbt()
1227 struct at86rf230_local *lp = hw->priv; in at86rf230_set_cca_mode() local
1254 return at86rf230_write_subreg(lp, SR_CCA_MODE, val); in at86rf230_set_cca_mode()
1258 at86rf212_get_desens_steps(struct at86rf230_local *lp, s32 level) in at86rf212_get_desens_steps() argument
1260 return (level - lp->data->rssi_base_val) * 100 / 207; in at86rf212_get_desens_steps()
1264 at86rf23x_get_desens_steps(struct at86rf230_local *lp, s32 level) in at86rf23x_get_desens_steps() argument
1266 return (level - lp->data->rssi_base_val) / 2; in at86rf23x_get_desens_steps()
1272 struct at86rf230_local *lp = hw->priv; in at86rf230_set_cca_ed_level() local
1274 if (level < lp->data->rssi_base_val || level > 30) in at86rf230_set_cca_ed_level()
1277 return at86rf230_write_subreg(lp, SR_CCA_ED_THRES, in at86rf230_set_cca_ed_level()
1278 lp->data->get_desense_steps(lp, level)); in at86rf230_set_cca_ed_level()
1285 struct at86rf230_local *lp = hw->priv; in at86rf230_set_csma_params() local
1288 rc = at86rf230_write_subreg(lp, SR_MIN_BE, min_be); in at86rf230_set_csma_params()
1292 rc = at86rf230_write_subreg(lp, SR_MAX_BE, max_be); in at86rf230_set_csma_params()
1296 return at86rf230_write_subreg(lp, SR_MAX_CSMA_RETRIES, retries); in at86rf230_set_csma_params()
1302 struct at86rf230_local *lp = hw->priv; in at86rf230_set_frame_retries() local
1305 lp->tx_aret = retries >= 0; in at86rf230_set_frame_retries()
1306 lp->max_frame_retries = retries; in at86rf230_set_frame_retries()
1309 rc = at86rf230_write_subreg(lp, SR_MAX_FRAME_RETRIES, retries); in at86rf230_set_frame_retries()
1317 struct at86rf230_local *lp = hw->priv; in at86rf230_set_promiscuous_mode() local
1321 rc = at86rf230_write_subreg(lp, SR_AACK_DIS_ACK, 1); in at86rf230_set_promiscuous_mode()
1325 rc = at86rf230_write_subreg(lp, SR_AACK_PROM_MODE, 1); in at86rf230_set_promiscuous_mode()
1329 rc = at86rf230_write_subreg(lp, SR_AACK_PROM_MODE, 0); in at86rf230_set_promiscuous_mode()
1333 rc = at86rf230_write_subreg(lp, SR_AACK_DIS_ACK, 0); in at86rf230_set_promiscuous_mode()
1397 static int at86rf230_hw_init(struct at86rf230_local *lp, u8 xtal_trim) in at86rf230_hw_init() argument
1403 rc = at86rf230_sync_state_change(lp, STATE_FORCE_TRX_OFF); in at86rf230_hw_init()
1407 irq_type = irq_get_trigger_type(lp->spi->irq); in at86rf230_hw_init()
1410 dev_warn(&lp->spi->dev, in at86rf230_hw_init()
1416 rc = at86rf230_write_subreg(lp, SR_IRQ_POLARITY, irq_pol); in at86rf230_hw_init()
1420 rc = at86rf230_write_subreg(lp, SR_RX_SAFE_MODE, 1); in at86rf230_hw_init()
1424 rc = at86rf230_write_subreg(lp, SR_IRQ_MASK, IRQ_TRX_END); in at86rf230_hw_init()
1429 rc = at86rf230_write_subreg(lp, SR_IRQ_MASK_MODE, 0); in at86rf230_hw_init()
1434 rc = at86rf230_write_subreg(lp, SR_CSMA_SEED_0, csma_seed[0]); in at86rf230_hw_init()
1437 rc = at86rf230_write_subreg(lp, SR_CSMA_SEED_1, csma_seed[1]); in at86rf230_hw_init()
1442 rc = at86rf230_write_subreg(lp, SR_CLKM_SHA_SEL, 0x00); in at86rf230_hw_init()
1447 rc = at86rf230_write_subreg(lp, SR_CLKM_CTRL, 0x00); in at86rf230_hw_init()
1451 usleep_range(lp->data->t_sleep_cycle, in at86rf230_hw_init()
1452 lp->data->t_sleep_cycle + 100); in at86rf230_hw_init()
1489 rc = at86rf230_write_subreg(lp, SR_XTAL_TRIM, xtal_trim); in at86rf230_hw_init()
1493 rc = at86rf230_read_subreg(lp, SR_DVDD_OK, &dvdd); in at86rf230_hw_init()
1497 dev_err(&lp->spi->dev, "DVDD error\n"); in at86rf230_hw_init()
1505 return at86rf230_write_subreg(lp, SR_SLOTTED_OPERATION, 0); in at86rf230_hw_init()
1535 at86rf230_detect_device(struct at86rf230_local *lp) in at86rf230_detect_device() argument
1542 rc = __at86rf230_read(lp, RG_MAN_ID_0, &val); in at86rf230_detect_device()
1547 rc = __at86rf230_read(lp, RG_MAN_ID_1, &val); in at86rf230_detect_device()
1552 rc = __at86rf230_read(lp, RG_PART_NUM, &part); in at86rf230_detect_device()
1556 rc = __at86rf230_read(lp, RG_VERSION_NUM, &version); in at86rf230_detect_device()
1561 dev_err(&lp->spi->dev, "Non-Atmel dev found (MAN_ID %02x %02x)\n", in at86rf230_detect_device()
1566 lp->hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AACK | in at86rf230_detect_device()
1570 lp->hw->phy->cca.mode = NL802154_CCA_ENERGY; in at86rf230_detect_device()
1579 lp->data = &at86rf231_data; in at86rf230_detect_device()
1580 lp->hw->phy->channels_supported[0] = 0x7FFF800; in at86rf230_detect_device()
1581 lp->hw->phy->current_channel = 11; in at86rf230_detect_device()
1582 lp->hw->phy->symbol_duration = 16; in at86rf230_detect_device()
1586 lp->data = &at86rf212_data; in at86rf230_detect_device()
1587 lp->hw->flags |= IEEE802154_HW_LBT; in at86rf230_detect_device()
1588 lp->hw->phy->channels_supported[0] = 0x00007FF; in at86rf230_detect_device()
1589 lp->hw->phy->channels_supported[2] = 0x00007FF; in at86rf230_detect_device()
1590 lp->hw->phy->current_channel = 5; in at86rf230_detect_device()
1591 lp->hw->phy->symbol_duration = 25; in at86rf230_detect_device()
1595 lp->data = &at86rf233_data; in at86rf230_detect_device()
1596 lp->hw->phy->channels_supported[0] = 0x7FFF800; in at86rf230_detect_device()
1597 lp->hw->phy->current_channel = 13; in at86rf230_detect_device()
1598 lp->hw->phy->symbol_duration = 16; in at86rf230_detect_device()
1606 dev_info(&lp->spi->dev, "Detected %s chip version %d\n", chip, version); in at86rf230_detect_device()
1612 at86rf230_setup_spi_messages(struct at86rf230_local *lp) in at86rf230_setup_spi_messages() argument
1614 lp->state.lp = lp; in at86rf230_setup_spi_messages()
1615 lp->state.irq = lp->spi->irq; in at86rf230_setup_spi_messages()
1616 spi_message_init(&lp->state.msg); in at86rf230_setup_spi_messages()
1617 lp->state.msg.context = &lp->state; in at86rf230_setup_spi_messages()
1618 lp->state.trx.len = 2; in at86rf230_setup_spi_messages()
1619 lp->state.trx.tx_buf = lp->state.buf; in at86rf230_setup_spi_messages()
1620 lp->state.trx.rx_buf = lp->state.buf; in at86rf230_setup_spi_messages()
1621 spi_message_add_tail(&lp->state.trx, &lp->state.msg); in at86rf230_setup_spi_messages()
1622 hrtimer_init(&lp->state.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in at86rf230_setup_spi_messages()
1623 lp->state.timer.function = at86rf230_async_state_timer; in at86rf230_setup_spi_messages()
1625 lp->irq.lp = lp; in at86rf230_setup_spi_messages()
1626 lp->irq.irq = lp->spi->irq; in at86rf230_setup_spi_messages()
1627 spi_message_init(&lp->irq.msg); in at86rf230_setup_spi_messages()
1628 lp->irq.msg.context = &lp->irq; in at86rf230_setup_spi_messages()
1629 lp->irq.trx.len = 2; in at86rf230_setup_spi_messages()
1630 lp->irq.trx.tx_buf = lp->irq.buf; in at86rf230_setup_spi_messages()
1631 lp->irq.trx.rx_buf = lp->irq.buf; in at86rf230_setup_spi_messages()
1632 spi_message_add_tail(&lp->irq.trx, &lp->irq.msg); in at86rf230_setup_spi_messages()
1633 hrtimer_init(&lp->irq.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in at86rf230_setup_spi_messages()
1634 lp->irq.timer.function = at86rf230_async_state_timer; in at86rf230_setup_spi_messages()
1636 lp->tx.lp = lp; in at86rf230_setup_spi_messages()
1637 lp->tx.irq = lp->spi->irq; in at86rf230_setup_spi_messages()
1638 spi_message_init(&lp->tx.msg); in at86rf230_setup_spi_messages()
1639 lp->tx.msg.context = &lp->tx; in at86rf230_setup_spi_messages()
1640 lp->tx.trx.len = 2; in at86rf230_setup_spi_messages()
1641 lp->tx.trx.tx_buf = lp->tx.buf; in at86rf230_setup_spi_messages()
1642 lp->tx.trx.rx_buf = lp->tx.buf; in at86rf230_setup_spi_messages()
1643 spi_message_add_tail(&lp->tx.trx, &lp->tx.msg); in at86rf230_setup_spi_messages()
1644 hrtimer_init(&lp->tx.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in at86rf230_setup_spi_messages()
1645 lp->tx.timer.function = at86rf230_async_state_timer; in at86rf230_setup_spi_messages()
1651 struct at86rf230_local *lp; in at86rf230_probe() local
1690 hw = ieee802154_alloc_hw(sizeof(*lp), &at86rf230_ops); in at86rf230_probe()
1694 lp = hw->priv; in at86rf230_probe()
1695 lp->hw = hw; in at86rf230_probe()
1696 lp->spi = spi; in at86rf230_probe()
1697 lp->slp_tr = slp_tr; in at86rf230_probe()
1699 hw->vif_data_size = sizeof(*lp); in at86rf230_probe()
1702 lp->regmap = devm_regmap_init_spi(spi, &at86rf230_regmap_spi_config); in at86rf230_probe()
1703 if (IS_ERR(lp->regmap)) { in at86rf230_probe()
1704 rc = PTR_ERR(lp->regmap); in at86rf230_probe()
1710 at86rf230_setup_spi_messages(lp); in at86rf230_probe()
1712 rc = at86rf230_detect_device(lp); in at86rf230_probe()
1716 init_completion(&lp->state_complete); in at86rf230_probe()
1718 spi_set_drvdata(spi, lp); in at86rf230_probe()
1720 rc = at86rf230_hw_init(lp, xtal_trim); in at86rf230_probe()
1725 rc = at86rf230_read_subreg(lp, RG_IRQ_STATUS, 0xff, 0, &status); in at86rf230_probe()
1734 IRQF_SHARED | irq_type, dev_name(&spi->dev), lp); in at86rf230_probe()
1738 rc = ieee802154_register_hw(lp->hw); in at86rf230_probe()
1745 ieee802154_free_hw(lp->hw); in at86rf230_probe()
1752 struct at86rf230_local *lp = spi_get_drvdata(spi); in at86rf230_remove() local
1755 at86rf230_write_subreg(lp, SR_IRQ_MASK, 0); in at86rf230_remove()
1756 ieee802154_unregister_hw(lp->hw); in at86rf230_remove()
1757 ieee802154_free_hw(lp->hw); in at86rf230_remove()