From 97d59d9eaa65215c492f18dac6922680fe967195 Mon Sep 17 00:00:00 2001 From: Deema35 Date: Tue, 24 Oct 2023 10:35:34 +0300 Subject: [PATCH] Some optimization --- .../net/rdacombodev/rda_combo_power_main.c | 98 +++----- drivers/rda/net/rdawlan/wland_bus.c | 36 ++- drivers/rda/net/rdawlan/wland_sdio.c | 212 +++++++++--------- drivers/rda/net/rdawlan/wland_sdmmc.c | 56 ++--- 4 files changed, 174 insertions(+), 228 deletions(-) diff --git a/drivers/rda/net/rdacombodev/rda_combo_power_main.c b/drivers/rda/net/rdacombodev/rda_combo_power_main.c index ca9867b..f056f70 100644 --- a/drivers/rda/net/rdacombodev/rda_combo_power_main.c +++ b/drivers/rda/net/rdacombodev/rda_combo_power_main.c @@ -44,7 +44,7 @@ static struct rfkill *wlan_rfkill = NULL; static struct rfkill *bt_rfkill = NULL; static unsigned short wlan_version = 0; //static struct wake_lock rda_combo_wake_lock; -static struct delayed_work rda_combo_sleep_worker; +//static struct delayed_work rda_combo_sleep_worker; struct completion rda_wifi_bt_comp; struct regulator *combo_reg; @@ -762,18 +762,18 @@ static const struct file_operations rda_combo_operations = { .release = NULL }; -void rda_combo_sleep_worker_task(struct work_struct *work) -{ - printk("---rda_combo_sleep_worker_task end \n"); +//void rda_combo_sleep_worker_task(struct work_struct *work) +//{ + //printk("---rda_combo_sleep_worker_task end \n"); //wake_unlock(&rda_combo_wake_lock); -} +//} -void rda_combo_set_wake_lock(void) -{ +//void rda_combo_set_wake_lock(void) +//{ //wake_lock(&rda_combo_wake_lock); - cancel_delayed_work(&rda_combo_sleep_worker); - schedule_delayed_work(&rda_combo_sleep_worker, 6 * HZ); -} + //cancel_delayed_work(&rda_combo_sleep_worker); + //schedule_delayed_work(&rda_combo_sleep_worker, 6 * HZ); +//} @@ -823,14 +823,14 @@ static const struct rfkill_ops wlan_rfkill_ops = { .set_block = wlan_rfkill_set, }; -static irqreturn_t rda_bt_host_wake_eirq_handler(int irq, void *dev_id) -{ -#ifdef CONFIG_BLUEZ_SUPPORT - hci_bt_wakeup_host(); -#endif - rda_combo_set_wake_lock(); - return IRQ_HANDLED; -} +//static irqreturn_t rda_bt_host_wake_eirq_handler(int irq, void *dev_id) +//{ +//#ifdef CONFIG_BLUEZ_SUPPORT +// hci_bt_wakeup_host(); +//#endif +// rda_combo_set_wake_lock(); +// return IRQ_HANDLED; +//} static int bt_rfkill_set(void *data, bool blocked) { @@ -898,39 +898,9 @@ static const struct rfkill_ops gps_rfkill_ops = { static int rda_combo_power_ctrl_probe(struct platform_device *pdev) { int ret = 0; - struct gpio_desc* wake_pin; + //struct gpio_desc* wake_pin; - printk("rda_combo_power_ctrl_init begin\n"); - - /*if (i2c_add_driver(&rda_wifi_core_driver)) - { - printk("rda_wifi_core_driver failed!\n"); - ret = -ENODEV; - return ret; - } - - if (i2c_add_driver(&rda_wifi_rf_driver)) - { - printk("rda_wifi_rf_driver failed!\n"); - ret = -ENODEV; - return ret; - } - - if (i2c_add_driver(&rda_bt_core_driver)) { - printk("rda_bt_core_driver failed!\n"); - ret = -ENODEV; - return ret; - } - - if (i2c_add_driver(&rda_bt_rf_driver)) { - printk("rda_bt_rf_driver failed!\n"); - ret = -ENODEV; - return ret; - }*/ - -#ifdef RDA_COMBO_FROM_FIRMWARE -#endif - INIT_DELAYED_WORK(&rda_combo_sleep_worker,rda_combo_sleep_worker_task); + //INIT_DELAYED_WORK(&rda_combo_sleep_worker,rda_combo_sleep_worker_task); //wake_lock_init(&rda_combo_wake_lock, WAKE_LOCK_SUSPEND, "RDA_sleep_worker_wake_lock"); combo_reg = regulator_get(&pdev->dev, LDO_BT); @@ -977,16 +947,17 @@ static int rda_combo_power_ctrl_probe(struct platform_device *pdev) else printk("rda_bt_rk failed\n"); - wake_pin = gpiod_get(&pdev->dev, "wakepin", GPIOD_IN); + //wake_pin = gpiod_get(&pdev->dev, "wakepin", GPIOD_IN); - if (IS_ERR(wake_pin)) - { + //if (IS_ERR(wake_pin)) + //{ /* this is not fatal */ - dev_err(&pdev->dev, "Fail to request GPIO for rda_bt_host_wake\n"); + /* dev_err(&pdev->dev, "Fail to request GPIO for rda_bt_host_wake\n"); ret = 0; } else { + gpiod_direction_input(wake_pin); bt_host_wake_irq = gpiod_to_irq(wake_pin); if (bt_host_wake_irq < 0) @@ -999,7 +970,8 @@ static int rda_combo_power_ctrl_probe(struct platform_device *pdev) if (ret) goto fail_platform_device; - } + }*/ + clk32k = clk_get(&pdev->dev, "rda_out"); if (IS_ERR(clk32k)) { @@ -1011,13 +983,9 @@ static int rda_combo_power_ctrl_probe(struct platform_device *pdev) dev_err(&pdev->dev, "cannot get clock clk26m\n"); } - gpiod_put(wake_pin); + //gpiod_put(wake_pin); - //wlan_read_version_from_chip(); - //if (wlan_version == 0) { - // ret = -1; - // goto fail_wland_veriosn; - //} + init_completion(&rda_wifi_bt_comp); complete(&rda_wifi_bt_comp); @@ -1031,7 +999,7 @@ static int rda_combo_power_ctrl_probe(struct platform_device *pdev) clk_put(clk26m); free_irq(bt_host_wake_irq, NULL); fail_rfkill_register: -fail_platform_device: +//fail_platform_device: if (wlan_rfkill) { rfkill_unregister(wlan_rfkill); rfkill_destroy(wlan_rfkill); @@ -1055,7 +1023,7 @@ static int rda_combo_power_ctrl_probe(struct platform_device *pdev) } - cancel_delayed_work_sync(&rda_combo_sleep_worker); + //cancel_delayed_work_sync(&rda_combo_sleep_worker); //wake_lock_destroy(&rda_combo_wake_lock); //i2c_del_driver(&rda_bt_rf_driver); //i2c_del_driver(&rda_bt_core_driver); @@ -1073,7 +1041,7 @@ static int rda_combo_power_ctrl_remove(struct platform_device *pdev) - cancel_delayed_work_sync(&rda_combo_sleep_worker); + //cancel_delayed_work_sync(&rda_combo_sleep_worker); //wake_lock_destroy(&rda_combo_wake_lock); disable_32k_rtc(CLOCK_MASK_ALL); disable_26m_rtc(CLOCK_MASK_ALL); @@ -1185,7 +1153,7 @@ static void __exit rda_combo_net_exit(void) EXPORT_SYMBOL(rda_wlan_version); EXPORT_SYMBOL(check_test_mode); EXPORT_SYMBOL(check_role_mode); -EXPORT_SYMBOL(rda_combo_set_wake_lock); +//EXPORT_SYMBOL(rda_combo_set_wake_lock); EXPORT_SYMBOL(rda_wifi_power_off); EXPORT_SYMBOL(rda_wifi_power_on); EXPORT_SYMBOL(rda_fm_power_on); diff --git a/drivers/rda/net/rdawlan/wland_bus.c b/drivers/rda/net/rdawlan/wland_bus.c index 549bc04..2d7fedf 100644 --- a/drivers/rda/net/rdawlan/wland_bus.c +++ b/drivers/rda/net/rdawlan/wland_bus.c @@ -281,39 +281,33 @@ void wland_rx_frames(struct device *dev, struct sk_buff *skb) void wland_txcomplete(struct device *dev, struct sk_buff *txp, bool success) { - struct wland_bus *bus_if = dev_get_drvdata(dev); - struct wland_private *drvr = bus_if->drvr; - struct wland_if *ifp; - struct ethhdr *eh; + struct wland_private *drvr = ((struct wland_bus *)dev_get_drvdata(dev))->drvr; s32 ifidx = 0; - u16 type; - int res; + int res = wland_proto_hdrpull(drvr, &ifidx, txp); + struct wland_if *ifp = drvr->iflist[ifidx]; + u16 type = ntohs(((struct ethhdr *)(txp->data))->h_proto); + - WLAND_DBG(BUS, TRACE, "Enter,success:%d\n", success); + //WLAND_DBG(BUS, TRACE, "Enter,success:%d\n", success); - res = wland_proto_hdrpull(drvr, &ifidx, txp); - ifp = drvr->iflist[ifidx]; - if (!ifp) - goto done; + if (!ifp) goto done; - if (res == 0) { - eh = (struct ethhdr *) (txp->data); - type = ntohs(eh->h_proto); + if (res == 0) + { - WLAND_DBG(BUS, TRACE, "type:%d\n", type); + //WLAND_DBG(BUS, TRACE, "type:%d\n", type); - if (type == ETH_P_PAE) { + if (type == ETH_P_PAE) + { atomic_dec(&ifp->pend_8021x_cnt); - if (waitqueue_active(&ifp->pend_8021x_wait)) - wake_up(&ifp->pend_8021x_wait); + if (waitqueue_active(&ifp->pend_8021x_wait)) wake_up(&ifp->pend_8021x_wait); } } - if (!success) - ifp->stats.tx_errors++; + if (!success) ifp->stats.tx_errors++; done: wland_pkt_buf_free_skb(txp); - WLAND_DBG(BUS, TRACE, "Done\n"); + //WLAND_DBG(BUS, TRACE, "Done\n"); } int wland_bus_active(struct device *dev) diff --git a/drivers/rda/net/rdawlan/wland_sdio.c b/drivers/rda/net/rdawlan/wland_sdio.c index 61605ce..ad7024d 100644 --- a/drivers/rda/net/rdawlan/wland_sdio.c +++ b/drivers/rda/net/rdawlan/wland_sdio.c @@ -450,22 +450,21 @@ static int wland_sdio_intr_get(struct wland_sdio_dev *sdiodev, u8 * intrstatus) { int ret = 0; - if (!intrstatus) - return -EBADE; + if (!intrstatus) return -EBADE; - if (sdiodev->bus_if->state == WLAND_BUS_DOWN) { + if (sdiodev->bus_if->state == WLAND_BUS_DOWN) + { /* * disable interrupt */ *intrstatus = 0; WLAND_ERR("Bus is down!\n"); - } else { - ret = sdioh_request_byte(sdiodev, SDIOH_READ, - URSDIO_FUNC1_INT_STATUS, intrstatus); - } + } + + else ret = sdioh_request_byte(sdiodev, SDIOH_READ, URSDIO_FUNC1_INT_STATUS, intrstatus); + - WLAND_DBG(SDIO, TRACE, "Enter(interrupt status: 0x%x)\n", - (uint) * intrstatus); + //WLAND_DBG(SDIO, TRACE, "Enter(interrupt status: 0x%x)\n", (uint) * intrstatus); return ret; } @@ -993,75 +992,72 @@ static uint prio2prec(u32 prio) static int wland_sdio_bus_txdata(struct device *dev, struct sk_buff *pkt) { - uint prec; - int ret = -EBADE; + struct wland_bus *bus_if = dev_get_drvdata(dev); struct wland_sdio_dev *sdiodev = bus_if->bus_priv.sdio; struct wland_sdio *bus = sdiodev->bus; unsigned long flags = 0; + uint prec = prio2prec((pkt->priority & PRIOMASK)); - WLAND_DBG(SDIO, TRACE, "Enter\n"); + //WLAND_DBG(SDIO, TRACE, "Enter\n"); /* * precondition: IS_ALIGNED((unsigned long)(pkt->data), 2) */ - prec = prio2prec((pkt->priority & PRIOMASK)); + /* * Check for existing queue, current flow-control, pending event, or pending clock */ - WLAND_DBG(SDIO, TRACE, "deferring pktq len:%d,prec:%d.\n", bus->txq.len, - prec); + //WLAND_DBG(SDIO, TRACE, "deferring pktq len:%d,prec:%d.\n", bus->txq.len, prec); /* * Priority based enq */ - dhd_os_sdlock_txq(bus, &flags); - if (!wland_prec_enq(bus->sdiodev->dev, &bus->txq, pkt, prec)) { - dhd_os_sdunlock_txq(bus, &flags); + if (bus) spin_lock_irqsave(&bus->txqlock, flags); + + if (!wland_prec_enq(bus->sdiodev->dev, &bus->txq, pkt, prec)) + { + if (bus) spin_unlock_irqrestore(&bus->txqlock, flags); wland_txcomplete(bus->sdiodev->dev, pkt, false); WLAND_ERR("bus->txq is over flow!!!\n"); return -ENOSR; - } else { - ret = 0; } - if (bus_if->state != WLAND_BUS_DATA) { + if (bus_if->state != WLAND_BUS_DATA) + { WLAND_ERR("bus has stop\n"); - dhd_os_sdunlock_txq(bus, &flags); + if (bus) spin_unlock_irqrestore(&bus->txqlock, flags); return -1; } - dhd_os_sdunlock_txq(bus, &flags); + if (bus) spin_unlock_irqrestore(&bus->txqlock, flags); WAKE_TX_WORK(bus); - if (bus->txq.len >= TXHI) { + if (bus->txq.len >= TXHI) + { bus->txoff = true; wland_txflowcontrol(bus->sdiodev->dev, true); } - WLAND_DBG(SDIO, TRACE, "TXDATA Wake up DPC work, pktq len:%d\n", - bus->txq.len); - WLAND_DBG(SDIO, TRACE, - "TX Data Wake up TX DPC work, bus->tx_dpc_tskcnt:%d, pktq len:%d\n", - atomic_read(&bus->tx_dpc_tskcnt), bus->txq.len); + //WLAND_DBG(SDIO, TRACE, "TXDATA Wake up DPC work, pktq len:%d\n", bus->txq.len); + //WLAND_DBG(SDIO, TRACE, "TX Data Wake up TX DPC work, bus->tx_dpc_tskcnt:%d, pktq len:%d\n", atomic_read(&bus->tx_dpc_tskcnt), bus->txq.len); - return ret; + return 0; } static int wland_sdio_bus_txctl(struct device *dev, u8 * msg, uint msglen) { - int ret = -1; struct wland_bus *bus_if = dev_get_drvdata(dev); struct wland_sdio_dev *sdiodev = bus_if->bus_priv.sdio; struct wland_sdio *bus = sdiodev->bus; - WLAND_DBG(SDIO, TRACE, "Enter\n"); + //WLAND_DBG(SDIO, TRACE, "Enter\n"); /* * Need to lock here to protect txseq and SDIO tx calls */ - dhd_os_sdlock(bus); + if (bus->threads_only) down(&bus->sdsem); bus->ctrl_frame_stat = true; bus->ctrl_frame_send_success = false; @@ -1077,45 +1073,42 @@ static int wland_sdio_bus_txctl(struct device *dev, u8 * msg, uint msglen) } WAKE_TX_WORK(bus); - WLAND_DBG(BUS, TRACE, - "TXCTL Wake up TX DPC work, bus->tx_dpc_tskcnt:%d\n", - atomic_read(&bus->tx_dpc_tskcnt)); - if (bus->ctrl_frame_stat) - dhd_os_wait_for_event(bus, &bus->ctrl_frame_stat); - - if (!bus->ctrl_frame_stat && bus->ctrl_frame_send_success) { - WLAND_DBG(SDIO, DEBUG, - "ctrl_frame_stat == false, send success\n"); - ret = 0; - } else if(!bus->ctrl_frame_stat && !bus->ctrl_frame_send_success){ - WLAND_DBG(SDIO, INFO, "ctrl_frame_stat == true, send failed\n"); - ret = -1; - } - if (ret) - bus->sdcnt.tx_ctlerrs++; - else - bus->sdcnt.tx_ctlpkts++; + //WLAND_DBG(BUS, TRACE, "TXCTL Wake up TX DPC work, bus->tx_dpc_tskcnt:%d\n", atomic_read(&bus->tx_dpc_tskcnt)); + if (bus->ctrl_frame_stat) dhd_os_wait_for_event(bus, &bus->ctrl_frame_stat); - return ret ? -EIO : 0; + if (!bus->ctrl_frame_stat && bus->ctrl_frame_send_success) + { + //WLAND_DBG(SDIO, DEBUG, "ctrl_frame_stat == false, send success\n"); + + bus->sdcnt.tx_ctlpkts++; + return 0; + } + else if(!bus->ctrl_frame_stat && !bus->ctrl_frame_send_success) + { + //WLAND_DBG(SDIO, INFO, "ctrl_frame_stat == true, send failed\n"); + bus->sdcnt.tx_ctlerrs++; + return -EIO; + } + return 0; + } static int wland_sdio_bus_rxctl(struct device *dev, u8 * msg, uint msglen) { - int timeleft; + uint rxlen = 0; bool pending = false; - struct wland_bus *bus_if = dev_get_drvdata(dev); - struct wland_sdio_dev *sdiodev = bus_if->bus_priv.sdio; - struct wland_sdio *bus = sdiodev->bus; + struct wland_sdio *bus = (((struct wland_bus*)dev_get_drvdata(dev))->bus_priv.sdio)->bus; + int timeleft = dhd_os_ioctl_resp_wait(bus, &bus->rxlen, &pending); - WLAND_DBG(SDIO, TRACE, "Enter\n"); + //WLAND_DBG(SDIO, TRACE, "Enter\n"); /* * Wait until control frame is available */ - timeleft = dhd_os_ioctl_resp_wait(bus, &bus->rxlen, &pending); - if (bus->rxlen > 0) { + if (bus->rxlen > 0) + { spin_lock_bh(&bus->rxctl_lock); rxlen = bus->rxlen; memcpy(msg, bus->rxctl, min(msglen, rxlen)); @@ -1123,48 +1116,53 @@ static int wland_sdio_bus_rxctl(struct device *dev, u8 * msg, uint msglen) spin_unlock_bh(&bus->rxctl_lock); } - if (rxlen) { - WLAND_DBG(SDIO, TRACE, - "resumed on rxctl frame, got %d expected %d\n", rxlen, - msglen); - } else if (timeleft == 0) { - WLAND_ERR("resumed on timeout\n"); - } else if (pending) { - WLAND_DBG(SDIO, DEBUG, "cancelled\n"); - return -ERESTARTSYS; - } else { - WLAND_DBG(SDIO, DEBUG, "resumed for unknown reason\n"); - } + //if (rxlen) WLAND_DBG(SDIO, TRACE, "resumed on rxctl frame, got %d expected %d\n", rxlen, msglen); + + if (timeleft == 0) WLAND_ERR("resumed on timeout\n"); + + //else if (pending) + //{ + // WLAND_DBG(SDIO, DEBUG, "cancelled\n"); + // return -ERESTARTSYS; + //} + + //else WLAND_DBG(SDIO, DEBUG, "resumed for unknown reason\n"); + + if (pending) return -ERESTARTSYS; if (rxlen) + { bus->sdcnt.rx_ctlpkts++; + return rxlen; + } else + { bus->sdcnt.rx_ctlerrs++; + return -ETIMEDOUT; + } - return rxlen ? (int) rxlen : -ETIMEDOUT; + //return rxlen ? (int) rxlen : -ETIMEDOUT; + return rxlen; } static int wland_sdio_bus_init(struct device *dev) { struct wland_bus *bus_if = dev_get_drvdata(dev); - struct wland_sdio_dev *sdiodev = bus_if->bus_priv.sdio; - struct wland_sdio *bus = sdiodev->bus; - int ret = 0; + struct wland_sdio *bus = (bus_if->bus_priv.sdio)->bus; + int ret = wland_sdio_intr_register(bus->sdiodev); - WLAND_DBG(BUS, TRACE, "Enter\n"); + //WLAND_DBG(BUS, TRACE, "Enter\n"); /* * Start the watchdog timer */ bus->sdcnt.tickcnt = 0; - ret = wland_sdio_intr_register(bus->sdiodev); - if (ret != 0) - WLAND_ERR("intr register failed:%d\n", ret); + if (ret != 0) WLAND_ERR("intr register failed:%d\n", ret); bus_if->state = WLAND_BUS_DATA; - WLAND_DBG(BUS, TRACE, "Done\n"); + //WLAND_DBG(BUS, TRACE, "Done\n"); return ret; } @@ -1346,10 +1344,8 @@ static void wland_bus_watchdog(struct timer_list *tList) static void wland_sdioh_irqhandler(struct sdio_func *func) { struct wland_bus *bus_if = dev_get_drvdata(&func->dev); - struct wland_sdio_dev *sdiodev = bus_if->bus_priv.sdio; - struct wland_sdio *bus = sdiodev->bus; + struct wland_sdio *bus = ((struct wland_sdio_dev*)bus_if->bus_priv.sdio)->bus; u8 intstatus = 0; - uint prec; struct sk_buff *pkt = NULL; unsigned long flags = 0; @@ -1383,44 +1379,46 @@ static void wland_sdioh_irqhandler(struct sdio_func *func) atomic_set(&bus->intstatus, intstatus); - WLAND_DBG(BUS, TRACE, "sdio_intstatus:%x\n", intstatus); + //WLAND_DBG(BUS, TRACE, "sdio_intstatus:%x\n", intstatus); /* * On frame indication, read available frames */ - if (intstatus & I_AHB2SDIO) { + if (intstatus & I_AHB2SDIO) + { pkt = wland_sdio_readframes(bus); - } else if (intstatus & I_ERROR) { + } + else if (intstatus & I_ERROR) + { u8 val = I_ERROR; - sdioh_request_byte(bus->sdiodev, SDIOH_WRITE, - URSDIO_FUNC1_INT_PENDING, &val); + sdioh_request_byte(bus->sdiodev, SDIOH_WRITE, URSDIO_FUNC1_INT_PENDING, &val); WLAND_ERR("int_error!\n"); - } else { - WLAND_DBG(BUS, DEBUG, - "No Interrupt(bus->clkstate:%d,bus->ctrl_frame_stat:%d).\n", - bus->clkstate, bus->ctrl_frame_stat); - } + } + + //else WLAND_DBG(BUS, DEBUG, "No Interrupt(bus->clkstate:%d,bus->ctrl_frame_stat:%d).\n", bus->clkstate, bus->ctrl_frame_stat); + - if (pkt) { - prec = prio2prec((pkt->priority & PRIOMASK)); - dhd_os_sdlock_rxq(bus, &flags); - if(!wland_prec_enq(bus->sdiodev->dev, &bus->rxq, pkt, prec)){ - dhd_os_sdunlock_rxq(bus, &flags); + if (pkt) + { + uint prec = prio2prec((pkt->priority & PRIOMASK)); + if (bus) spin_lock_irqsave(&bus->rxqlock, flags); + + if(!wland_prec_enq(bus->sdiodev->dev, &bus->rxq, pkt, prec)) + { + if (bus) spin_unlock_irqrestore(&bus->rxqlock, flags); WLAND_ERR("bus->rxq is over flow!!!\n"); wland_pkt_buf_free_skb(pkt); return; } - dhd_os_sdunlock_rxq(bus, &flags); - WLAND_DBG(BUS, TRACE, - "IRQ Wake up RX Work, bus->rx_dpc_tskcnt=%d\n", - atomic_read(&bus->rx_dpc_tskcnt)); - WLAND_DBG(BUS, TRACE,"rxq_len=%d\n", wland_pktq_mlen(&bus->rxq, ~bus->flowcontrol)); + + if (bus) spin_unlock_irqrestore(&bus->rxqlock, flags); + + //WLAND_DBG(BUS, TRACE, "IRQ Wake up RX Work, bus->rx_dpc_tskcnt=%d\n", atomic_read(&bus->rx_dpc_tskcnt)); + //WLAND_DBG(BUS, TRACE,"rxq_len=%d\n", wland_pktq_mlen(&bus->rxq, ~bus->flowcontrol)); WAKE_RX_WORK(bus); } - WLAND_DBG(SDIO, TRACE, - "IRQ schedule work, bus->rx_dpc_tskcnt:%d, Done\n", - atomic_read(&bus->rx_dpc_tskcnt)); + //WLAND_DBG(SDIO, TRACE, "IRQ schedule work, bus->rx_dpc_tskcnt:%d, Done\n", atomic_read(&bus->rx_dpc_tskcnt)); } int wland_sdio_intr_register(struct wland_sdio_dev *sdiodev) @@ -1432,7 +1430,7 @@ int wland_sdio_intr_register(struct wland_sdio_dev *sdiodev) ret = wland_sdio_intr_set(sdiodev, true); sdio_release_host(sdiodev->func); - WLAND_DBG(SDIO, TRACE, "Enter(ret:%d)\n", ret); + //WLAND_DBG(SDIO, TRACE, "Enter(ret:%d)\n", ret); return ret; } diff --git a/drivers/rda/net/rdawlan/wland_sdmmc.c b/drivers/rda/net/rdawlan/wland_sdmmc.c index 230737a..04e24d3 100644 --- a/drivers/rda/net/rdawlan/wland_sdmmc.c +++ b/drivers/rda/net/rdawlan/wland_sdmmc.c @@ -80,8 +80,7 @@ bool wland_pm_resume_error(struct wland_sdio_dev *sdiodev) return is_err; } -void wland_pm_resume_wait(struct wland_sdio_dev *sdiodev, - wait_queue_head_t * wq) +void wland_pm_resume_wait(struct wland_sdio_dev *sdiodev, wait_queue_head_t * wq) { #if 0 #ifdef CONFIG_PM_SLEEP @@ -93,28 +92,22 @@ void wland_pm_resume_wait(struct wland_sdio_dev *sdiodev, #endif } -int sdioh_request_byte(struct wland_sdio_dev *sdiodev, uint rw, uint regaddr, - u8 * byte) +int sdioh_request_byte(struct wland_sdio_dev *sdiodev, uint rw, uint regaddr, u8 * byte) { int err_ret; - WLAND_DBG(SDIO, TRACE, "rw=%d,addr=0x%05x\n", rw, regaddr); + //WLAND_DBG(SDIO, TRACE, "rw=%d,addr=0x%05x\n", rw, regaddr); - wland_pm_resume_wait(sdiodev, &sdiodev->request_byte_wait); + //wland_pm_resume_wait(sdiodev, &sdiodev->request_byte_wait); - if (wland_pm_resume_error(sdiodev)) - return -EIO; + //if (wland_pm_resume_error(sdiodev)) return -EIO; //sdio_claim_host(sdiodev->func); - if (SDIOH_WRITE == rw) /* CMD52 Write */ - sdio_writeb(sdiodev->func, *byte, regaddr, &err_ret); - else - *byte = sdio_readb(sdiodev->func, regaddr, &err_ret); + if (SDIOH_WRITE == rw) sdio_writeb(sdiodev->func, *byte, regaddr, &err_ret); + else *byte = sdio_readb(sdiodev->func, regaddr, &err_ret); //sdio_release_host(sdiodev->func); - if (err_ret) - WLAND_ERR("Failed to %s :@0x%05x=%02x,Err: %d.\n", - rw ? "write" : "read", regaddr, *byte, err_ret); + if (err_ret) WLAND_ERR("Failed to %s :@0x%05x=%02x,Err: %d.\n", rw ? "write" : "read", regaddr, *byte, err_ret); return err_ret; } @@ -810,44 +803,37 @@ void wland_sdio_exit(void) // // ////////////////////////////////////////////////////////////////////////////////// -void dhd_os_sdlock(struct wland_sdio *bus) +void inline dhd_os_sdlock(struct wland_sdio *bus) { - if (bus->threads_only) - down(&bus->sdsem); + if (bus->threads_only) down(&bus->sdsem); } -void dhd_os_sdunlock(struct wland_sdio *bus) +void inline dhd_os_sdunlock(struct wland_sdio *bus) { - if (bus->threads_only) - up(&bus->sdsem); + if (bus->threads_only) up(&bus->sdsem); } -void dhd_os_sdlock_txq(struct wland_sdio *bus, unsigned long *flags) +void inline dhd_os_sdlock_txq(struct wland_sdio *bus, unsigned long *flags) { - if (bus) - spin_lock_irqsave(&bus->txqlock, *flags); + if (bus) spin_lock_irqsave(&bus->txqlock, *flags); } -void dhd_os_sdunlock_txq(struct wland_sdio *bus, unsigned long *flags) +void inline dhd_os_sdunlock_txq(struct wland_sdio *bus, unsigned long *flags) { - if (bus) - spin_unlock_irqrestore(&bus->txqlock, *flags); + if (bus) spin_unlock_irqrestore(&bus->txqlock, *flags); } -void dhd_os_sdlock_rxq(struct wland_sdio *bus, unsigned long *flags) +void inline dhd_os_sdlock_rxq(struct wland_sdio *bus, unsigned long *flags) { - if (bus) - spin_lock_irqsave(&bus->rxqlock, *flags); + if (bus) spin_lock_irqsave(&bus->rxqlock, *flags); } -void dhd_os_sdunlock_rxq(struct wland_sdio *bus, unsigned long *flags) +void inline dhd_os_sdunlock_rxq(struct wland_sdio *bus, unsigned long *flags) { - if (bus) - spin_unlock_irqrestore(&bus->rxqlock, *flags); + if (bus) spin_unlock_irqrestore(&bus->rxqlock, *flags); } -int dhd_os_ioctl_resp_wait(struct wland_sdio *bus, uint * condition, - bool * pending) +int dhd_os_ioctl_resp_wait(struct wland_sdio *bus, uint * condition, bool * pending) { DECLARE_WAITQUEUE(wait, current);