Lines Matching refs:spics

65 	struct spear_spics *spics = gpiochip_get_data(chip);
69 tmp = readl_relaxed(spics->base + spics->perip_cfg);
70 if (spics->last_off != offset) {
71 spics->last_off = offset;
72 tmp &= ~(spics->cs_enable_mask << spics->cs_enable_shift);
73 tmp |= offset << spics->cs_enable_shift;
77 tmp &= ~(0x1 << spics->cs_value_bit);
78 tmp |= value << spics->cs_value_bit;
79 writel_relaxed(tmp, spics->base + spics->perip_cfg);
96 struct spear_spics *spics = gpiochip_get_data(chip);
99 if (!spics->use_count++) {
100 tmp = readl_relaxed(spics->base + spics->perip_cfg);
101 tmp |= 0x1 << spics->sw_enable_bit;
102 tmp |= 0x1 << spics->cs_value_bit;
103 writel_relaxed(tmp, spics->base + spics->perip_cfg);
111 struct spear_spics *spics = gpiochip_get_data(chip);
114 if (!--spics->use_count) {
115 tmp = readl_relaxed(spics->base + spics->perip_cfg);
116 tmp &= ~(0x1 << spics->sw_enable_bit);
117 writel_relaxed(tmp, spics->base + spics->perip_cfg);
124 struct spear_spics *spics;
127 spics = devm_kzalloc(&pdev->dev, sizeof(*spics), GFP_KERNEL);
128 if (!spics)
131 spics->base = devm_platform_ioremap_resource(pdev, 0);
132 if (IS_ERR(spics->base))
133 return PTR_ERR(spics->base);
135 if (of_property_read_u32(np, "st-spics,peripcfg-reg",
136 &spics->perip_cfg))
138 if (of_property_read_u32(np, "st-spics,sw-enable-bit",
139 &spics->sw_enable_bit))
141 if (of_property_read_u32(np, "st-spics,cs-value-bit",
142 &spics->cs_value_bit))
144 if (of_property_read_u32(np, "st-spics,cs-enable-mask",
145 &spics->cs_enable_mask))
147 if (of_property_read_u32(np, "st-spics,cs-enable-shift",
148 &spics->cs_enable_shift))
151 platform_set_drvdata(pdev, spics);
153 spics->chip.ngpio = NUM_OF_GPIO;
154 spics->chip.base = -1;
155 spics->chip.request = spics_request;
156 spics->chip.free = spics_free;
157 spics->chip.direction_input = spics_direction_input;
158 spics->chip.direction_output = spics_direction_output;
159 spics->chip.get = spics_get_value;
160 spics->chip.set = spics_set_value;
161 spics->chip.label = dev_name(&pdev->dev);
162 spics->chip.parent = &pdev->dev;
163 spics->chip.owner = THIS_MODULE;
164 spics->last_off = -1;
166 ret = devm_gpiochip_add_data(&pdev->dev, &spics->chip, spics);
172 dev_info(&pdev->dev, "spear spics registered\n");
181 { .compatible = "st,spear-spics-gpio" },
188 .name = "spear-spics-gpio",