Интеграция драйвера NXP PN7150 и информации об устройстве в ядро ​​Android x86, куда должна идти информация об устройстве? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь интегрировать драйверы NXP 7150 в Android P для платформы на базе x86.

Вот рекомендации по интеграции: https://www.nxp.com/docs/en/application-note/AN11690.pdf

Поскольку x86 не поддерживает дерево устройств на данный момент, мне нужно использовать данные платформы. Но я не уверен, в каком файле я должен поместить эту информацию:

static struct pn544_i2c_platform_data nfc_pdata = {
.irq_gpio = GPIO_TO_PIN(1,29),
.ven_gpio = GPIO_TO_PIN(0,30),
.firm_gpio = GPIO_UNUSED
.clkreq_gpio = GPIO_UNUSED
};
static struct i2c_board_info __initdata nfc_board_info[] = {
{
I2C_BOARD_INFO("pn547", 0x28),
.platform_data = &nfc_pdata,
},
};

У меня минимальные знания по разработке драйверов, поэтому я не могу понять. Я построил драйвер как встроенный модуль. Я понимаю, что мне нужно подключить ключ PN7150 и затем поместить информацию об устройстве где-нибудь в коде ядра, который может вызвать проверку драйвера при загрузке. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 января 2019

Как я уже сказал в своем комментарии;но если у вас нет какого-либо файла платы (который, как я предполагаю, отсутствует в вашем X86 коде Arch), вы можете просто создать новый модуль ядра.Внутри функции инициализации модуля ядра вы можете зарегистрировать I2C информацию об устройстве:

static int __init dummy_nfc_init(void) {

i2c_register_board_info(1, nfc_board_info,
            ARRAY_SIZE(nfc_board_info));
}

module_init(dummy_nfc_init);

В примере при регистрации информации о плате 1 - это I2C номер шины.В вашем случае вам нужно изменить номер автобуса.Вы можете сделать этот фиктивный драйвер встроенным.Поэтому, когда ваш драйвер PN7150 .-name будет сопоставлен с I2C_BOARD_INFO name "pn547" драйвер probe, функция будет вызываться в то время как для другой функции обратного вызова иread/write адрес рабочего ведомого 0x28 и I2C номер шины должен совпадать.

...