// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

composite gt92xx_touch;

using fuchsia.gpio;
using fuchsia.hardware.gpio;
using fuchsia.hardware.i2c;
using fuchsia.goodix.platform;

primary node "i2c" {
  fuchsia.hardware.i2c.Service == fuchsia.hardware.i2c.Service.ZirconTransport;
  fuchsia.BIND_I2C_ADDRESS == fuchsia.goodix.platform.BIND_I2C_ADDRESS.TOUCH;
}

node "gpio-int" {
  fuchsia.hardware.gpio.Service == fuchsia.hardware.gpio.Service.ZirconTransport;
  fuchsia.gpio.FUNCTION == fuchsia.gpio.FUNCTION.TOUCH_INTERRUPT;
}

node "gpio-reset" {
  fuchsia.hardware.gpio.Service == fuchsia.hardware.gpio.Service.ZirconTransport;
  fuchsia.gpio.FUNCTION == fuchsia.gpio.FUNCTION.TOUCH_RESET;
}