如何调用`struct dev_archdata'函数?

时间:2015-05-28 15:31:45

标签: c embedded

我发现了很多关于此错误的问题(initializer element is not constant),但我不知道如何调整代码中的答案。

(我是C的新人)

我对此部分有错误:

#include <mach/i2c.h>
#include <mach/irqs-sun7i.h>
/*
 * /////////// from mach/i2c.h //////////
struct sun7i_i2c_platform_data {
    int          bus_num;
    unsigned int frequency;
};
*/

static struct    sun7i_i2c_platform_data    sun7i_i2c_platform_data = {
    .bus_num = 1,
    .frequency = 100*1000,
};

static struct mpu_platform_data gyro_platform_data = {
    .int_config  = 0x10,
    .level_shifter = 0,
    .orientation = {  -1,  0,  0,
               0,  1,  0,
               0,  0, -1 },
    .sec_slave_type = SECONDARY_SLAVE_TYPE_COMPASS,
    .sec_slave_id   = COMPASS_ID_AK8972,
    .secondary_i2c_addr = 0x0E
};

/*
 *  /////////// from mach/i2c.h //////////
 * 
 * struct i2c_board_info {
    char        type[I2C_NAME_SIZE];
    unsigned short  flags;
    unsigned short  addr;
    void        *platform_data;
    struct dev_archdata *archdata;
    struct device_node *of_node;
    int     irq;
};*/

static struct i2c_board_info __initdata sun7i_i2c_platform_device[] = {
    {
        I2C_BOARD_INFO("mpu6050", 0x68),
        .platform_data = &gyro_platform_data,
        .archdata = sun7i_i2c_platform_data,
    },
};
/*
// ORIGINAL //
static struct i2c_board_info __initdata single_chip_board_info[] = {
    {
        I2C_BOARD_INFO("mpu6050", 0x68),
        .irq = (IH_GPIO_BASE + MPUIRQ_GPIO),
        .platform_data = &gyro_platform_data,
    },
};
*/

static void __init sun7i_i2c_init(void)
{  
        i2c_register_board_info(2, sun7i_i2c_platform_device,
                       ARRAY_SIZE(sun7i_i2c_platform_device));
}

我的问题来自.archdata init:

c:160:17: error: initializer element is not constant

我试过

.archdata = &sun7i_i2c_platform_data,

但是在这种情况下,我有一个警告并忽略该行:

warning: initialization from incompatible pointer type [enabled by default]

那么,如何恰当地称呼我的功能呢? 感谢

0 个答案:

没有答案