コード例 #1
0
static int anx7816_parse_dt(
    struct device *dev, struct anx7816_platform_data *pdata)
{
    int rc = 0;
    struct device_node *np = dev->of_node;

    pdata->gpio_p_dwn = of_get_named_gpio_flags(
                            np, "anx7808-pdown-gpio", 0, NULL);

    pdata->gpio_reset = of_get_named_gpio_flags(
                            np, "anx7808-reset-gpio", 0, NULL);

    pdata->gpio_cbl_det = of_get_named_gpio_flags(
                              np, "anx7808-cbl-gpio", 0, NULL);
    pr_info(KERN_INFO
            "%s gpio p_dwn : %d, reset : %d,  gpio_cbl_det %d\n",
            LOG_TAG, pdata->gpio_p_dwn,
            pdata->gpio_reset,
            pdata->gpio_cbl_det);
    /*
     * if "external-ldo-control" property is not exist, we
     * assume that it is used in board.
     * if don't use external ldo control,
     * please use "external-ldo-control=<0>" in dtsi
     */
    rc = of_property_read_u32(np, "analogix,external-ldo-control",
                              &pdata->external_ldo_control);
    if (rc == -EINVAL)
        pdata->external_ldo_control = 1;

    if (pdata->external_ldo_control) {
        pdata->gpio_v10_ctrl = of_get_named_gpio_flags(
                                   np, "anx7808-v10-gpio", 0, NULL);
        pr_info(KERN_INFO "%s gpio_v10_ctrl %d avdd33-en-gpio %d\n",
                LOG_TAG, pdata->gpio_v10_ctrl, pdata->gpio_v33_ctrl);
    }
    if (anx7816_regulator_configure(dev, pdata) < 0) {
        pr_err("%s %s: parsing dt for anx7816 is failed.\n",
               LOG_TAG, __func__);
        return rc;
    }

    /* connects function nodes which are not provided with dts */
    pdata->avdd_power = slimport7816_avdd_power;
    pdata->dvdd_power = slimport7816_dvdd_power;

    return 0;
}
コード例 #2
0
static int anx7816_parse_dt(
	struct device *dev, struct anx7816_platform_data *pdata)
{
	int rc = 0;
	struct device_node *np = dev->of_node;
#ifdef CONFIG_SLIMPORT_DYNAMIC_HPD
	struct platform_device *sp_pdev = NULL;
	struct device_node *sp_tx_node = NULL;
#endif
	pdata->gpio_p_dwn = of_get_named_gpio_flags(
		np, "analogix,p-dwn-gpio", 0, NULL);

	pdata->gpio_reset = of_get_named_gpio_flags(
		np, "analogix,reset-gpio", 0, NULL);

	pdata->gpio_int = of_get_named_gpio_flags(
		np, "analogix,irq-gpio", 0, NULL);

	pdata->gpio_cbl_det = of_get_named_gpio_flags(
		np, "analogix,cbl-det-gpio", 0, NULL);

	printk(KERN_INFO
			"%s gpio p_dwn : %d, reset : %d, irq : %d, gpio_cbl_det %d\n",
			LOG_TAG, pdata->gpio_p_dwn,
			pdata->gpio_reset,
			pdata->gpio_int,
			pdata->gpio_cbl_det);
	/*
	 * if "lge,external-ldo-control" property is not exist, we
	 * assume that it is used in board.
	 * lgps11 don't use external ldo control,
	 * please use "lge,external-ldo-control=<0>" in dtsi
	 */
	rc = of_property_read_u32(np, "lge,external-ldo-control",
		&pdata->external_ldo_control);
	if (rc == -EINVAL)
		pdata->external_ldo_control = 1;

	if (pdata->external_ldo_control) {
		pdata->gpio_v10_ctrl = of_get_named_gpio_flags(
			np, "analogix,v10-ctrl-gpio", 0, NULL);

		pdata->gpio_v33_ctrl = of_get_named_gpio_flags(
			np, "analogix,v33-ctrl-gpio", 0, NULL);

	printk(KERN_INFO "%s gpio_v10_ctrl %d avdd33-en-gpio %d\n",
		LOG_TAG, pdata->gpio_v10_ctrl, pdata->gpio_v33_ctrl);
	}
#ifdef CONFIG_SLIMPORT_DYNAMIC_HPD
	/* parse phandle for hdmi tx */
	sp_tx_node = of_parse_phandle(np, "qcom,hdmi-tx-map", 0);
	if (!sp_tx_node) {
		pr_err("%s %s: can't find hdmi phandle\n", LOG_TAG, __func__);
		return -ENODEV;
	}

