USC has hired Jeremy Bates as its new assistant head coach/quarterbacks on Monday to fill the vacancy left by Steve Sarkisian, who was recently named head coach at the University of Washington.
Bates was the Denver Broncos' offensive coordinator under Mike Shanahan and was being pursued by other NFL teams for a similar position.
Carroll reached out to Bates and Jets offensive coordinator Brian Schottenheimer for the job replacing Sarkisian.
Sources corrected the salary figure of $1 million, which was originally reported. Instead, Bates will be paid less than $300,000 by USC. The Broncos are obligated to pay the balance of what he is owed by the NFL team.
Bates signed a three-year contract with USC. He signed a three-year extension with Denver before Mike Shanahan was fired as head coach.
Bates replaces Carl Smith, who was originally named USC's quarterbacks coach and assistant head coach of the offense on Jan. 6 but is now expected to be hired by an NFL team.
Bates will be responsible for play calling during the game. John Morton, who was previously promoted to offensive coordinator, will have equal input into game planning with Bates.
Carroll was in Colorado on Monday to make his final pitch to Bates, who then agreed to the deal.
Bates was scheduled to interview Tuesday in Oakland for an unspecified position but the trip was canceled.
Carroll and Bates were unavailable for comment.
Bates began his coaching career with Tampa Bay, serving as the offensive quality control coach from 2002 to 2003. He was named their assistant quarterback coach in 2004 and became the New York Jets' quarterbacks coach in 2005.
Bates was a quarterback for Tennessee in 1995 and Rice in 1997 and 1999. He also played baseball at Rice.
His father Jim is a longtime NFL and college assistant coach who served several years as a defensive coordinator.
Chris Mortensen is a senior NFL analyst for ESPN. Information from The Associated Press was used in this report.