1 // SPDX-License-Identifier: GPL-2.0-only 2 /************************************************************************** 3 * Copyright (c) 2011, Intel Corporation. 4 * All Rights Reserved. 5 * 6 **************************************************************************/ 7 8 #include "psb_drv.h" 9 10 void gma_get_core_freq(struct drm_device *dev) 11 { 12 uint32_t clock; 13 struct pci_dev *pdev = to_pci_dev(dev->dev); 14 struct pci_dev *pci_root = 15 pci_get_domain_bus_and_slot(pci_domain_nr(pdev->bus), 16 0, 0); 17 struct drm_psb_private *dev_priv = dev->dev_private; 18 19 /*pci_write_config_dword(pci_root, 0xD4, 0x00C32004);*/ 20 /*pci_write_config_dword(pci_root, 0xD0, 0xE0033000);*/ 21 22 pci_write_config_dword(pci_root, 0xD0, 0xD0050300); 23 pci_read_config_dword(pci_root, 0xD4, &clock); 24 pci_dev_put(pci_root); 25 26 switch (clock & 0x07) { 27 case 0: 28 dev_priv->core_freq = 100; 29 break; 30 case 1: 31 dev_priv->core_freq = 133; 32 break; 33 case 2: 34 dev_priv->core_freq = 150; 35 break; 36 case 3: 37 dev_priv->core_freq = 178; 38 break; 39 case 4: 40 dev_priv->core_freq = 200; 41 break; 42 case 5: 43 case 6: 44 case 7: 45 dev_priv->core_freq = 266; 46 break; 47 default: 48 dev_priv->core_freq = 0; 49 } 50 } 51