# Copyright (c) 2011 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     "Replay critical udev events"
author          "chromium-os-dev@chromium.org"

# This job is used to replay events of devices critical to the bring-up of
# the system. Since device nodes always exist, this is only needed if
# special permissions are required for nodes or special processing that
# would otherwise take place later.
#
# Subsystems listed here must be excluded from udev-trigger.conf to avoid
# replaying twice.

# Rationale:
# input - required to switch synaptics into raw mode, and also so X
#         can initialize its input devices on startup rather than later
# misc - required if synaptics is already in raw mode
# graphics & drm - required to set permissions for accelerated graphics
# nvhost & tegra_dc_ext - on nVidia systems, X needs this
# tty - opened by powerd (running as user in "tty" group) at startup
# mem - kmsg opened by syslog service
# i2c-dev - Ensure /dev/i2c-* permissions are set for non-root firmware updaters
# hidraw - Ensure /dev/hidraw* permissions are set for non-root firmware
#          updaters

# N.B.  The 'boot-services' start on condition assumes this dependency on
# 'udev-boot'/'udev'. Don't change this line without accounting for the impact.
start on started udev-boot
task

script
  udevadm trigger --action=add --settle \
    --subsystem-match="input" --subsystem-match="misc" \
    --subsystem-match="graphics" \
    --subsystem-match="drm" --subsystem-match="drm_dp_aux_dev" \
    --subsystem-match="nvhost" --subsystem-match="tegra_dc_ext" \
    --subsystem-match="tty" --subsystem-match="mem" \
    --subsystem-match="i2c-dev" --subsystem-match="hidraw"
  # Trigger graphics pci devices that may load as modules
  udevadm trigger --settle --subsystem-match=pci --attr-match=class=0x030000
end script
