And it looks my theory is correct, there's a function to decode/show BT device ID in there 
================
static ssize_t bt_addr_show(struct device *dev, struct device_attribute *attr,
362 char *buf)
363 {
364 int ret;
365 u8 bt_addr[6];
366
367 ret = dock_acquire(&ds);
368 if (ret < 0)
369 return ret;
370 ret = dock_read_multi(&ds, DOCK_BT_ADDR, bt_addr, 6);
371 dock_release(&ds);
372 if (ret < 0)
373 return ret;
374
375 return sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x\n",
376 bt_addr[0], bt_addr[1], bt_addr[2],
377 bt_addr[3], bt_addr[4], bt_addr[5]);
378 }
================
static ssize_t bt_addr_show(struct device *dev, struct device_attribute *attr,
362 char *buf)
363 {
364 int ret;
365 u8 bt_addr[6];
366
367 ret = dock_acquire(&ds);
368 if (ret < 0)
369 return ret;
370 ret = dock_read_multi(&ds, DOCK_BT_ADDR, bt_addr, 6);
371 dock_release(&ds);
372 if (ret < 0)
373 return ret;
374
375 return sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x\n",
376 bt_addr[0], bt_addr[1], bt_addr[2],
377 bt_addr[3], bt_addr[4], bt_addr[5]);
378 }