往MA35D1内核5.10.140版本打入RT_PREEMPT实时补丁编译内核报错,出现下面错误:
drivers/spi/spi-ma35d1-qspi.c: In function ‘nuvoton_spi_probe’:
./include/linux/spinlock_types_rt.h:32:2: error: expected expression before ‘{’ token
32 | { .lock = __RT_SPIN_INITIALIZER(name.lock), \
| ^
drivers/spi/spi-ma35d1-qspi.c:973:42: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
973 | nuvoton->slave_txdone.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_txdone.lock);
| ^~~~~~~~~~~~~~~~~~~~
./include/linux/spinlock_types_rt.h:32:2: error: expected expression before ‘{’ token
32 | { .lock = __RT_SPIN_INITIALIZER(name.lock), \
| ^
drivers/spi/spi-ma35d1-qspi.c:977:42: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
977 | nuvoton->slave_rxdone.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_rxdone.lock);
2023/08/04 14:23
参考文档里的下面方式修改即可:
修改./driver/spi/spi-ma35d1-spi.c line 905
修改./driver/spi/spi-ma35d1-spi.c line 969
原代碼為
nuvoton->slave_done.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_done.lock);
修改為
#ifndef CONFIG_PREEMPT_RT
nuvoton->slave_done.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_done.lock);
#else
nuvoton->slave_done.lock = (spinlock_t)__SPIN_LOCK_UNLOCKED(nuvoton->slave_done);
#endif