# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description     "Trigger udev events"
author          "chromium-os-dev@chromium.org"

# We must run eventually even if the UI doesn't come up correctly,
# because network configuration depends on this job. Because
# system-services requires udev event processing to be completed before
# it emits started, this job is declared a task job and thus indirectly
# blocks system-services startup to complete.
start on starting failsafe
task

script
  # Some classes of devices are triggered by separate udev-trigger-*.conf
  # jobs
  # We exclude cros-ec-accel, it has been for sure triggered early.
  # We explicitly exclude it here to prevent resending calibration data.
  udevadm trigger --action=add \
    --subsystem-nomatch="input" --subsystem-nomatch="misc" \
    --subsystem-nomatch="graphics" \
    --subsystem-nomatch="drm" --subsystem-nomatch="drm_dp_aux_dev" \
    --subsystem-nomatch="nvhost" --subsystem-nomatch="tegra_dc_ext" \
    --subsystem-nomatch="mem" --subsystem-nomatch="tty" \
    --subsystem-nomatch="i2c-dev" --subsystem-nomatch="hidraw" \
    --attr-nomatch="name=cros-ec-accel*"
  exec udevadm settle
end script
