/*
* Copyright ( c ) 2014 , NVIDIA CORPORATION . All rights reserved .
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING
* FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE .
*/
#include "nouveau_platform.h"
static int nouveau_platform_probe(struct platform_device *pdev)
{
const struct nvkm_device_tegra_func *func;
struct nvkm_device *device = NULL;
struct drm_device *drm;
func = of_device_get_match_data(&pdev->dev);
drm = nouveau_platform_device_create(func, pdev, &device);
if (IS_ERR(drm))
return PTR_ERR(drm);
return 0 ;
}
static void nouveau_platform_remove(struct platform_device *pdev)
{
struct nouveau_drm *drm = platform_get_drvdata(pdev);
nouveau_drm_device_remove(drm);
}
#if IS_ENABLED(CONFIG_OF)
static const struct nvkm_device_tegra_func gk20a_platform_data = {
.iommu_bit = 34 ,
.require_vdd = true ,
};
static const struct nvkm_device_tegra_func gm20b_platform_data = {
.iommu_bit = 34 ,
.require_vdd = true ,
.require_ref_clk = true ,
};
static const struct nvkm_device_tegra_func gp10b_platform_data = {
.iommu_bit = 36 ,
/* power provided by generic PM domains */
.require_vdd = false ,
};
static const struct of_device_id nouveau_platform_match[] = {
{
.compatible = "nvidia,gk20a" ,
.data = &gk20a_platform_data,
},
{
.compatible = "nvidia,gm20b" ,
.data = &gm20b_platform_data,
},
{
.compatible = "nvidia,gp10b" ,
.data = &gp10b_platform_data,
},
{ }
};
MODULE_DEVICE_TABLE(of, nouveau_platform_match);
#endif
struct platform_driver nouveau_platform_driver = {
.driver = {
.name = "nouveau" ,
.of_match_table = of_match_ptr(nouveau_platform_match),
},
.probe = nouveau_platform_probe,
.remove = nouveau_platform_remove,
};
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.7 Sekunden
(vorverarbeitet am 2026-10-02)
¤
*© Formatika GbR, Deutschland