Lines Matching full:isp
42 static int isp_v4_1_1_hw_init(struct amdgpu_isp *isp) in isp_v4_1_1_hw_init() argument
44 struct amdgpu_device *adev = isp->adev; in isp_v4_1_1_hw_init()
53 isp->isp_cell = kcalloc(3, sizeof(struct mfd_cell), GFP_KERNEL); in isp_v4_1_1_hw_init()
54 if (!isp->isp_cell) { in isp_v4_1_1_hw_init()
57 "%s: isp mfd cell alloc failed\n", __func__); in isp_v4_1_1_hw_init()
63 isp->isp_res = kcalloc(num_res, sizeof(struct resource), in isp_v4_1_1_hw_init()
65 if (!isp->isp_res) { in isp_v4_1_1_hw_init()
68 "%s: isp mfd res alloc failed\n", __func__); in isp_v4_1_1_hw_init()
72 isp->isp_pdata = kzalloc(sizeof(*isp->isp_pdata), GFP_KERNEL); in isp_v4_1_1_hw_init()
73 if (!isp->isp_pdata) { in isp_v4_1_1_hw_init()
76 "%s: isp platform data alloc failed\n", __func__); in isp_v4_1_1_hw_init()
80 /* initialize isp platform data */ in isp_v4_1_1_hw_init()
81 isp->isp_pdata->adev = (void *)adev; in isp_v4_1_1_hw_init()
82 isp->isp_pdata->asic_type = adev->asic_type; in isp_v4_1_1_hw_init()
83 isp->isp_pdata->base_rmmio_size = adev->rmmio_size; in isp_v4_1_1_hw_init()
85 isp->isp_res[0].name = "isp_4_1_1_reg"; in isp_v4_1_1_hw_init()
86 isp->isp_res[0].flags = IORESOURCE_MEM; in isp_v4_1_1_hw_init()
87 isp->isp_res[0].start = isp_base; in isp_v4_1_1_hw_init()
88 isp->isp_res[0].end = isp_base + ISP_REGS_OFFSET_END; in isp_v4_1_1_hw_init()
90 isp->isp_res[1].name = "isp_4_1_1_phy0_reg"; in isp_v4_1_1_hw_init()
91 isp->isp_res[1].flags = IORESOURCE_MEM; in isp_v4_1_1_hw_init()
92 isp->isp_res[1].start = isp_base + ISP411_PHY0_OFFSET; in isp_v4_1_1_hw_init()
93 isp->isp_res[1].end = isp_base + ISP411_PHY0_OFFSET + ISP411_PHY0_SIZE; in isp_v4_1_1_hw_init()
96 isp->isp_res[idx].name = "isp_4_1_1_irq"; in isp_v4_1_1_hw_init()
97 isp->isp_res[idx].flags = IORESOURCE_IRQ; in isp_v4_1_1_hw_init()
98 isp->isp_res[idx].start = in isp_v4_1_1_hw_init()
100 isp->isp_res[idx].end = in isp_v4_1_1_hw_init()
101 isp->isp_res[idx].start; in isp_v4_1_1_hw_init()
104 isp->isp_cell[0].name = "amd_isp_capture"; in isp_v4_1_1_hw_init()
105 isp->isp_cell[0].num_resources = num_res; in isp_v4_1_1_hw_init()
106 isp->isp_cell[0].resources = &isp->isp_res[0]; in isp_v4_1_1_hw_init()
107 isp->isp_cell[0].platform_data = isp->isp_pdata; in isp_v4_1_1_hw_init()
108 isp->isp_cell[0].pdata_size = sizeof(struct isp_platform_data); in isp_v4_1_1_hw_init()
110 /* initialize isp i2c platform data */ in isp_v4_1_1_hw_init()
111 isp->isp_i2c_res = kcalloc(1, sizeof(struct resource), GFP_KERNEL); in isp_v4_1_1_hw_init()
112 if (!isp->isp_i2c_res) { in isp_v4_1_1_hw_init()
115 "%s: isp mfd res alloc failed\n", __func__); in isp_v4_1_1_hw_init()
119 isp->isp_i2c_res[0].name = "isp_i2c0_reg"; in isp_v4_1_1_hw_init()
120 isp->isp_i2c_res[0].flags = IORESOURCE_MEM; in isp_v4_1_1_hw_init()
121 isp->isp_i2c_res[0].start = isp_base + ISP411_I2C0_OFFSET; in isp_v4_1_1_hw_init()
122 isp->isp_i2c_res[0].end = isp_base + ISP411_I2C0_OFFSET + ISP411_I2C0_SIZE; in isp_v4_1_1_hw_init()
124 isp->isp_cell[1].name = "amd_isp_i2c_designware"; in isp_v4_1_1_hw_init()
125 isp->isp_cell[1].num_resources = 1; in isp_v4_1_1_hw_init()
126 isp->isp_cell[1].resources = &isp->isp_i2c_res[0]; in isp_v4_1_1_hw_init()
127 isp->isp_cell[1].platform_data = isp->isp_pdata; in isp_v4_1_1_hw_init()
128 isp->isp_cell[1].pdata_size = sizeof(struct isp_platform_data); in isp_v4_1_1_hw_init()
130 /* initialize isp gpiochip platform data */ in isp_v4_1_1_hw_init()
131 isp->isp_gpio_res = kcalloc(1, sizeof(struct resource), GFP_KERNEL); in isp_v4_1_1_hw_init()
132 if (!isp->isp_gpio_res) { in isp_v4_1_1_hw_init()
135 "%s: isp gpio res alloc failed\n", __func__); in isp_v4_1_1_hw_init()
139 isp->isp_gpio_res[0].name = "isp_gpio_reg"; in isp_v4_1_1_hw_init()
140 isp->isp_gpio_res[0].flags = IORESOURCE_MEM; in isp_v4_1_1_hw_init()
141 isp->isp_gpio_res[0].start = isp_base + ISP411_GPIO_SENSOR_OFFSET; in isp_v4_1_1_hw_init()
142 isp->isp_gpio_res[0].end = isp_base + ISP411_GPIO_SENSOR_OFFSET + in isp_v4_1_1_hw_init()
145 isp->isp_cell[2].name = "amdisp-pinctrl"; in isp_v4_1_1_hw_init()
146 isp->isp_cell[2].num_resources = 1; in isp_v4_1_1_hw_init()
147 isp->isp_cell[2].resources = &isp->isp_gpio_res[0]; in isp_v4_1_1_hw_init()
148 isp->isp_cell[2].platform_data = isp->isp_pdata; in isp_v4_1_1_hw_init()
149 isp->isp_cell[2].pdata_size = sizeof(struct isp_platform_data); in isp_v4_1_1_hw_init()
151 r = mfd_add_hotplug_devices(isp->parent, isp->isp_cell, 3); in isp_v4_1_1_hw_init()
162 kfree(isp->isp_pdata); in isp_v4_1_1_hw_init()
163 kfree(isp->isp_res); in isp_v4_1_1_hw_init()
164 kfree(isp->isp_cell); in isp_v4_1_1_hw_init()
165 kfree(isp->isp_i2c_res); in isp_v4_1_1_hw_init()
166 kfree(isp->isp_gpio_res); in isp_v4_1_1_hw_init()
171 static int isp_v4_1_1_hw_fini(struct amdgpu_isp *isp) in isp_v4_1_1_hw_fini() argument
173 mfd_remove_devices(isp->parent); in isp_v4_1_1_hw_fini()
175 kfree(isp->isp_res); in isp_v4_1_1_hw_fini()
176 kfree(isp->isp_cell); in isp_v4_1_1_hw_fini()
177 kfree(isp->isp_pdata); in isp_v4_1_1_hw_fini()
178 kfree(isp->isp_i2c_res); in isp_v4_1_1_hw_fini()
179 kfree(isp->isp_gpio_res); in isp_v4_1_1_hw_fini()
189 void isp_v4_1_1_set_isp_funcs(struct amdgpu_isp *isp) in isp_v4_1_1_set_isp_funcs() argument
191 isp->funcs = &isp_v4_1_1_funcs; in isp_v4_1_1_set_isp_funcs()