	sp_pdev = of_find_device_by_node(sp_tx_node);
	if (!sp_pdev) {
		pr_err("%s %s: can't find the device by node\n",
				LOG_TAG, __func__);
		return -ENODEV;
	}
	pr_info("%s %s : sp_pdev [0X%x] to pdata->pdev\n",
	       LOG_TAG, __func__, (unsigned int)sp_pdev);

	pdata->hdmi_pdev = sp_pdev;
#endif
	if (anx7816_regulator_configure(dev, pdata) < 0) {
		pr_err("%s %s: parsing dt for anx7816 is failed.\n",
				LOG_TAG, __func__);
		return rc;
	}

	/* connects function nodes which are not provided with dts */
	pdata->avdd_power = slimport7816_avdd_power;
	pdata->dvdd_power = slimport7816_dvdd_power;

#ifdef USE_HDMI_SWITCH
	hdmi_switch_gpio = of_get_named_gpio_flags(
		np, "analogix,hdmi-switch-gpio", 0, NULL);
	printk(KERN_INFO "%s hdmi_switch_gpio : %d \n",
		   LOG_TAG, hdmi_switch_gpio);
#endif
	return 0;
}
コード例 #3
0
static int anx7816_parse_dt(
	struct device *dev, struct anx7816_platform_data *pdata, struct anx7816_data *anx7816)
{
	int rc = 0;
	struct device_node *np = dev->of_node;
	struct platform_device *hdmi_pdev = NULL; // slimport changes
	struct device_node *hdmi_tx_node = NULL; // slimport changes

	pdata->gpio_p_dwn = of_get_named_gpio_flags(
		np, "analogix,p-dwn-gpio", 0, NULL);

	pdata->gpio_reset = of_get_named_gpio_flags(
		np, "analogix,reset-gpio", 0, NULL);

	pdata->gpio_cbl_det = of_get_named_gpio_flags(
		np, "analogix,cbl-det-gpio", 0, NULL);

	printk(KERN_INFO
			"%s gpio p_dwn : %d, reset : %d,  gpio_cbl_det %d\n",
			LOG_TAG, pdata->gpio_p_dwn,
			pdata->gpio_reset,
			pdata->gpio_cbl_det);
	/*
	 * if "external-ldo-control" property is not exist, we
	 * assume that it is used in board.
	 * if don't use external ldo control,
	 * please use "external-ldo-control=<0>" in dtsi
	 */
	rc = of_property_read_u32(np, "analogix,external-ldo-control",
		&pdata->external_ldo_control);
	if (rc == -EINVAL)
		pdata->external_ldo_control = 1;

	if (pdata->external_ldo_control) {
		pdata->gpio_v10_ctrl = of_get_named_gpio_flags(
			np, "analogix,v10-ctrl-gpio", 0, NULL);

		pdata->gpio_v33_ctrl = of_get_named_gpio_flags(
			np, "analogix,v33-ctrl-gpio", 0, NULL);

	printk(KERN_INFO "%s gpio_v10_ctrl %d avdd33-en-gpio %d\n",
		LOG_TAG, pdata->gpio_v10_ctrl, pdata->gpio_v33_ctrl);
	}

	if (anx7816_regulator_configure(dev, pdata) < 0) {
		pr_err("%s %s: parsing dt for anx7816 is failed.\n",
				LOG_TAG, __func__);
		return rc;
	}

	/* connects function nodes which are not provided with dts */
//	pdata->avdd_power = slimport7816_avdd_power;
//	pdata->dvdd_power = slimport7816_dvdd_power; // Slimport changes
	/* parse phandle for hdmi tx handle */
        hdmi_tx_node = of_parse_phandle(np, "analogix,hdmi-tx-map", 0);
        if (!hdmi_tx_node) {
                pr_err("can't find hdmi phandle\n");
                rc = -EINVAL;
                return rc;
        }

        hdmi_pdev = of_find_device_by_node(hdmi_tx_node);
        if (!hdmi_pdev) {
                pr_err("can't find the deivce by node\n");
                rc = -EINVAL;
                return rc;
        }
        anx7816->hdmi_pdev = hdmi_pdev;

	return 0;
}