u16     **eFuseWord = NULL;
        u16     efuse_utilized = 0;
        u8 u1temp = 0;
+       void **tmp = NULL;
 
        efuseTbl = kzalloc(EFUSE_MAP_LEN_88E, GFP_KERNEL);
        if (!efuseTbl)
                return;
 
-       eFuseWord = (u16 **)rtw_malloc2d(EFUSE_MAX_SECTION_88E, EFUSE_MAX_WORD_UNIT, sizeof(u16));
-       if (!eFuseWord) {
+       tmp = kzalloc(EFUSE_MAX_SECTION_88E * (sizeof(void *) + EFUSE_MAX_WORD_UNIT * sizeof(u16)), GFP_KERNEL);
+       if (!tmp) {
                DBG_88E("%s: alloc eFuseWord fail!\n", __func__);
                goto eFuseWord_failed;
        }
+       for (i = 0; i < EFUSE_MAX_SECTION_88E; i++)
+               tmp[i] = ((char *)(tmp + EFUSE_MAX_SECTION_88E)) + i * EFUSE_MAX_WORD_UNIT * sizeof(u16);
+       eFuseWord = (u16 **)tmp;
 
        /*  0. Refresh efuse init map as all oxFF. */
        for (i = 0; i < EFUSE_MAX_SECTION_88E; i++)
 
 u8 *_rtw_malloc(u32 sz);
 #define rtw_malloc(sz)                 _rtw_malloc((sz))
 
-void *rtw_malloc2d(int h, int w, int size);
-
 void _rtw_init_queue(struct __queue *pqueue);
 
 struct rtw_netdev_priv_indicator {
 
        return kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
 }
 
-void *rtw_malloc2d(int h, int w, int size)
-{
-       int j;
-       void **a = kzalloc(h * sizeof(void *) + h * w * size, GFP_KERNEL);
-
-       if (!a)
-               goto out;
-
-       for (j = 0; j < h; j++)
-               a[j] = ((char *)(a + h)) + j * w * size;
-out:
-       return a;
-}
-
 void _rtw_init_queue(struct __queue *pqueue)
 {
        INIT_LIST_HEAD(&pqueue->queue);