Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'tegra-for-6.11-arm-core' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/arm

ARM: tegra: Core changes for v6.11-rc1

Uses software nodes to describe rfkill instead of using a GPIO lookup
table.

* tag 'tegra-for-6.11-arm-core' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
ARM: tegra: paz00: Use software nodes to describe GPIOs for WiFi rfkill

Link: https://lore.kernel.org/r/20240628210818.3627404-2-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+32 -18
+32 -18
arch/arm/mach-tegra/board-paz00.c
··· 8 8 * Copyright (C) 2010 Google, Inc. 9 9 */ 10 10 11 - #include <linux/property.h> 11 + #include <linux/err.h> 12 12 #include <linux/gpio/machine.h> 13 + #include <linux/gpio/property.h> 13 14 #include <linux/platform_device.h> 15 + #include <linux/printk.h> 16 + #include <linux/property.h> 14 17 15 18 #include "board.h" 16 19 17 - static struct property_entry wifi_rfkill_prop[] __initdata = { 20 + static const struct software_node tegra_gpiochip_node = { 21 + .name = "tegra-gpio", 22 + }; 23 + 24 + static const struct property_entry wifi_rfkill_prop[] __initconst = { 18 25 PROPERTY_ENTRY_STRING("name", "wifi_rfkill"), 19 26 PROPERTY_ENTRY_STRING("type", "wlan"), 20 - { }, 27 + PROPERTY_ENTRY_GPIO("reset-gpios", 28 + &tegra_gpiochip_node, 25, GPIO_ACTIVE_HIGH), 29 + PROPERTY_ENTRY_GPIO("shutdown-gpios", 30 + &tegra_gpiochip_node, 85, GPIO_ACTIVE_HIGH), 31 + { } 21 32 }; 22 33 23 - static struct platform_device wifi_rfkill_device = { 24 - .name = "rfkill_gpio", 25 - .id = -1, 26 - }; 27 - 28 - static struct gpiod_lookup_table wifi_gpio_lookup = { 29 - .dev_id = "rfkill_gpio", 30 - .table = { 31 - GPIO_LOOKUP("tegra-gpio", 25, "reset", 0), 32 - GPIO_LOOKUP("tegra-gpio", 85, "shutdown", 0), 33 - { }, 34 - }, 34 + static const struct platform_device_info wifi_rfkill_info __initconst = { 35 + .name = "rfkill_gpio", 36 + .id = PLATFORM_DEVID_NONE, 37 + .properties = wifi_rfkill_prop, 35 38 }; 36 39 37 40 void __init tegra_paz00_wifikill_init(void) 38 41 { 39 - device_create_managed_software_node(&wifi_rfkill_device.dev, wifi_rfkill_prop, NULL); 40 - gpiod_add_lookup_table(&wifi_gpio_lookup); 41 - platform_device_register(&wifi_rfkill_device); 42 + struct platform_device *pd; 43 + int err; 44 + 45 + err = software_node_register(&tegra_gpiochip_node); 46 + if (err) { 47 + pr_err("failed to register %s node: %d\n", 48 + tegra_gpiochip_node.name, err); 49 + return; 50 + } 51 + 52 + pd = platform_device_register_full(&wifi_rfkill_info); 53 + err = PTR_ERR_OR_ZERO(pd); 54 + if (err) 55 + pr_err("failed to register WiFi rfkill device: %d\n", err); 42 56 }