本文整理汇总了C++中spi_message_init函数的典型用法代码示例。如果您正苦于以下问题:C++ spi_message_init函数的具体用法?C++ spi_message_init怎么用?C++ spi_message_init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了spi_message_init函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: cxd2880_spi_read_ts
static int cxd2880_spi_read_ts(struct spi_device *spi,
u8 *read_data,
u32 packet_num)
{
int ret;
u8 data[3];
struct spi_message message;
struct spi_transfer transfer[2] = {};
if (!spi || !read_data || !packet_num) {
pr_err("invalid arg\n");
return -EINVAL;
}
if (packet_num > 0xffff) {
pr_err("packet num > 0xffff\n");
return -EINVAL;
}
data[0] = 0x10;
data[1] = packet_num >> 8;
data[2] = packet_num;
spi_message_init(&message);
transfer[0].len = 3;
transfer[0].tx_buf = data;
spi_message_add_tail(&transfer[0], &message);
transfer[1].len = packet_num * 188;
transfer[1].rx_buf = read_data;
spi_message_add_tail(&transfer[1], &message);
ret = spi_sync(spi, &message);
if (ret)
pr_err("spi_write_then_read failed\n");
return ret;
}
开发者ID:Anjali05,项目名称:linux,代码行数:37,代码来源:cxd2880-spi.c
示例2: smt113j_spi_cmd_init
static int smt113j_spi_cmd_init ( void )
{
int ret = 0;
ioctl_spi_internal_reg spi_command = { 0 };
struct spi_message m = {{ 0 }};
struct spi_transfer t[3] = {{ 0 }};
DEBUG_PRINT("smt113j_spi_cmd_init << Start >>");
/*** SPI message init ***/
spi_message_init ( &m );
/*** SPI command set ***/
spi_command.cmd = 0x01;
spi_command.data = 0xB1;
/*** transfer data set ***/
t[0].tx_buf = &spi_command;
t[0].rx_buf = NULL;
t[0].len = sizeof ( spi_command );
spi_message_add_tail ( &t[0], &m );
/*** SPI transfer request ***/
ret = spi_sync ( smt113j_spi_device, &m );
if ( 0 > ret )
{
ERROR_PRINT ("smt113j_spi_cmd_init : Sync Error << ret = %d >>", ret );
}
DEBUG_PRINT("smt113j_spi_cmd_init << End : %d >>", ret );
return ( ret );
}
开发者ID:Adrioid83,项目名称:jflte_xxx,代码行数:37,代码来源:tuner_spi.c
示例3: adis16203_read_ring_data
/**
* adis16203_read_ring_data() read data registers which will be placed into ring
* @indio_dev: the IIO device
* @rx: somewhere to pass back the value read
**/
static int adis16203_read_ring_data(struct iio_dev *indio_dev, u8 *rx)
{
struct spi_message msg;
struct adis16203_state *st = iio_priv(indio_dev);
struct spi_transfer xfers[ADIS16203_OUTPUTS + 1];
int ret;
int i;
mutex_lock(&st->buf_lock);
spi_message_init(&msg);
memset(xfers, 0, sizeof(xfers));
for (i = 0; i <= ADIS16203_OUTPUTS; i++) {
xfers[i].bits_per_word = 8;
xfers[i].cs_change = 1;
xfers[i].len = 2;
xfers[i].delay_usecs = 20;
xfers[i].tx_buf = st->tx + 2 * i;
if (i < 1) /* SUPPLY_OUT: 0x02, AUX_ADC: 0x08 */
st->tx[2 * i] = ADIS16203_READ_REG(ADIS16203_SUPPLY_OUT + 2 * i);
else
st->tx[2 * i] = ADIS16203_READ_REG(ADIS16203_SUPPLY_OUT + 2 * i + 6);
st->tx[2 * i + 1] = 0;
if (i >= 1)
xfers[i].rx_buf = rx + 2 * (i - 1);
spi_message_add_tail(&xfers[i], &msg);
}
ret = spi_sync(st->us, &msg);
if (ret)
dev_err(&st->us->dev, "problem when burst reading");
mutex_unlock(&st->buf_lock);
return ret;
}
开发者ID:ARMWorks,项目名称:FA_2451_Linux_Kernel,代码行数:42,代码来源:adis16203_ring.c
示例4: touch_spi_xfer
int touch_spi_xfer(struct spi_device *spi, struct touch_xfer_msg *xfer)
{
struct touch_xfer_data_t *tx = NULL;
struct touch_xfer_data_t *rx = NULL;
struct spi_transfer x[MAX_XFER_COUNT];
struct spi_message m;
int i = 0;
if (xfer->msg_count > MAX_XFER_COUNT) {
TOUCH_E("cout exceed\n");
return -1;
}
spi_message_init(&m);
memset(x, 0, sizeof(x));
for (i = 0; i < xfer->msg_count; i++) {
tx = &xfer->data[i].tx;
rx = &xfer->data[i].rx;
x[i].cs_change = 1;
x[i].bits_per_word = xfer->bits_per_word;
if (rx->size) {
x[i].tx_buf = tx->data;
x[i].rx_buf = rx->data;
x[i].len = rx->size;
} else {
x[i].tx_buf = tx->data;
x[i].rx_buf = NULL;
x[i].len = tx->size;
}
spi_message_add_tail(&x[i], &m);
}
return spi_sync(spi, &m);
}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:37,代码来源:touch_spi.c
示例5: epm_psoc_set_averaging
static int epm_psoc_set_averaging(struct epm_adc_drv *epm_adc,
struct epm_psoc_set_avg *psoc_set_avg)
{
struct spi_message m;
struct spi_transfer t;
char tx_buf[4], rx_buf[4];
int rc = 0;
spi_setup(epm_adc->epm_spi_client);
memset(&t, 0, sizeof t);
memset(tx_buf, 0, sizeof tx_buf);
memset(rx_buf, 0, sizeof tx_buf);
t.tx_buf = tx_buf;
t.rx_buf = rx_buf;
spi_message_init(&m);
spi_message_add_tail(&t, &m);
tx_buf[0] = psoc_set_avg->cmd;
tx_buf[1] = psoc_set_avg->avg_period;
t.len = sizeof(tx_buf);
t.bits_per_word = EPM_ADC_ADS_SPI_BITS_PER_WORD;
rc = spi_sync(epm_adc->epm_spi_client, &m);
if (rc)
return rc;
rc = spi_sync(epm_adc->epm_spi_client, &m);
if (rc)
return rc;
psoc_set_avg->cmd = rx_buf[0];
psoc_set_avg->return_code = rx_buf[1];
return rc;
}
开发者ID:robcore,项目名称:GT-I9505_MIUI_kernel,代码行数:37,代码来源:epm_adc.c
示例6: corgi_ssp_lcdtg_send
static int corgi_ssp_lcdtg_send(struct corgi_lcd *lcd, int adrs, uint8_t data)
{
struct spi_message msg;
struct spi_transfer xfer = {
.len = 1,
.cs_change = 1,
.tx_buf = lcd->buf,
};
lcd->buf[0] = ((adrs & 0x07) << 5) | (data & 0x1f);
spi_message_init(&msg);
spi_message_add_tail(&xfer, &msg);
return spi_sync(lcd->spi_dev, &msg);
}
/* Set Phase Adjust */
static void lcdtg_set_phadadj(struct corgi_lcd *lcd, int mode)
{
int adj;
switch (mode) {
case CORGI_LCD_MODE_VGA:
/* Setting for VGA */
adj = sharpsl_param.phadadj;
adj = (adj < 0) ? PHACTRL_PHASE_MANUAL :
PHACTRL_PHASE_MANUAL | ((adj & 0xf) << 1);
break;
case CORGI_LCD_MODE_QVGA:
default:
/* Setting for QVGA */
adj = (DEFAULT_PHAD_QVGA << 1) | PHACTRL_PHASE_MANUAL;
break;
}
corgi_ssp_lcdtg_send(lcd, PHACTRL_ADRS, adj);
}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:37,代码来源:corgi_lcd.c
示例7: bu21150_write_register
static int bu21150_write_register(u32 addr, u16 size, u8 *data)
{
struct bu21150_data *ts = spi_get_drvdata(g_client_bu21150);
struct spi_device *client = ts->client;
struct ser_req *req;
int ret;
u8 *input;
input = kzalloc(sizeof(u8)*(size)+SPI_HEADER_SIZE, GFP_KERNEL);
req = kzalloc(sizeof(*req), GFP_KERNEL);
/* set header */
input[0] = 0x02; /* write command */
input[1] = (addr & 0xFF00) >> 8; /* address hi */
input[2] = (addr & 0x00FF) >> 0; /* address lo */
/* set data */
memcpy(input+SPI_HEADER_SIZE, data, size);
swap_2byte(input+SPI_HEADER_SIZE, size);
/* write data */
spi_message_init(&req->msg);
req->xfer[0].tx_buf = input;
req->xfer[0].rx_buf = NULL;
req->xfer[0].len = size+SPI_HEADER_SIZE;
req->xfer[0].cs_change = 0;
req->xfer[0].bits_per_word = SPI_BITS_PER_WORD_WRITE;
spi_message_add_tail(&req->xfer[0], &req->msg);
ret = spi_sync(client, &req->msg);
if (ret)
pr_err("%s : spi_sync read data error:ret=[%d]", __func__, ret);
kfree(req);
kfree(input);
return ret;
}
开发者ID:silversderek,项目名称:msm8909_kernel_lenovo,代码行数:37,代码来源:bu21150.c
示例8: fc8050_spi_write_then_read
int fc8050_spi_write_then_read(struct spi_device *spi, fci_u8 *txbuf, fci_u16 tx_length, fci_u8 *rxbuf, fci_u16 rx_length)
{
fci_s32 res;
struct spi_message message;
struct spi_transfer x;
spi_message_init(&message);
memset(&x, 0, sizeof x);
spi_message_add_tail(&x, &message);
memcpy(tdata_buf, txbuf, tx_length);
x.tx_buf=tdata_buf;
x.rx_buf=rdata_buf;
x.len = tx_length + rx_length;
res = spi_sync(spi, &message);
memcpy(rxbuf, x.rx_buf + tx_length, rx_length);
return res;
}
开发者ID:VeryLettuce,项目名称:LG_F120K_Kernel,代码行数:24,代码来源:fc8050_spi.c
示例9: linux_spi_write
int linux_spi_write(uint8_t *b, uint32_t len)
{
int ret;
struct spi_message msg;
if (len > 0 && NULL != b) {
struct spi_transfer tr = {
.tx_buf = b,
.len = len,
.speed_hz = SPEED,
.delay_usecs = 0,
};
char *r_buffer = kzalloc(len, GFP_KERNEL);
if (!r_buffer)
return 0; /* TODO: it should be return -ENOMEM */
tr.rx_buf = r_buffer;
PRINT_D(BUS_DBG, "Request writing %d bytes\n", len);
spi_message_init(&msg);
spi_message_add_tail(&tr, &msg);
ret = spi_sync(wilc_spi_dev, &msg);
if (ret < 0)
PRINT_ER("SPI transaction failed\n");
kfree(r_buffer);
} else {
PRINT_ER("can't write data due to NULL buffer or zero length\n");
ret = -1;
}
(ret < 0) ? (ret = 0) : (ret = 1);
return ret;
}
开发者ID:faijurrahman,项目名称:driver,代码行数:36,代码来源:linux_wlan_spi.c
示例10: __nci_spi_send
static int __nci_spi_send(struct nci_spi *nspi, struct sk_buff *skb,
int cs_change)
{
struct spi_message m;
struct spi_transfer t;
memset(&t, 0, sizeof(struct spi_transfer));
/* a NULL skb means we just want the SPI chip select line to raise */
if (skb) {
t.tx_buf = skb->data;
t.len = skb->len;
} else {
/* still set tx_buf non NULL to make the driver happy */
t.tx_buf = &t;
t.len = 0;
}
t.cs_change = cs_change;
t.delay_usecs = nspi->xfer_udelay;
spi_message_init(&m);
spi_message_add_tail(&t, &m);
return spi_sync(nspi->spi, &m);
}
开发者ID:AnadoluPanteri,项目名称:kernel-plus-harmattan,代码行数:24,代码来源:spi.c
示例11: ili922x_read_status
/**
* ili922x_read_status - read status register from display
* @spi: spi device
* @rs: output value
*/
static int ili922x_read_status(struct spi_device *spi, u16 *rs)
{
struct spi_message msg;
struct spi_transfer xfer;
unsigned char tbuf[CMD_BUFSIZE];
unsigned char rbuf[CMD_BUFSIZE];
int ret, i;
memset(&xfer, 0, sizeof(struct spi_transfer));
spi_message_init(&msg);
xfer.tx_buf = tbuf;
xfer.rx_buf = rbuf;
xfer.cs_change = 1;
CHECK_FREQ_REG(spi, &xfer);
tbuf[0] = set_tx_byte(START_BYTE(ili922x_id, START_RS_INDEX,
START_RW_READ));
/*
* we need 4-byte xfer here due to invalid dummy byte
* received after start byte
*/
for (i = 1; i < 4; i++)
tbuf[i] = set_tx_byte(0); /* dummy */
xfer.bits_per_word = 8;
xfer.len = 4;
spi_message_add_tail(&xfer, &msg);
ret = spi_sync(spi, &msg);
if (ret < 0) {
dev_dbg(&spi->dev, "Error sending SPI message 0x%x", ret);
return ret;
}
*rs = (rbuf[2] << 8) + rbuf[3];
return 0;
}
开发者ID:AD5GB,项目名称:kernel_n5_3.10-experimental,代码行数:41,代码来源:ili922x.c
示例12: kxr94_spi_write
int kxr94_spi_write( struct spi_device *spi_dev, unsigned char addr, unsigned char data )
{
unsigned char tx_buf[2]={addr, data};
struct spi_message msg;
struct spi_transfer transfer;
int retval;
/* Prepare the data. */
memset( &msg, 0, sizeof( msg ) );
memset( &transfer, 0, sizeof( transfer ) );
spi_message_init( &msg );
/* Prepare the address cycle. */
transfer.tx_buf=tx_buf;
transfer.len=sizeof( tx_buf );
transfer.delay_usecs=80;
spi_message_add_tail( &transfer, &msg );
/* Finalize and transmit. */
msg.spi=spi_dev;
msg.is_dma_mapped=0;
retval=spi_sync( spi_dev, &msg );
return retval;
}
开发者ID:kzlin129,项目名称:tt-gpl,代码行数:24,代码来源:kxr94_adc.c
示例13: max6902_get_reg
static int max6902_get_reg(struct device *dev, unsigned char address,
unsigned char *data)
{
struct spi_device *spi = to_spi_device(dev);
struct max6902 *chip = dev_get_drvdata(dev);
struct spi_message message;
struct spi_transfer xfer;
int status;
if (!data)
return -EINVAL;
/* Build our spi message */
spi_message_init(&message);
memset(&xfer, 0, sizeof(xfer));
xfer.len = 2;
/* Can tx_buf and rx_buf be equal? The doc in spi.h is not sure... */
xfer.tx_buf = chip->tx_buf;
xfer.rx_buf = chip->rx_buf;
/* Set MSB to indicate read */
chip->tx_buf[0] = address | 0x80;
spi_message_add_tail(&xfer, &message);
/* do the i/o */
status = spi_sync(spi, &message);
if (status == 0)
status = message.status;
else
return status;
*data = chip->rx_buf[1];
return status;
}
开发者ID:xf739645524,项目名称:kernel-rhel5,代码行数:36,代码来源:rtc-max6902.c
示例14: ab4500_read
int ab4500_read(struct ab4500 *ab4500, unsigned char block,
unsigned long addr)
{
struct spi_transfer xfer;
struct spi_message msg;
unsigned long spi_data =
1 << 23 | block << 18 | addr << 10;
mutex_lock(&ab4500->lock);
ab4500->tx_buf[0] = spi_data;
ab4500->rx_buf[0] = 0;
xfer.tx_buf = ab4500->tx_buf;
xfer.rx_buf = ab4500->rx_buf;
xfer.len = sizeof(unsigned long);
spi_message_init(&msg);
spi_message_add_tail(&xfer, &msg);
spi_sync(ab4500->spi, &msg);
mutex_unlock(&ab4500->lock);
return ab4500->rx_buf[0];
}
开发者ID:A2109devs,项目名称:lenovo_a2109a_kernel,代码行数:24,代码来源:ab4500-core.c
示例15: max3110_write_then_read
static int max3110_write_then_read(struct uart_max3110 *max,
const void *txbuf, void *rxbuf, unsigned len, int always_fast)
{
struct spi_device *spi = max->spi;
struct spi_message message;
struct spi_transfer x;
int ret;
spi_message_init(&message);
memset(&x, 0, sizeof x);
x.len = len;
x.tx_buf = txbuf;
x.rx_buf = rxbuf;
spi_message_add_tail(&x, &message);
if (always_fast)
x.speed_hz = spi->max_speed_hz;
else if (max->baud)
x.speed_hz = max->baud;
/* Do the i/o */
ret = spi_sync(spi, &message);
return ret;
}
开发者ID:macbury,项目名称:linux-2.6,代码行数:24,代码来源:mrst_max3110.c
示例16: mc13783_reg_read
int mc13783_reg_read(struct mc13783 *mc13783, unsigned int offset, u32 *val)
{
struct spi_transfer t;
struct spi_message m;
int ret;
BUG_ON(!mutex_is_locked(&mc13783->lock));
if (offset > MC13783_NUMREGS)
return -EINVAL;
*val = offset << MC13783_REGOFFSET_SHIFT;
memset(&t, 0, sizeof(t));
t.tx_buf = val;
t.rx_buf = val;
t.len = sizeof(u32);
spi_message_init(&m);
spi_message_add_tail(&t, &m);
ret = spi_sync(mc13783->spidev, &m);
/* error in message.status implies error return from spi_sync */
BUG_ON(!ret && m.status);
if (ret)
return ret;
*val &= 0xffffff;
dev_vdbg(&mc13783->spidev->dev, "[0x%02x] -> 0x%06x\n", offset, *val);
return 0;
}
开发者ID:Aaroneke,项目名称:galaxy-2636,代码行数:36,代码来源:mc13783-core.c
示例17: linux_spi_read
int linux_spi_read(unsigned char*rb, unsigned long rlen){
int ret;
if(rlen > 0){
struct spi_message msg;
struct spi_transfer tr = {
// .tx_buf = t_buffer,
.rx_buf = rb,
.len = rlen,
.speed_hz = SPEED,
.delay_usecs = 0,
};
char *t_buffer = (char*) kzalloc(rlen, GFP_KERNEL);
if(! t_buffer){
PRINT_ER("Failed to allocate memory for t_buffer\n");
}
tr.tx_buf = t_buffer;
spi_message_init(&msg);
spi_message_add_tail(&tr,&msg);
ret = spi_sync(atwilc_spi_dev,&msg);
if(ret < 0){
PRINT_ER("SPI transaction failed\n");
}
kfree(t_buffer);
}else{
PRINT_ER("can't read data with the following length: %ld\n",rlen);
ret = -1;
}
/* change return value to match ATWILC interface */
(ret<0)? (ret = 0):(ret = 1);
return ret;
}
开发者ID:globalgang,项目名称:driver,代码行数:36,代码来源:linux_wlan_spi.c
示例18: spi_rw
static int spi_rw(struct spi_device *spi, void * buf, size_t len)
{
int ret;
struct spi_transfer t = {
.tx_buf = (const void *)buf,
.rx_buf = buf,
.len = len,
.cs_change = 0,
.delay_usecs = 0,
};
struct spi_message m;
spi_message_init(&m);
spi_message_add_tail(&t, &m);
if ((ret = spi_sync(spi, &m)))
return ret;
return 0;
}
#define MXC_PMIC_REG_NUM(reg) (((reg) & 0x3f) << 25)
#define MXC_PMIC_WRITE (1 << 31)
static int mc13892_spi_reg_read(struct mc13892 *mc13892, enum mc13892_reg reg, u32 *val)
{
uint32_t buf;
buf = MXC_PMIC_REG_NUM(reg);
spi_rw(mc13892->spi, &buf, 4);
*val = buf;
return 0;
}
开发者ID:cpdesign,项目名称:barebox,代码行数:36,代码来源:mc13892.c
示例19: wl12xx_spi_raw_read
static int __must_check wl12xx_spi_raw_read(struct device *child, int addr,
void *buf, size_t len, bool fixed)
{
struct wl12xx_spi_glue *glue = dev_get_drvdata(child->parent);
struct wl1271 *wl = dev_get_drvdata(child);
struct spi_transfer t[2];
struct spi_message m;
u32 *busy_buf;
u32 *cmd;
u32 chunk_len;
while (len > 0) {
chunk_len = min_t(size_t, WSPI_MAX_CHUNK_SIZE, len);
cmd = &wl->buffer_cmd;
busy_buf = wl->buffer_busyword;
*cmd = 0;
*cmd |= WSPI_CMD_READ;
*cmd |= (chunk_len << WSPI_CMD_BYTE_LENGTH_OFFSET) &
WSPI_CMD_BYTE_LENGTH;
*cmd |= addr & WSPI_CMD_BYTE_ADDR;
if (fixed)
*cmd |= WSPI_CMD_FIXED;
spi_message_init(&m);
memset(t, 0, sizeof(t));
t[0].tx_buf = cmd;
t[0].len = 4;
t[0].cs_change = true;
spi_message_add_tail(&t[0], &m);
/* Busy and non busy words read */
t[1].rx_buf = busy_buf;
t[1].len = WL1271_BUSY_WORD_LEN;
t[1].cs_change = true;
spi_message_add_tail(&t[1], &m);
spi_sync(to_spi_device(glue->dev), &m);
if (!(busy_buf[WL1271_BUSY_WORD_CNT - 1] & 0x1) &&
wl12xx_spi_read_busy(child)) {
memset(buf, 0, chunk_len);
return 0;
}
spi_message_init(&m);
memset(t, 0, sizeof(t));
t[0].rx_buf = buf;
t[0].len = chunk_len;
t[0].cs_change = true;
spi_message_add_tail(&t[0], &m);
spi_sync(to_spi_device(glue->dev), &m);
if (!fixed)
addr += chunk_len;
buf += chunk_len;
len -= chunk_len;
}
return 0;
}
开发者ID:AkyZero,项目名称:wrapfs-latest,代码行数:66,代码来源:spi.c
示例20: ak4182_read12_ser
static int ak4182_read12_ser(struct device *dev, unsigned command)
{
struct spi_device *spi = to_spi_device(dev);
struct ak4182 *ts = dev_get_drvdata(dev);
struct ser_req *req = kzalloc(sizeof *req, GFP_KERNEL);
int status;
int sample;
int use_internal;
if (!req)
return -ENOMEM;
spi_message_init(&req->msg);
/* FIXME boards with ak4182 might use external vref instead ... */
use_internal = (ts->model == 4182);
/* maybe turn on internal vREF, and let it settle */
if (use_internal) {
req->ref_on = REF_ON;
req->xfer[0].tx_buf = &req->ref_on;
req->xfer[0].len = 1;
spi_message_add_tail(&req->xfer[0], &req->msg);
req->xfer[1].rx_buf = &req->scratch;
req->xfer[1].len = 2;
/* for 1uF, settle for 800 usec; no cap, 100 usec. */
req->xfer[1].delay_usecs = ts->vref_delay_usecs;
spi_message_add_tail(&req->xfer[1], &req->msg);
}
/* take sample */
req->command = (u8) command;
req->xfer[2].tx_buf = &req->command;
req->xfer[2].len = 1;
spi_message_add_tail(&req->xfer[2], &req->msg);
req->xfer[3].rx_buf = &req->sample;
req->xfer[3].len = 2;
spi_message_add_tail(&req->xfer[3], &req->msg);
/* REVISIT: take a few more samples, and compare ... */
/* converter in low power mode & enable PENIRQ */
req->ref_off = PWRDOWN;
req->xfer[4].tx_buf = &req->ref_off;
req->xfer[4].len = 1;
spi_message_add_tail(&req->xfer[4], &req->msg);
req->xfer[5].rx_buf = &req->scratch;
req->xfer[5].len = 2;
CS_CHANGE(req->xfer[5]);
spi_message_add_tail(&req->xfer[5], &req->msg);
ts->irq_disabled = 1;
disable_irq(spi->irq);
status = spi_sync(spi, &req->msg);
ts->irq_disabled = 0;
enable_irq(spi->irq);
if (req->msg.status)
status = req->msg.status;
/* on-wire is a must-ignore bit, a BE12 value, then padding */
sample = be16_to_cpu(req->sample);
sample = sample >> 3;
sample &= 0x0fff;
kfree(req);
return status ? status : sample;
}
开发者ID:acassis,项目名称:emlinux-ssd1935,代码行数:72,代码来源:ak4182.c
注:本文中的spi_message_init函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论