Auf meiner x86_64-Platine kommt der i2c-Bus aus einem MFD-Gerät. Auf diesem i2c-Bus befinden sich Geräte. Ich kann diese Geräte mit dem i2cdetect-Programm erkennen.Hinzufügen von i2c-Client-Geräten auf x86_64
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- 4c -- -- --
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
brauche ich den Kernel diese Geräte automatisch zu erkennen, also habe ich versucht, das Schreiben i2c_board_info wie unten Code in gegeben, aber immer noch der Kern ist nicht in der Lage, diese Geräte automatisch zu erkennen.
#include <linux/init.h>
#include <linux/i2c.h>
#define BUS_NUMBER 0
static struct __init i2c_board_info tst_i2c0_board_info[] = {
{
I2C_BOARD_INFO("ltc2990", 0x4c),
},
{
I2C_BOARD_INFO("24c128", 0x57),
},
};
static int tst_i2c_board_setup(void)
{
int ret=-1;
ret = i2c_register_board_info(BUS_NUMBER, tst_i2c0_board_info, ARRAY_SIZE(tst_i2c0_board_info));
return ret;
}
device_initcall(tst_i2c_board_setup);
Irgendwelche Vorschläge, wie kann ich das lösen?
wird tst_i2c_board_setup() nach I2C-Bus 0-Registrierung aufgerufen – Ash
@Ash Ich habe für beide Szenarien testen, dh vor und nach Bus 0 Anmeldung aufrufen; indem Sie device_initcall in arch_initcall ändern. Es hilft nicht – rk1825
Sie müssen ACPI dafür verwenden. Ich würde dies mit Beispielen nach meinem Urlaub beantworten, für jetzt google für * meta-acpi * Projekt auf Github, um die ursprüngliche Idee zu bekommen. – 0andriy