static void at91sam9m10ihd_devices_detect_one(const char *name) { struct one_wire_info info; struct board_info* binfo; struct vendor_info* vinfo; struct device_d *dev = NULL; char str[16]; u8 vendor_id = 0; if (at91sam9m10ihd_read_w1(name, &info)) return; binfo = get_board_info_by_name(info.board_name); if (!binfo) { pr_err("board %s no supported\n", info.board_name); return; } vinfo = get_vendor_info_by_name(info.vendor_name); if (vinfo) vendor_id = vinfo->id; switch (binfo->type) { case BOARD_TYPE_CPU: dev = add_generic_device_res("at91sam9m10ihd", DEVICE_ID_SINGLE, NULL, 0, NULL); if (!dev) return; sn |= (binfo->id & 0x1f); sn |= ((vendor_id & 0x1f) << 5); rev |= (info.revision_code - 'A'); rev |= (((info.revision_id - '0') & 0x3) << 15); pr_info("CM"); break; case BOARD_TYPE_DB: dev = add_generic_device_res("at91sam9m10ihd-db", DEVICE_ID_SINGLE, NULL, 0, NULL); if (!dev) return; sn |= ((binfo->id & 0x1f) << 20); sn |= ((vendor_id & 0x1f) << 25); rev |= ((info.revision_code - 'A') << 10); rev |= (((info.revision_id - '0') & 0x3) << 21); pr_info("DB"); break; } pr_info(": %s [%c%c] from %s\n", info.board_name, info.revision_code, info.revision_id, info.vendor_name); dev_add_param_fixed(dev, "vendor", info.vendor_name); dev_add_param_fixed(dev, "board", info.board_name); sprintf(str, "%.2s", info.vendor_country); dev_add_param_fixed(dev, "country", str); dev_add_param_int_ro(dev, "year", info.year, "%d"); dev_add_param_int_ro(dev, "week", info.week, "%d"); sprintf(str, "%c", info.revision_code); dev_add_param_fixed(dev, "revision_code", str); sprintf(str, "%c", info.revision_id); dev_add_param_fixed(dev, "revision_id", str); }
static void at91sama5d3xek_devices_detect_one(const char *name) { struct one_wire_info info; struct board_info* binfo; struct vendor_info* vinfo; struct device_d *dev = NULL; char str[16]; char *bname, *vname; u8 vendor_id = 0; if (at91sama5d3xek_read_w1(name, &info)) return; binfo = get_board_info_by_name(info.board_name); if (!binfo) { pr_err("board %s no supported\n", info.board_name); return; } bname = binfo->name; vinfo = get_vendor_info_by_name(info.vendor_name); vname = info.vendor_name; if (vinfo) { vendor_id = vinfo->id; vname = vinfo->name; } switch (binfo->type) { case BOARD_TYPE_CPU: dev = add_generic_device_res("sama5d3xcm", DEVICE_ID_SINGLE, NULL, 0, NULL); if (!dev) return; sn |= (binfo->id & 0x1f); sn |= ((vendor_id & 0x1f) << 5); rev |= (info.revision_board - 'A'); rev |= (((info.revision_schema - '0') & 0x3) << 15); pr_info("CM"); break; case BOARD_TYPE_MB: dev = add_generic_device_res("sama5d3xmb", DEVICE_ID_SINGLE, NULL, 0, NULL); if (!dev) return; sn |= ((binfo->id & 0x1f) << 20); sn |= ((vendor_id & 0x1f) << 25); rev |= ((info.revision_board - 'A') << 10); rev |= (((info.revision_schema - '0') & 0x3) << 21); pr_info("MB"); break; case BOARD_TYPE_DM: dev = add_generic_device_res("sama5d3xdm", DEVICE_ID_SINGLE, NULL, 0, NULL); if (!dev) return; sn |= ((binfo->id & 0x1f) << 10); sn |= ((vendor_id & 0x1f) << 15); rev |= ((info.revision_board - 'A') << 5); rev |= (((info.revision_schema - '0') & 0x3) << 18); pr_info("DM"); break; } pr_info(": %s [%c%c] from %s\n", bname, info.revision_board, info.revision_schema, vname); dev_add_param_fixed(dev, "vendor", vname); dev_add_param_fixed(dev, "board", bname); sprintf(str, "%.2s", info.vendor_country); dev_add_param_fixed(dev, "country", str); dev_add_param_uint32_fixed(dev, "year", info.year, "%u"); dev_add_param_uint32_fixed(dev, "week", info.week, "%u"); sprintf(str, "%c", info.revision_board); dev_add_param_fixed(dev, "revision_board", str); sprintf(str, "%c", info.revision_schema); dev_add_param_fixed(dev, "revision_schema", str); sprintf(str, "%c", info.revision_bom); dev_add_param_fixed(dev, "revision_bom", str); }