我真的无法解决这个问题。
错误:初始化元素不是常量
错误:(接近初始化 tca6507_leds1.leds.num_leds)
我认为问题与struct led_info *leds
inside有关led_platform_data
。由于它是一个指针,这在某种程度上不是 const 吗?我特别困惑,因为led_platform_data
并且led_info
是 linux 内核的一部分。tca6507_platform_data
也是内核源代码中包含的驱动程序的一部分。
这是我的初始化:
static struct led_info tca6507_led_infos[] = {
{
.name = "left_blue",
.default_trigger = "heartbeat",
},
};
static struct led_platform_data tca6507_leds2 = {
.leds = tca6507_led_infos,
};
struct tca6507_platform_data tca6507_leds1 = {
.leds = tca6507_leds1
};
所有结构都在我没有编写的头文件中定义。
struct led_info {
const char *name;
const char *default_trigger;
int flags;
};
struct led_platform_data {
int num_leds;
struct led_info *leds;
};
struct tca6507_platform_data {
struct led_platform_data leds;
#ifdef CONFIG_GPIOLIB
int gpio_base;
void (*setup)(unsigned gpio_base, unsigned ngpio);
#endif
};