/** * smd_tty_log_init()- Init function for IPC logging * * Initialize the buffer that is used to provide the log information * pertaining to the smd_tty module. */ static void smd_tty_log_init(void) { smd_tty_log_ctx = ipc_log_context_create(SMD_TTY_LOG_PAGES, "smd_tty"); if (!smd_tty_log_ctx) pr_err("%s: Unable to create IPC log", __func__); }
static int __init rmnet_mhi_init(void) { int i; enum MHI_STATUS res = MHI_STATUS_SUCCESS; struct rmnet_mhi_private *rmnet_mhi_ptr = 0; rmnet_ipc_log = ipc_log_context_create(RMNET_IPC_LOG_PAGES, "mhi_rmnet", 0); for (i = 0; i < MHI_RMNET_DEVICE_COUNT; i++) { rmnet_mhi_ptr = &rmnet_mhi_ctxt_list[i]; rmnet_mhi_ptr->tx_channel = MHI_CLIENT_IP_HW_0_OUT + (enum MHI_CLIENT_CHANNEL)(i * 2); rmnet_mhi_ptr->rx_channel = MHI_CLIENT_IP_HW_0_IN + (enum MHI_CLIENT_CHANNEL)((i * 2)); rmnet_mhi_ptr->tx_client_handle = 0; rmnet_mhi_ptr->rx_client_handle = 0; rwlock_init(&rmnet_mhi_ptr->out_chan_full_lock); rmnet_mhi_ptr->mru = MHI_DEFAULT_MRU; rmnet_mhi_ptr->dev_index = i; res = mhi_register_channel( &(rmnet_mhi_ptr->tx_client_handle), rmnet_mhi_ptr->tx_channel, 0, &rmnet_mhi_info, rmnet_mhi_ptr); if (MHI_STATUS_SUCCESS != res) { rmnet_mhi_ptr->tx_client_handle = 0; rmnet_log(MSG_CRITICAL, "mhi_register_channel failed chan %d ret %d\n", rmnet_mhi_ptr->tx_channel, res); } res = mhi_register_channel( &(rmnet_mhi_ptr->rx_client_handle), rmnet_mhi_ptr->rx_channel, 0, &rmnet_mhi_info, rmnet_mhi_ptr); if (MHI_STATUS_SUCCESS != res) { rmnet_mhi_ptr->rx_client_handle = 0; rmnet_log(MSG_CRITICAL, "mhi_register_channel failed chan %d, ret %d\n", rmnet_mhi_ptr->rx_channel, res); } } return 0; }
static int probe(struct platform_device *pdev) { struct spdm_data *data = 0; int ret = -EINVAL; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->action = SPDM_DOWN; platform_set_drvdata(pdev, data); ret = populate_spdm_data(data, pdev); if (ret) goto bad_of; data->bus_scale_client_id = msm_bus_scale_register_client(data->pdata); if (!data->bus_scale_client_id) { ret = -EINVAL; goto no_bus_scaling; } data->cci_clk = clk_get(&pdev->dev, "cci_clk"); if (IS_ERR(data->cci_clk)) { ret = PTR_ERR(data->cci_clk); goto no_clock; } data->profile = devm_kzalloc(&pdev->dev, sizeof(*(data->profile)), GFP_KERNEL); if (!data->profile) { ret = -ENOMEM; goto no_profile; } data->profile->target = change_bw; data->profile->get_dev_status = get_dev_status; data->profile->get_cur_freq = get_cur_bw; data->profile->polling_ms = data->window; data->devfreq = devfreq_add_device(&pdev->dev, data->profile, "spdm_bw_hyp", data); if (IS_ERR(data->devfreq)) { ret = PTR_ERR(data->devfreq); goto no_spdm_device; } spdm_init_debugfs(&pdev->dev); spdm_ipc_log_ctxt = ipc_log_context_create(SPDM_IPC_LOG_PAGES, "devfreq_spdm", 0); if (IS_ERR_OR_NULL(spdm_ipc_log_ctxt)) { pr_err("%s: Failed to create IPC log context\n", __func__); spdm_ipc_log_ctxt = NULL; } return 0; no_spdm_device: devm_kfree(&pdev->dev, data->profile); no_profile: no_clock: msm_bus_scale_unregister_client(data->bus_scale_client_id); no_bus_scaling: devm_kfree(&pdev->dev, data->config_data.ports); bad_of: devm_kfree(&pdev->dev, data); platform_set_drvdata(pdev, NULL); return ret; }