Update ath10k-bdencoder

Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Kalle Valo 2018-10-13 14:24:20 +03:00
parent 605442e9a8
commit 141f3b0e02

View file

@ -42,10 +42,14 @@ DEFAULT_JSON_FILE = 'board-%d.json' % DEFAULT_BD_API
TYPE_LENGTH_SIZE = 8
ATH10K_BD_IE_BOARD = 0
ATH10K_BD_IE_BOARD_EXT = 1
ATH10K_BD_IE_BOARD_NAME = 0
ATH10K_BD_IE_BOARD_DATA = 1
ATH10K_BD_IE_BOARD_EXT_NAME = 0
ATH10K_BD_IE_BOARD_EXT_DATA = 1
def padding_needed(len):
if len % 4 != 0:
@ -96,8 +100,12 @@ class BoardName():
return self
def add_to_buf(self, buf, offset):
return add_ie(buf, offset, ATH10K_BD_IE_BOARD_NAME, str(self.name))
def add_to_buf(self, ebdf, buf, offset):
ie_id = ATH10K_BD_IE_BOARD_NAME
if ebdf:
ie_id = ATH10K_BD_IE_BOARD_EXT_NAME
return add_ie(buf, offset, ie_id, str(self.name))
def __eq__(self, other):
return self.name == other.name
@ -124,8 +132,12 @@ class BoardData():
return self
def add_to_buf(self, buf, offset):
return add_ie(buf, offset, ATH10K_BD_IE_BOARD_DATA, self.data)
def add_to_buf(self, ebdf, buf, offset):
ie_id = ATH10K_BD_IE_BOARD_DATA
if ebdf:
ie_id = ATH10K_BD_IE_BOARD_EXT_DATA
return add_ie(buf, offset, ie_id, self.data)
def __repr__(self):
return self.__str__()
@ -163,9 +175,12 @@ class Board():
offset += TYPE_LENGTH_SIZE
length -= TYPE_LENGTH_SIZE
if ie_id == ATH10K_BD_IE_BOARD_NAME:
# FIXME: create separate ExtenderBoard() class so that we
# don't need these "or" hacks here. Maybe add a common
# abstract class to avoid code duplication?
if ie_id == ATH10K_BD_IE_BOARD_NAME or ie_id == ATH10K_BD_IE_BOARD_EXT_NAME:
self.names.append(BoardName.parse_ie(buf, offset, ie_len))
elif ie_id == ATH10K_BD_IE_BOARD_DATA:
elif ie_id == ATH10K_BD_IE_BOARD_DATA or ie_id == ATH10K_BD_IE_BOARD_EXT_DATA:
self.data = BoardData.parse_ie(buf, offset, ie_len)
offset += ie_len + padding_needed(ie_len)
@ -179,14 +194,19 @@ class Board():
offset += TYPE_LENGTH_SIZE
for name in self.names:
offset = name.add_to_buf(buf, offset)
ie_id = ATH10K_BD_IE_BOARD
offset = self.data.add_to_buf(buf, offset)
if self.ebdf:
ie_id = ATH10K_BD_IE_BOARD_EXT
for name in self.names:
offset = name.add_to_buf(self.ebdf, buf, offset)
offset = self.data.add_to_buf(self.ebdf, buf, offset)
# write ie header as now we know the full length
ie_len = offset - ie_offset - TYPE_LENGTH_SIZE
struct.pack_into('<2i', buf, ie_offset, ATH10K_BD_IE_BOARD, ie_len)
struct.pack_into('<2i', buf, ie_offset, ie_id, ie_len)
return offset
@ -210,16 +230,21 @@ class Board():
def __init__(self):
self.data = None
self.names = []
self.ebdf = False
class BoardContainer:
def add_board(self, data, names):
boardnames = []
ebdf = False
for name in names:
if "bmi-eboard-id" in name:
ebdf = True
boardnames.append(BoardName(name))
board = Board()
board.ebdf = ebdf
board.data = BoardData(data)
board.names = boardnames
@ -317,7 +342,9 @@ class BoardContainer:
buf_len)
return 1
if ie_id == ATH10K_BD_IE_BOARD:
# FIXME: create separate ExtenderBoard() class and
# self.extender_boards list
if ie_id == ATH10K_BD_IE_BOARD or ie_id == ATH10K_BD_IE_BOARD_EXT:
self.boards.append(Board.parse_ie(buf, offset, ie_len))
offset += ie_len + padding_needed(ie_len)