@@ -1577,6 +1577,236 @@ write_dsdt_hdas(struct pci_vdev *dev)
1577
1577
dsdt_line ("}" );
1578
1578
}
1579
1579
1580
+ static void
1581
+ write_dsdt_ipu_i2c (struct pci_vdev * dev )
1582
+ {
1583
+ printf ("write virt-%x:%x.%x in dsdt for ipu's i2c-bus @ 00:16.0\n" ,
1584
+ dev -> bus , dev -> slot , dev -> func );
1585
+
1586
+ /* physical I2C 0:16.0 */
1587
+ dsdt_line ("Device (I2C1)" );
1588
+ dsdt_line ("{" );
1589
+ dsdt_line (" Name (_ADR, 0x%04X%04X)" , dev -> slot , dev -> func );
1590
+ dsdt_line (" Name (_DDN, \"Intel(R) I2C Controller #1\")" );
1591
+ dsdt_line (" Name (_UID, One)" );
1592
+ dsdt_line (" Name (LINK, \"\\\\_SB.PCI0.I2C1\")" );
1593
+ dsdt_line (" Name (RBUF, ResourceTemplate ()" );
1594
+ dsdt_line (" {" );
1595
+ dsdt_line (" })" );
1596
+ dsdt_line (" Name (IC0S, 0x00061A80)" );
1597
+ dsdt_line (" Name (_DSD, Package (0x02)" );
1598
+ dsdt_line (" {" );
1599
+ dsdt_line (" ToUUID (\"daffd814-6eba-4d8c-8a91-bc9bbf4aa301\")"
1600
+ " ," );
1601
+ dsdt_line (" Package (0x01)" );
1602
+ dsdt_line (" {" );
1603
+ dsdt_line (" Package (0x02)" );
1604
+ dsdt_line (" {" );
1605
+ dsdt_line (" \"clock-frequency\", " );
1606
+ dsdt_line (" IC0S" );
1607
+ dsdt_line (" }" );
1608
+ dsdt_line (" }" );
1609
+ dsdt_line (" })" );
1610
+
1611
+ dsdt_line (" Method (FMCN, 0, Serialized)" );
1612
+ dsdt_line (" {" );
1613
+ dsdt_line (" Name (PKG, Package (0x03)" );
1614
+ dsdt_line (" {" );
1615
+ dsdt_line (" 0x64, " );
1616
+ dsdt_line (" 0xD6, " );
1617
+ dsdt_line (" 0x1C" );
1618
+ dsdt_line (" })" );
1619
+ dsdt_line (" Return (PKG)" );
1620
+ dsdt_line (" }" );
1621
+ dsdt_line ("" );
1622
+
1623
+ dsdt_line (" Method (FPCN, 0, Serialized)" );
1624
+ dsdt_line (" {" );
1625
+ dsdt_line (" Name (PKG, Package (0x03)" );
1626
+ dsdt_line (" {" );
1627
+ dsdt_line (" 0x26, " );
1628
+ dsdt_line (" 0x50, " );
1629
+ dsdt_line (" 0x0C" );
1630
+ dsdt_line (" })" );
1631
+ dsdt_line (" Return (PKG)" );
1632
+ dsdt_line (" }" );
1633
+ dsdt_line ("" );
1634
+
1635
+ dsdt_line (" Method (HSCN, 0, Serialized)" );
1636
+ dsdt_line (" {" );
1637
+ dsdt_line (" Name (PKG, Package (0x03)" );
1638
+ dsdt_line (" {" );
1639
+ dsdt_line (" 0x05, " );
1640
+ dsdt_line (" 0x18, " );
1641
+ dsdt_line (" 0x0C" );
1642
+ dsdt_line (" })" );
1643
+ dsdt_line (" Return (PKG)" );
1644
+ dsdt_line (" }" );
1645
+ dsdt_line ("" );
1646
+
1647
+ dsdt_line (" Method (SSCN, 0, Serialized)" );
1648
+ dsdt_line (" {" );
1649
+ dsdt_line (" Name (PKG, Package (0x03)" );
1650
+ dsdt_line (" {" );
1651
+ dsdt_line (" 0x0244, " );
1652
+ dsdt_line (" 0x02DA, " );
1653
+ dsdt_line (" 0x1C" );
1654
+ dsdt_line (" })" );
1655
+ dsdt_line (" Return (PKG)" );
1656
+ dsdt_line (" }" );
1657
+ dsdt_line ("" );
1658
+
1659
+ dsdt_line (" Method (_CRS, 0, NotSerialized)" );
1660
+ dsdt_line (" {" );
1661
+ dsdt_line (" Return (RBUF)" );
1662
+ dsdt_line (" }" );
1663
+ dsdt_line ("" );
1664
+
1665
+ /* CAM1 */
1666
+ dsdt_line (" Device (CAM1)" );
1667
+ dsdt_line (" {" );
1668
+ dsdt_line (" Name (_ADR, Zero) // _ADR: Address" );
1669
+ dsdt_line (" Name (_HID, \"ADV7481A\") // _HID: Hardware ID" );
1670
+ dsdt_line (" Name (_CID, \"ADV7481A\") // _CID: Compatible ID" );
1671
+ dsdt_line (" Name (_UID, One) // _UID: Unique ID" );
1672
+
1673
+ dsdt_line (" Method (_CRS, 0, Serialized)" );
1674
+ dsdt_line (" {" );
1675
+ dsdt_line (" Name (SBUF, ResourceTemplate ()" );
1676
+ dsdt_line (" {" );
1677
+ dsdt_line (" GpioIo (Exclusive, PullDefault, 0x0000, "
1678
+ "0x0000, IoRestrictionInputOnly," );
1679
+ dsdt_line (" \"\\\\_SB.GPO0\", 0x00, "
1680
+ "ResourceConsumer, ," );
1681
+ dsdt_line (" )" );
1682
+ dsdt_line (" { // Pin list" );
1683
+ dsdt_line (" 0x001E" );
1684
+ dsdt_line (" }" );
1685
+ dsdt_line (" I2cSerialBusV2 (0x0070, "
1686
+ "ControllerInitiated, 0x00061A80," );
1687
+ dsdt_line (" AddressingMode7Bit, "
1688
+ "\"\\\\_SB.PCI0.I2C1\"," );
1689
+ dsdt_line (" 0x00, ResourceConsumer, , Exclusive," );
1690
+ dsdt_line (" )" );
1691
+ dsdt_line (" })" );
1692
+ dsdt_line (" Return (SBUF)" );
1693
+ dsdt_line (" }" );
1694
+
1695
+ dsdt_line (" Method (_DSM, 4, NotSerialized)" );
1696
+ dsdt_line (" {" );
1697
+ dsdt_line (" If ((Arg0 == ToUUID ("
1698
+ "\"377ba76a-f390-4aff-ab38-9b1bf33a3015\")))" );
1699
+ dsdt_line (" {" );
1700
+ dsdt_line (" Return (\"ADV7481A\")" );
1701
+ dsdt_line (" }" );
1702
+ dsdt_line ("" );
1703
+ dsdt_line (" If ((Arg0 == ToUUID ("
1704
+ "\"ea3b7bd8-e09b-4239-ad6e-ed525f3f26ab\")))" );
1705
+ dsdt_line (" {" );
1706
+ dsdt_line (" Return (0x40)" );
1707
+ dsdt_line (" }" );
1708
+ dsdt_line ("" );
1709
+ dsdt_line (" If ((Arg0 == ToUUID ("
1710
+ "\"8dbe2651-70c1-4c6f-ac87-a37cb46e4af6\")))" );
1711
+ dsdt_line (" {" );
1712
+ dsdt_line (" Return (0xFF)" );
1713
+ dsdt_line (" }" );
1714
+ dsdt_line ("" );
1715
+ dsdt_line (" If ((Arg0 == ToUUID ("
1716
+ "\"26257549-9271-4ca4-bb43-c4899d5a4881\")))" );
1717
+ dsdt_line (" {" );
1718
+ dsdt_line (" If (Arg2 == One)" );
1719
+ dsdt_line (" {" );
1720
+ dsdt_line (" Return (0x02)" );
1721
+ dsdt_line (" }" );
1722
+ dsdt_line (" If (Arg2 == 0x02)" );
1723
+ dsdt_line (" {" );
1724
+ dsdt_line (" Return (0x02001000)" );
1725
+ dsdt_line (" }" );
1726
+ dsdt_line (" If (Arg2 == 0x03)" );
1727
+ dsdt_line (" {" );
1728
+ dsdt_line (" Return (0x02000E01)" );
1729
+ dsdt_line (" }" );
1730
+ dsdt_line (" }" );
1731
+ dsdt_line (" Return (Zero)" );
1732
+ dsdt_line (" }" );
1733
+ dsdt_line (" }" );
1734
+ dsdt_line ("" );
1735
+
1736
+ /* CAM2 */
1737
+ dsdt_line (" Device (CAM2)" );
1738
+ dsdt_line (" {" );
1739
+ dsdt_line (" Name (_ADR, Zero) // _ADR: Address" );
1740
+ dsdt_line (" Name (_HID, \"ADV7481B\") // _HID: Hardware ID" );
1741
+ dsdt_line (" Name (_CID, \"ADV7481B\") // _CID: Compatible ID" );
1742
+ dsdt_line (" Name (_UID, One) // _UID: Unique ID" );
1743
+
1744
+ dsdt_line (" Method (_CRS, 0, Serialized)" );
1745
+ dsdt_line (" {" );
1746
+ dsdt_line (" Name (SBUF, ResourceTemplate ()" );
1747
+ dsdt_line (" {" );
1748
+ dsdt_line (" GpioIo (Exclusive, PullDefault, 0x0000, "
1749
+ "0x0000, IoRestrictionInputOnly," );
1750
+ dsdt_line (" \"\\\\_SB.GPO0\", 0x00, "
1751
+ "ResourceConsumer, ," );
1752
+ dsdt_line (" )" );
1753
+ dsdt_line (" { // Pin list" );
1754
+ dsdt_line (" 0x001E" );
1755
+ dsdt_line (" }" );
1756
+ dsdt_line (" I2cSerialBusV2 (0x0071, "
1757
+ "ControllerInitiated, 0x00061A80," );
1758
+ dsdt_line (" AddressingMode7Bit, "
1759
+ "\"\\\\_SB.PCI0.I2C1\"," );
1760
+ dsdt_line (" 0x00, ResourceConsumer, , Exclusive," );
1761
+ dsdt_line (" )" );
1762
+ dsdt_line (" })" );
1763
+ dsdt_line (" Return (SBUF)" );
1764
+ dsdt_line (" }" );
1765
+
1766
+ dsdt_line (" Method (_DSM, 4, NotSerialized) " );
1767
+ dsdt_line (" {" );
1768
+ dsdt_line (" If ((Arg0 == ToUUID ("
1769
+ "\"377ba76a-f390-4aff-ab38-9b1bf33a3015\")))" );
1770
+ dsdt_line (" {" );
1771
+ dsdt_line (" Return (\"ADV7481B\")" );
1772
+ dsdt_line (" }" );
1773
+ dsdt_line ("" );
1774
+ dsdt_line (" If ((Arg0 == ToUUID ("
1775
+ "\"ea3b7bd8-e09b-4239-ad6e-ed525f3f26ab\")))" );
1776
+ dsdt_line (" {" );
1777
+ dsdt_line (" Return (0x14)" );
1778
+ dsdt_line (" }" );
1779
+ dsdt_line ("" );
1780
+ dsdt_line (" If ((Arg0 == ToUUID ("
1781
+ "\"8dbe2651-70c1-4c6f-ac87-a37cb46e4af6\")))" );
1782
+ dsdt_line (" {" );
1783
+ dsdt_line (" Return (0xFF)" );
1784
+ dsdt_line (" }" );
1785
+ dsdt_line ("" );
1786
+ dsdt_line (" If ((Arg0 == ToUUID ("
1787
+ "\"26257549-9271-4ca4-bb43-c4899d5a4881\")))" );
1788
+ dsdt_line (" {" );
1789
+ dsdt_line (" If (Arg2 == One)" );
1790
+ dsdt_line (" {" );
1791
+ dsdt_line (" Return (0x02)" );
1792
+ dsdt_line (" }" );
1793
+ dsdt_line (" If (Arg2 == 0x02)" );
1794
+ dsdt_line (" {" );
1795
+ dsdt_line (" Return (0x02001000)" );
1796
+ dsdt_line (" }" );
1797
+ dsdt_line (" If (Arg2 == 0x03)" );
1798
+ dsdt_line (" {" );
1799
+ dsdt_line (" Return (0x02000E01)" );
1800
+ dsdt_line (" }" );
1801
+ dsdt_line (" }" );
1802
+ dsdt_line (" Return (Zero)" );
1803
+ dsdt_line (" }" );
1804
+ dsdt_line (" }" );
1805
+ dsdt_line ("" );
1806
+
1807
+ dsdt_line ("}" );
1808
+ }
1809
+
1580
1810
static void
1581
1811
passthru_write_dsdt (struct pci_vdev * dev )
1582
1812
{
@@ -1600,6 +1830,9 @@ passthru_write_dsdt(struct pci_vdev *dev)
1600
1830
else if (device == 0x5a98 )
1601
1831
/* HDAS @ 00:e.0 */
1602
1832
write_dsdt_hdas (dev );
1833
+ else if (device == 0x5aac )
1834
+ /* i2c @ 00:16.0 for ipu */
1835
+ write_dsdt_ipu_i2c (dev );
1603
1836
1604
1837
}
1605
1838
0 commit comments