41 lines
1.3 KiB
C
Executable File
41 lines
1.3 KiB
C
Executable File
/*
|
|
* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include "ufshcd.h"
|
|
#include "ufs_quirks.h"
|
|
|
|
#define SERIAL_NUM_SIZE 7
|
|
#define TOSHIBA_SERIAL_NUM_SIZE 10
|
|
|
|
void ufs_set_sec_unique_number(struct ufs_hba *hba, u8 *str_desc_buf, u8 *desc_buf)
|
|
{
|
|
u8 manid;
|
|
u8 snum_buf[UFS_UN_MAX_DIGITS];
|
|
|
|
manid = hba->manufacturer_id & 0xFF;
|
|
memset(hba->unique_number, 0, sizeof(hba->unique_number));
|
|
memset(snum_buf, 0, sizeof(snum_buf));
|
|
|
|
memcpy(snum_buf, str_desc_buf + QUERY_DESC_HDR_SIZE, SERIAL_NUM_SIZE);
|
|
|
|
sprintf(hba->unique_number, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
|
|
manid,
|
|
desc_buf[DEVICE_DESC_PARAM_MANF_DATE], desc_buf[DEVICE_DESC_PARAM_MANF_DATE+1],
|
|
snum_buf[0], snum_buf[1], snum_buf[2], snum_buf[3], snum_buf[4], snum_buf[5], snum_buf[6]);
|
|
|
|
/* Null terminate the unique number string */
|
|
hba->unique_number[UFS_UN_20_DIGITS] = '\0';
|
|
}
|
|
|
|
|