Skip to content

Commit

Permalink
Some optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
Deema35 committed Oct 24, 2023
1 parent 81fb359 commit 97d59d9
Show file tree
Hide file tree
Showing 4 changed files with 174 additions and 228 deletions.
98 changes: 33 additions & 65 deletions drivers/rda/net/rdacombodev/rda_combo_power_main.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
//}



Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand All @@ -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)) {
Expand All @@ -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);

Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
36 changes: 15 additions & 21 deletions drivers/rda/net/rdawlan/wland_bus.c
Expand Up @@ -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)
Expand Down

0 comments on commit 97d59d9

Please sign in to comment.