|
62 | 62 | #define NV_AON_HTE_SLICE2_IRQ_GPIO_25 25 |
63 | 63 | #define NV_AON_HTE_SLICE2_IRQ_GPIO_26 26 |
64 | 64 | #define NV_AON_HTE_SLICE2_IRQ_GPIO_27 27 |
| 65 | +#define NV_AON_HTE_SLICE2_IRQ_GPIO_28 28 |
| 66 | +#define NV_AON_HTE_SLICE2_IRQ_GPIO_29 29 |
| 67 | +#define NV_AON_HTE_SLICE2_IRQ_GPIO_30 30 |
| 68 | +#define NV_AON_HTE_SLICE2_IRQ_GPIO_31 31 |
65 | 69 |
|
66 | 70 | #define HTE_TECTRL 0x0 |
67 | 71 | #define HTE_TETSCH 0x4 |
@@ -220,14 +224,115 @@ static const struct tegra_hte_line_mapped tegra194_aon_gpio_sec_map[] = { |
220 | 224 | [39] = {NV_AON_SLICE_INVALID, 0}, |
221 | 225 | }; |
222 | 226 |
|
223 | | -static const struct tegra_hte_data aon_hte = { |
| 227 | +static const struct tegra_hte_line_mapped tegra234_aon_gpio_map[] = { |
| 228 | + /* gpio, slice, bit_index */ |
| 229 | + /* AA port */ |
| 230 | + [0] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_11}, |
| 231 | + [1] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_10}, |
| 232 | + [2] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_9}, |
| 233 | + [3] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_8}, |
| 234 | + [4] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_7}, |
| 235 | + [5] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_6}, |
| 236 | + [6] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_5}, |
| 237 | + [7] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_4}, |
| 238 | + /* BB port */ |
| 239 | + [8] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_3}, |
| 240 | + [9] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_2}, |
| 241 | + [10] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_1}, |
| 242 | + [11] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_0}, |
| 243 | + /* CC port */ |
| 244 | + [12] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_22}, |
| 245 | + [13] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_21}, |
| 246 | + [14] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_20}, |
| 247 | + [15] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_19}, |
| 248 | + [16] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_18}, |
| 249 | + [17] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_17}, |
| 250 | + [18] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_16}, |
| 251 | + [19] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_15}, |
| 252 | + /* DD port */ |
| 253 | + [20] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_14}, |
| 254 | + [21] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_13}, |
| 255 | + [22] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_12}, |
| 256 | + /* EE port */ |
| 257 | + [23] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_31}, |
| 258 | + [24] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_30}, |
| 259 | + [25] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_29}, |
| 260 | + [26] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_28}, |
| 261 | + [27] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_27}, |
| 262 | + [28] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_26}, |
| 263 | + [29] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_25}, |
| 264 | + [30] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_24}, |
| 265 | + /* GG port */ |
| 266 | + [31] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_23}, |
| 267 | +}; |
| 268 | + |
| 269 | +static const struct tegra_hte_line_mapped tegra234_aon_gpio_sec_map[] = { |
| 270 | + /* gpio, slice, bit_index */ |
| 271 | + /* AA port */ |
| 272 | + [0] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_11}, |
| 273 | + [1] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_10}, |
| 274 | + [2] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_9}, |
| 275 | + [3] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_8}, |
| 276 | + [4] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_7}, |
| 277 | + [5] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_6}, |
| 278 | + [6] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_5}, |
| 279 | + [7] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_4}, |
| 280 | + /* BB port */ |
| 281 | + [8] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_3}, |
| 282 | + [9] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_2}, |
| 283 | + [10] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_1}, |
| 284 | + [11] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_0}, |
| 285 | + [12] = {NV_AON_SLICE_INVALID, 0}, |
| 286 | + [13] = {NV_AON_SLICE_INVALID, 0}, |
| 287 | + [14] = {NV_AON_SLICE_INVALID, 0}, |
| 288 | + [15] = {NV_AON_SLICE_INVALID, 0}, |
| 289 | + /* CC port */ |
| 290 | + [16] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_22}, |
| 291 | + [17] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_21}, |
| 292 | + [18] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_20}, |
| 293 | + [19] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_19}, |
| 294 | + [20] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_18}, |
| 295 | + [21] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_17}, |
| 296 | + [22] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_16}, |
| 297 | + [23] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_15}, |
| 298 | + /* DD port */ |
| 299 | + [24] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_14}, |
| 300 | + [25] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_13}, |
| 301 | + [26] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_12}, |
| 302 | + [27] = {NV_AON_SLICE_INVALID, 0}, |
| 303 | + [28] = {NV_AON_SLICE_INVALID, 0}, |
| 304 | + [29] = {NV_AON_SLICE_INVALID, 0}, |
| 305 | + [30] = {NV_AON_SLICE_INVALID, 0}, |
| 306 | + [31] = {NV_AON_SLICE_INVALID, 0}, |
| 307 | + /* EE port */ |
| 308 | + [32] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_31}, |
| 309 | + [33] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_30}, |
| 310 | + [34] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_29}, |
| 311 | + [35] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_28}, |
| 312 | + [36] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_27}, |
| 313 | + [37] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_26}, |
| 314 | + [38] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_25}, |
| 315 | + [39] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_24}, |
| 316 | + /* GG port */ |
| 317 | + [40] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_23}, |
| 318 | +}; |
| 319 | + |
| 320 | +static const struct tegra_hte_data t194_aon_hte = { |
224 | 321 | .map_sz = ARRAY_SIZE(tegra194_aon_gpio_map), |
225 | 322 | .map = tegra194_aon_gpio_map, |
226 | 323 | .sec_map_sz = ARRAY_SIZE(tegra194_aon_gpio_sec_map), |
227 | 324 | .sec_map = tegra194_aon_gpio_sec_map, |
228 | 325 | .type = HTE_TEGRA_TYPE_GPIO, |
229 | 326 | }; |
230 | 327 |
|
| 328 | +static const struct tegra_hte_data t234_aon_hte = { |
| 329 | + .map_sz = ARRAY_SIZE(tegra234_aon_gpio_map), |
| 330 | + .map = tegra234_aon_gpio_map, |
| 331 | + .sec_map_sz = ARRAY_SIZE(tegra234_aon_gpio_sec_map), |
| 332 | + .sec_map = tegra234_aon_gpio_sec_map, |
| 333 | + .type = HTE_TEGRA_TYPE_GPIO, |
| 334 | +}; |
| 335 | + |
231 | 336 | static const struct tegra_hte_data lic_hte = { |
232 | 337 | .map_sz = 0, |
233 | 338 | .map = NULL, |
@@ -535,7 +640,9 @@ static bool tegra_hte_match_from_linedata(const struct hte_chip *chip, |
535 | 640 |
|
536 | 641 | static const struct of_device_id tegra_hte_of_match[] = { |
537 | 642 | { .compatible = "nvidia,tegra194-gte-lic", .data = &lic_hte}, |
538 | | - { .compatible = "nvidia,tegra194-gte-aon", .data = &aon_hte}, |
| 643 | + { .compatible = "nvidia,tegra194-gte-aon", .data = &t194_aon_hte}, |
| 644 | + { .compatible = "nvidia,tegra234-gte-lic", .data = &lic_hte}, |
| 645 | + { .compatible = "nvidia,tegra234-gte-aon", .data = &t234_aon_hte}, |
539 | 646 | { } |
540 | 647 | }; |
541 | 648 | MODULE_DEVICE_TABLE(of, tegra_hte_of_match); |
@@ -635,8 +742,17 @@ static int tegra_hte_probe(struct platform_device *pdev) |
635 | 742 |
|
636 | 743 | gc->match_from_linedata = tegra_hte_match_from_linedata; |
637 | 744 |
|
638 | | - hte_dev->c = gpiochip_find("tegra194-gpio-aon", |
639 | | - tegra_get_gpiochip_from_name); |
| 745 | + if (of_device_is_compatible(dev->of_node, |
| 746 | + "nvidia,tegra194-gte-aon")) |
| 747 | + hte_dev->c = gpiochip_find("tegra194-gpio-aon", |
| 748 | + tegra_get_gpiochip_from_name); |
| 749 | + else if (of_device_is_compatible(dev->of_node, |
| 750 | + "nvidia,tegra234-gte-aon")) |
| 751 | + hte_dev->c = gpiochip_find("tegra234-gpio-aon", |
| 752 | + tegra_get_gpiochip_from_name); |
| 753 | + else |
| 754 | + return -ENODEV; |
| 755 | + |
640 | 756 | if (!hte_dev->c) |
641 | 757 | return dev_err_probe(dev, -EPROBE_DEFER, |
642 | 758 | "wait for gpio controller\n"); |
|
0 commit comments