mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-22 12:14:01 +08:00
[media] siano: Configure board's mtu and xtal
Backported from Doron Cohen's patch: http://patchwork.linuxtv.org/patch/7889/ Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
347d8f1fa6
commit
dfbf021c9e
@ -824,6 +824,57 @@ static int smscore_init_ir(struct smscore_device_t *coredev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* configures device features according to board configuration structure.
|
||||||
|
*
|
||||||
|
* @param coredev pointer to a coredev object returned by
|
||||||
|
* smscore_register_device
|
||||||
|
*
|
||||||
|
* @return 0 on success, <0 on error.
|
||||||
|
*/
|
||||||
|
int smscore_configure_board(struct smscore_device_t *coredev)
|
||||||
|
{
|
||||||
|
struct sms_board *board;
|
||||||
|
|
||||||
|
board = sms_get_board(coredev->board_id);
|
||||||
|
if (!board) {
|
||||||
|
sms_err("no board configuration exist.");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (board->mtu) {
|
||||||
|
struct SmsMsgData_ST MtuMsg;
|
||||||
|
sms_debug("set max transmit unit %d", board->mtu);
|
||||||
|
|
||||||
|
MtuMsg.xMsgHeader.msgSrcId = 0;
|
||||||
|
MtuMsg.xMsgHeader.msgDstId = HIF_TASK;
|
||||||
|
MtuMsg.xMsgHeader.msgFlags = 0;
|
||||||
|
MtuMsg.xMsgHeader.msgType = MSG_SMS_SET_MAX_TX_MSG_LEN_REQ;
|
||||||
|
MtuMsg.xMsgHeader.msgLength = sizeof(MtuMsg);
|
||||||
|
MtuMsg.msgData[0] = board->mtu;
|
||||||
|
|
||||||
|
smsendian_handle_tx_message((struct SmsMsgHdr_ST *)&MtuMsg);
|
||||||
|
coredev->sendrequest_handler(coredev->context, &MtuMsg,
|
||||||
|
sizeof(MtuMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (board->crystal) {
|
||||||
|
struct SmsMsgData_ST CrysMsg;
|
||||||
|
sms_debug("set crystal value %d", board->crystal);
|
||||||
|
|
||||||
|
SMS_INIT_MSG(&CrysMsg.xMsgHeader,
|
||||||
|
MSG_SMS_NEW_CRYSTAL_REQ,
|
||||||
|
sizeof(CrysMsg));
|
||||||
|
CrysMsg.msgData[0] = board->crystal;
|
||||||
|
|
||||||
|
smsendian_handle_tx_message((struct SmsMsgHdr_S *)&CrysMsg);
|
||||||
|
coredev->sendrequest_handler(coredev->context, &CrysMsg,
|
||||||
|
sizeof(CrysMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sets initial device mode and notifies client hotplugs that device is ready
|
* sets initial device mode and notifies client hotplugs that device is ready
|
||||||
*
|
*
|
||||||
@ -840,6 +891,11 @@ int smscore_start_device(struct smscore_device_t *coredev)
|
|||||||
sms_info("set device mode faile , rc %d", rc);
|
sms_info("set device mode faile , rc %d", rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
rc = smscore_configure_board(coredev);
|
||||||
|
if (rc < 0) {
|
||||||
|
sms_info("configure board failed , rc %d", rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
kmutex_lock(&g_smscore_deviceslock);
|
kmutex_lock(&g_smscore_deviceslock);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user